@iota/kiosk 0.1.1 → 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.
Files changed (86) hide show
  1. package/CHANGELOG.md +21 -0
  2. package/README.md +2 -2
  3. package/dist/cjs/bcs.d.ts +38 -2
  4. package/dist/cjs/bcs.js +20 -18
  5. package/dist/cjs/bcs.js.map +2 -2
  6. package/dist/cjs/client/kiosk-client.d.ts +4 -2
  7. package/dist/cjs/client/kiosk-client.js +10 -5
  8. package/dist/cjs/client/kiosk-client.js.map +2 -2
  9. package/dist/cjs/client/kiosk-transaction.d.ts +11 -10
  10. package/dist/cjs/client/kiosk-transaction.js +102 -140
  11. package/dist/cjs/client/kiosk-transaction.js.map +2 -2
  12. package/dist/cjs/client/tp-transaction.d.ts +8 -6
  13. package/dist/cjs/client/tp-transaction.js +54 -65
  14. package/dist/cjs/client/tp-transaction.js.map +2 -2
  15. package/dist/cjs/constants.js.map +1 -1
  16. package/dist/cjs/query/kiosk.js +2 -4
  17. package/dist/cjs/query/kiosk.js.map +1 -1
  18. package/dist/cjs/query/transfer-policy.d.ts +1 -0
  19. package/dist/cjs/query/transfer-policy.js +5 -7
  20. package/dist/cjs/query/transfer-policy.js.map +3 -3
  21. package/dist/cjs/tx/kiosk.d.ts +14 -14
  22. package/dist/cjs/tx/kiosk.js.map +2 -2
  23. package/dist/cjs/tx/personal-kiosk.d.ts +3 -3
  24. package/dist/cjs/tx/personal-kiosk.js.map +2 -2
  25. package/dist/cjs/tx/rules/attach.d.ts +5 -5
  26. package/dist/cjs/tx/rules/attach.js.map +2 -2
  27. package/dist/cjs/tx/rules/resolve.js +18 -20
  28. package/dist/cjs/tx/rules/resolve.js.map +2 -2
  29. package/dist/cjs/tx/transfer-policy.d.ts +7 -7
  30. package/dist/cjs/tx/transfer-policy.js.map +2 -2
  31. package/dist/cjs/types/kiosk.d.ts +0 -1
  32. package/dist/cjs/types/kiosk.js.map +2 -2
  33. package/dist/cjs/types/transfer-policy.d.ts +4 -2
  34. package/dist/cjs/types/transfer-policy.js.map +2 -2
  35. package/dist/cjs/utils.js +4 -7
  36. package/dist/cjs/utils.js.map +2 -2
  37. package/dist/esm/bcs.d.ts +38 -2
  38. package/dist/esm/bcs.js +20 -18
  39. package/dist/esm/bcs.js.map +2 -2
  40. package/dist/esm/client/kiosk-client.d.ts +4 -2
  41. package/dist/esm/client/kiosk-client.js +10 -5
  42. package/dist/esm/client/kiosk-client.js.map +2 -2
  43. package/dist/esm/client/kiosk-transaction.d.ts +11 -10
  44. package/dist/esm/client/kiosk-transaction.js +101 -139
  45. package/dist/esm/client/kiosk-transaction.js.map +2 -2
  46. package/dist/esm/client/tp-transaction.d.ts +8 -6
  47. package/dist/esm/client/tp-transaction.js +53 -64
  48. package/dist/esm/client/tp-transaction.js.map +2 -2
  49. package/dist/esm/constants.js.map +1 -1
  50. package/dist/esm/query/kiosk.js +2 -4
  51. package/dist/esm/query/kiosk.js.map +1 -1
  52. package/dist/esm/query/transfer-policy.d.ts +1 -0
  53. package/dist/esm/query/transfer-policy.js +7 -9
  54. package/dist/esm/query/transfer-policy.js.map +2 -2
  55. package/dist/esm/tx/kiosk.d.ts +14 -14
  56. package/dist/esm/tx/kiosk.js.map +2 -2
  57. package/dist/esm/tx/personal-kiosk.d.ts +3 -3
  58. package/dist/esm/tx/personal-kiosk.js.map +2 -2
  59. package/dist/esm/tx/rules/attach.d.ts +5 -5
  60. package/dist/esm/tx/rules/attach.js.map +2 -2
  61. package/dist/esm/tx/rules/resolve.js +18 -20
  62. package/dist/esm/tx/rules/resolve.js.map +2 -2
  63. package/dist/esm/tx/transfer-policy.d.ts +7 -7
  64. package/dist/esm/tx/transfer-policy.js.map +2 -2
  65. package/dist/esm/types/kiosk.d.ts +0 -1
  66. package/dist/esm/types/kiosk.js.map +2 -2
  67. package/dist/esm/types/transfer-policy.d.ts +4 -2
  68. package/dist/esm/types/transfer-policy.js.map +2 -2
  69. package/dist/esm/utils.js +12 -10
  70. package/dist/esm/utils.js.map +2 -2
  71. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  72. package/dist/tsconfig.tsbuildinfo +1 -1
  73. package/package.json +12 -11
  74. package/src/bcs.ts +16 -19
  75. package/src/client/kiosk-client.ts +15 -5
  76. package/src/client/kiosk-transaction.ts +52 -56
  77. package/src/client/tp-transaction.ts +31 -28
  78. package/src/query/transfer-policy.ts +5 -3
  79. package/src/tx/kiosk.ts +14 -14
  80. package/src/tx/personal-kiosk.ts +3 -3
  81. package/src/tx/rules/attach.ts +5 -5
  82. package/src/tx/rules/resolve.ts +16 -16
  83. package/src/tx/transfer-policy.ts +7 -7
  84. package/src/types/kiosk.ts +0 -1
  85. package/src/types/transfer-policy.ts +4 -2
  86. package/src/utils.ts +10 -5
@@ -1,4 +1,4 @@
1
- import type { TransactionBlock } from '@iota/iota-sdk/transactions';
1
+ import type { Transaction } from '@iota/iota-sdk/transactions';
2
2
  import type { ObjectArgument, TransferPolicyCap } from '../types/index.js';
3
3
  import type { KioskClient } from './kiosk-client.js';
4
4
  export type TransferPolicyBaseParams = {
@@ -8,17 +8,19 @@ export type TransferPolicyBaseParams = {
8
8
  };
9
9
  export type TransferPolicyTransactionParams = {
10
10
  kioskClient: KioskClient;
11
- transactionBlock: TransactionBlock;
11
+ transaction: Transaction;
12
+ /** @deprecated use transaction instead */
13
+ transactionBlock?: Transaction;
12
14
  cap?: TransferPolicyCap;
13
15
  };
14
16
  export declare class TransferPolicyTransaction {
15
17
  #private;
16
- transactionBlock: TransactionBlock;
18
+ transaction: Transaction;
17
19
  kioskClient: KioskClient;
18
20
  policy?: ObjectArgument;
19
21
  policyCap?: ObjectArgument;
20
22
  type?: string;
21
- constructor({ kioskClient, transactionBlock, cap }: TransferPolicyTransactionParams);
23
+ constructor({ kioskClient, transactionBlock, transaction, cap, }: TransferPolicyTransactionParams);
22
24
  /**
23
25
  * A function to create a new transfer policy.
24
26
  * Checks if there's already an existing transfer policy to prevent
@@ -70,7 +72,7 @@ export declare class TransferPolicyTransaction {
70
72
  * (but you should define at least one of them for the rule to make sense).
71
73
  *
72
74
  * @param percentageBps The royalty percentage in basis points. Use `percentageToBasisPoints` helper to convert from percentage [0,100].
73
- * @param minAmount The minimum royalty amount per request in nano.
75
+ * @param minAmount The minimum royalty amount per request in NANOS.
74
76
  */
75
77
  addRoyaltyRule(percentageBps: number | string, // this is in basis points.
76
78
  minAmount: number | string): this;
@@ -85,7 +87,7 @@ export declare class TransferPolicyTransaction {
85
87
  addPersonalKioskRule(): this;
86
88
  /**
87
89
  * A function to add the floor price rule to a transfer policy.
88
- * @param minPrice The minimum price in nano.
90
+ * @param minPrice The minimum price in NANOS.
89
91
  */
90
92
  addFloorPriceRule(minPrice: string | bigint): this;
91
93
  /**
@@ -3,6 +3,9 @@ var __defProp = Object.defineProperty;
3
3
  var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
4
  var __getOwnPropNames = Object.getOwnPropertyNames;
5
5
  var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
6
9
  var __export = (target, all) => {
7
10
  for (var name in all)
8
11
  __defProp(target, name, { get: all[name], enumerable: true });
@@ -16,19 +19,9 @@ var __copyProps = (to, from, except, desc) => {
16
19
  return to;
17
20
  };
18
21
  var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
- var __accessCheck = (obj, member, msg) => {
20
- if (!member.has(obj))
21
- throw TypeError("Cannot " + msg);
22
- };
23
- var __privateAdd = (obj, member, value) => {
24
- if (member.has(obj))
25
- throw TypeError("Cannot add the same private member more than once");
26
- member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
27
- };
28
- var __privateMethod = (obj, member, method) => {
29
- __accessCheck(obj, member, "access private method");
30
- return method;
31
- };
22
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
24
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
32
25
  var tp_transaction_exports = {};
33
26
  __export(tp_transaction_exports, {
34
27
  TransferPolicyTransaction: () => TransferPolicyTransaction
@@ -36,19 +29,18 @@ __export(tp_transaction_exports, {
36
29
  module.exports = __toCommonJS(tp_transaction_exports);
37
30
  var import_attach = require("../tx/rules/attach.js");
38
31
  var import_transfer_policy = require("../tx/transfer-policy.js");
39
- var _validateInputs, validateInputs_fn, _setup, setup_fn;
32
+ var _TransferPolicyTransaction_instances, validateInputs_fn, setup_fn;
40
33
  class TransferPolicyTransaction {
41
- constructor({ kioskClient, transactionBlock, cap }) {
42
- // Internal function that that the policy's Id + Cap + type have been set.
43
- __privateAdd(this, _validateInputs);
44
- /**
45
- * Setup the state of the TransferPolicyTransaction.
46
- */
47
- __privateAdd(this, _setup);
34
+ constructor({
35
+ kioskClient,
36
+ transactionBlock,
37
+ transaction = transactionBlock,
38
+ cap
39
+ }) {
40
+ __privateAdd(this, _TransferPolicyTransaction_instances);
48
41
  this.kioskClient = kioskClient;
49
- this.transactionBlock = transactionBlock;
50
- if (cap)
51
- this.setCap(cap);
42
+ this.transaction = transaction;
43
+ if (cap) this.setCap(cap);
52
44
  }
53
45
  /**
54
46
  * A function to create a new transfer policy.
@@ -73,8 +65,8 @@ class TransferPolicyTransaction {
73
65
  if (policies.length > 0)
74
66
  throw new Error("There's already transfer policy for this Type.");
75
67
  }
76
- const cap = (0, import_transfer_policy.createTransferPolicy)(this.transactionBlock, type, publisher);
77
- this.transactionBlock.transferObjects([cap], this.transactionBlock.pure.address(address));
68
+ const cap = (0, import_transfer_policy.createTransferPolicy)(this.transaction, type, publisher);
69
+ this.transaction.transferObjects([cap], this.transaction.pure.address(address));
78
70
  }
79
71
  /**
80
72
  * A convenient function to create a Transfer Policy and attach some rules
@@ -95,11 +87,11 @@ class TransferPolicyTransaction {
95
87
  throw new Error("There's already transfer policy for this Type.");
96
88
  }
97
89
  const [policy, policyCap] = (0, import_transfer_policy.createTransferPolicyWithoutSharing)(
98
- this.transactionBlock,
90
+ this.transaction,
99
91
  type,
100
92
  publisher
101
93
  );
102
- __privateMethod(this, _setup, setup_fn).call(this, policy, policyCap, type);
94
+ __privateMethod(this, _TransferPolicyTransaction_instances, setup_fn).call(this, policy, policyCap, type);
103
95
  return this;
104
96
  }
105
97
  /**
@@ -113,14 +105,10 @@ class TransferPolicyTransaction {
113
105
  throw new Error(
114
106
  "This function can only be called after `transferPolicyManager.create`"
115
107
  );
116
- (0, import_transfer_policy.shareTransferPolicy)(
117
- this.transactionBlock,
118
- this.type,
119
- this.policy
120
- );
121
- this.transactionBlock.transferObjects(
108
+ (0, import_transfer_policy.shareTransferPolicy)(this.transaction, this.type, this.policy);
109
+ this.transaction.transferObjects(
122
110
  [this.policyCap],
123
- this.transactionBlock.pure.address(address)
111
+ this.transaction.pure.address(address)
124
112
  );
125
113
  }
126
114
  /**
@@ -129,7 +117,7 @@ class TransferPolicyTransaction {
129
117
  * @param policyCapId The `TransferPolicyCap`
130
118
  */
131
119
  setCap({ policyId, policyCapId, type }) {
132
- return __privateMethod(this, _setup, setup_fn).call(this, policyId, policyCapId, type);
120
+ return __privateMethod(this, _TransferPolicyTransaction_instances, setup_fn).call(this, policyId, policyCapId, type);
133
121
  }
134
122
  /**
135
123
  * Withdraw from the transfer policy's profits.
@@ -137,15 +125,15 @@ class TransferPolicyTransaction {
137
125
  * @param amount (Optional) amount parameter. Will withdraw all profits if the amount is not specified.
138
126
  */
139
127
  withdraw(address, amount) {
140
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
128
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
141
129
  const coin = (0, import_transfer_policy.withdrawFromPolicy)(
142
- this.transactionBlock,
130
+ this.transaction,
143
131
  this.type,
144
132
  this.policy,
145
133
  this.policyCap,
146
134
  amount
147
135
  );
148
- this.transactionBlock.transferObjects([coin], this.transactionBlock.pure.address(address));
136
+ this.transaction.transferObjects([coin], this.transaction.pure.address(address));
149
137
  return this;
150
138
  }
151
139
  /**
@@ -156,12 +144,12 @@ class TransferPolicyTransaction {
156
144
  * (but you should define at least one of them for the rule to make sense).
157
145
  *
158
146
  * @param percentageBps The royalty percentage in basis points. Use `percentageToBasisPoints` helper to convert from percentage [0,100].
159
- * @param minAmount The minimum royalty amount per request in nano.
147
+ * @param minAmount The minimum royalty amount per request in NANOS.
160
148
  */
161
149
  addRoyaltyRule(percentageBps, minAmount) {
162
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
150
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
163
151
  (0, import_attach.attachRoyaltyRuleTx)(
164
- this.transactionBlock,
152
+ this.transaction,
165
153
  this.type,
166
154
  this.policy,
167
155
  this.policyCap,
@@ -176,9 +164,9 @@ class TransferPolicyTransaction {
176
164
  * This Rule forces buyer to lock the item in the kiosk, preserving strong royalties.
177
165
  */
178
166
  addLockRule() {
179
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
167
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
180
168
  (0, import_attach.attachKioskLockRuleTx)(
181
- this.transactionBlock,
169
+ this.transaction,
182
170
  this.type,
183
171
  this.policy,
184
172
  this.policyCap,
@@ -190,9 +178,9 @@ class TransferPolicyTransaction {
190
178
  * Attaches the Personal Kiosk Rule, making a purchase valid only for `SoulBound` kiosks.
191
179
  */
192
180
  addPersonalKioskRule() {
193
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
181
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
194
182
  (0, import_attach.attachPersonalKioskRuleTx)(
195
- this.transactionBlock,
183
+ this.transaction,
196
184
  this.type,
197
185
  this.policy,
198
186
  this.policyCap,
@@ -202,12 +190,12 @@ class TransferPolicyTransaction {
202
190
  }
203
191
  /**
204
192
  * A function to add the floor price rule to a transfer policy.
205
- * @param minPrice The minimum price in nano.
193
+ * @param minPrice The minimum price in NANOS.
206
194
  */
207
195
  addFloorPriceRule(minPrice) {
208
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
196
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
209
197
  (0, import_attach.attachFloorPriceRuleTx)(
210
- this.transactionBlock,
198
+ this.transaction,
211
199
  this.type,
212
200
  this.policy,
213
201
  this.policyCap,
@@ -222,9 +210,9 @@ class TransferPolicyTransaction {
222
210
  * @param configType The Config Type
223
211
  */
224
212
  removeRule({ ruleType, configType }) {
225
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
213
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
226
214
  (0, import_transfer_policy.removeTransferPolicyRule)(
227
- this.transactionBlock,
215
+ this.transaction,
228
216
  this.type,
229
217
  ruleType,
230
218
  configType,
@@ -236,10 +224,10 @@ class TransferPolicyTransaction {
236
224
  * Removes the lock rule.
237
225
  */
238
226
  removeLockRule() {
239
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
227
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
240
228
  const packageId = this.kioskClient.getRulePackageId("kioskLockRulePackageId");
241
229
  (0, import_transfer_policy.removeTransferPolicyRule)(
242
- this.transactionBlock,
230
+ this.transaction,
243
231
  this.type,
244
232
  `${packageId}::kiosk_lock_rule::Rule`,
245
233
  `${packageId}::kiosk_lock_rule::Config`,
@@ -252,10 +240,10 @@ class TransferPolicyTransaction {
252
240
  * Removes the Royalty rule
253
241
  */
254
242
  removeRoyaltyRule() {
255
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
243
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
256
244
  const packageId = this.kioskClient.getRulePackageId("royaltyRulePackageId");
257
245
  (0, import_transfer_policy.removeTransferPolicyRule)(
258
- this.transactionBlock,
246
+ this.transaction,
259
247
  this.type,
260
248
  `${packageId}::royalty_rule::Rule`,
261
249
  `${packageId}::royalty_rule::Config`,
@@ -265,10 +253,10 @@ class TransferPolicyTransaction {
265
253
  return this;
266
254
  }
267
255
  removePersonalKioskRule() {
268
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
256
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
269
257
  const packageId = this.kioskClient.getRulePackageId("personalKioskRulePackageId");
270
258
  (0, import_transfer_policy.removeTransferPolicyRule)(
271
- this.transactionBlock,
259
+ this.transaction,
272
260
  this.type,
273
261
  `${packageId}::personal_kiosk_rule::Rule`,
274
262
  `bool`,
@@ -278,10 +266,10 @@ class TransferPolicyTransaction {
278
266
  return this;
279
267
  }
280
268
  removeFloorPriceRule() {
281
- __privateMethod(this, _validateInputs, validateInputs_fn).call(this);
269
+ __privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
282
270
  const packageId = this.kioskClient.getRulePackageId("floorPriceRulePackageId");
283
271
  (0, import_transfer_policy.removeTransferPolicyRule)(
284
- this.transactionBlock,
272
+ this.transaction,
285
273
  this.type,
286
274
  `${packageId}::floor_price_rule::Rule`,
287
275
  `${packageId}::floor_price_rule::Config`,
@@ -291,17 +279,16 @@ class TransferPolicyTransaction {
291
279
  return this;
292
280
  }
293
281
  getPolicy() {
294
- if (!this.policy)
295
- throw new Error("Policy not set.");
282
+ if (!this.policy) throw new Error("Policy not set.");
296
283
  return this.policy;
297
284
  }
298
285
  getPolicyCap() {
299
- if (!this.policyCap)
300
- throw new Error("Transfer Policy Cap not set.");
286
+ if (!this.policyCap) throw new Error("Transfer Policy Cap not set.");
301
287
  return this.policyCap;
302
288
  }
303
289
  }
304
- _validateInputs = new WeakSet();
290
+ _TransferPolicyTransaction_instances = new WeakSet();
291
+ // Internal function that that the policy's Id + Cap + type have been set.
305
292
  validateInputs_fn = function() {
306
293
  const genericErrorMessage = `Please use 'setCap()' to setup the TransferPolicy.`;
307
294
  if (!this.policy)
@@ -313,7 +300,9 @@ validateInputs_fn = function() {
313
300
  `${genericErrorMessage} Missing: Transfer Policy object type (e.g. {packageId}::item::Item)`
314
301
  );
315
302
  };
316
- _setup = new WeakSet();
303
+ /**
304
+ * Setup the state of the TransferPolicyTransaction.
305
+ */
317
306
  setup_fn = function(policyId, policyCap, type) {
318
307
  this.policy = policyId;
319
308
  this.policyCap = policyCap;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/client/tp-transaction.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 { TransactionBlock, TransactionObjectArgument } from '@iota/iota-sdk/transactions';\n\nimport {\n attachFloorPriceRuleTx,\n attachKioskLockRuleTx,\n attachPersonalKioskRuleTx,\n attachRoyaltyRuleTx,\n} from '../tx/rules/attach.js';\nimport {\n createTransferPolicy,\n createTransferPolicyWithoutSharing,\n removeTransferPolicyRule,\n shareTransferPolicy,\n withdrawFromPolicy,\n} from '../tx/transfer-policy.js';\nimport type { ObjectArgument, TransferPolicyCap } from '../types/index.js';\nimport type { KioskClient } from './kiosk-client.js';\n\nexport type TransferPolicyBaseParams = {\n type: string;\n publisher: ObjectArgument;\n skipCheck?: boolean;\n};\n\nexport type TransferPolicyTransactionParams = {\n kioskClient: KioskClient;\n transactionBlock: TransactionBlock;\n cap?: TransferPolicyCap;\n};\n\nexport class TransferPolicyTransaction {\n transactionBlock: TransactionBlock;\n kioskClient: KioskClient;\n policy?: ObjectArgument;\n policyCap?: ObjectArgument;\n type?: string;\n\n constructor({ kioskClient, transactionBlock, cap }: TransferPolicyTransactionParams) {\n this.kioskClient = kioskClient;\n this.transactionBlock = transactionBlock;\n if (cap) this.setCap(cap);\n }\n\n /**\n * A function to create a new transfer policy.\n * Checks if there's already an existing transfer policy to prevent\n * double transfer policy mistakes.\n * There's an optional `skipCheck` flag that will just create the policy\n * without checking\n *\n * @param type The Type (`T`) for which we're creating the transfer policy.\n * @param publisher The Publisher Object Id.\n * @param address Address to save the `TransferPolicyCap` object to.\n * @param skipCheck (Optional) skip checking if a transfer policy already exists\n */\n async createAndShare({\n type,\n publisher,\n address,\n skipCheck,\n }: TransferPolicyBaseParams & {\n address: string;\n }) {\n if (!skipCheck) {\n const policies = await this.kioskClient.getTransferPolicies({ type });\n if (policies.length > 0)\n throw new Error(\"There's already transfer policy for this Type.\");\n }\n const cap = createTransferPolicy(this.transactionBlock, type, publisher);\n this.transactionBlock.transferObjects([cap], this.transactionBlock.pure.address(address));\n }\n\n /**\n * A convenient function to create a Transfer Policy and attach some rules\n * before sharing it (so you can prepare it in a single PTB)\n * @param type The Type (`T`) for which we're creating the transfer policy.\n * @param publisher The Publisher Object Id.\n * @param address Address to save the `TransferPolicyCap` object to.\n * @param skipCheck (Optional) skip checking if a transfer policy already exists\n */\n async create({\n type,\n publisher,\n skipCheck,\n }: TransferPolicyBaseParams): Promise<TransferPolicyTransaction> {\n if (!skipCheck) {\n const policies = await this.kioskClient.getTransferPolicies({ type });\n if (policies.length > 0)\n throw new Error(\"There's already transfer policy for this Type.\");\n }\n const [policy, policyCap] = createTransferPolicyWithoutSharing(\n this.transactionBlock,\n type,\n publisher,\n );\n\n this.#setup(policy, policyCap, type); // sets the client's TP to the newly created one.\n return this;\n }\n\n /**\n * This can be called after calling the `create` function to share the `TransferPolicy`,\n * and transfer the `TransferPolicyCap` to the specified address\n *\n * @param address The address to transfer the `TransferPolicyCap`\n */\n shareAndTransferCap(address: string) {\n if (!this.type || !this.policyCap || !this.policy)\n throw new Error(\n 'This function can only be called after `transferPolicyManager.create`',\n );\n\n shareTransferPolicy(\n this.transactionBlock,\n this.type,\n this.policy as TransactionObjectArgument,\n );\n this.transactionBlock.transferObjects(\n [this.policyCap as TransactionObjectArgument],\n this.transactionBlock.pure.address(address),\n );\n }\n\n /**\n * Setup the TransferPolicy by passing a `cap` returned from `kioskClient.getOwnedTransferPolicies` or\n * `kioskClient.getOwnedTransferPoliciesByType`.\n * @param policyCapId The `TransferPolicyCap`\n */\n setCap({ policyId, policyCapId, type }: TransferPolicyCap) {\n return this.#setup(policyId, policyCapId, type);\n }\n\n /**\n * Withdraw from the transfer policy's profits.\n * @param address Address to transfer the profits to.\n * @param amount (Optional) amount parameter. Will withdraw all profits if the amount is not specified.\n */\n withdraw(address: string, amount?: string | bigint) {\n this.#validateInputs();\n // Withdraw coin for specified amount (or none)\n const coin = withdrawFromPolicy(\n this.transactionBlock,\n this.type!,\n this.policy!,\n this.policyCap!,\n amount,\n );\n\n this.transactionBlock.transferObjects([coin], this.transactionBlock.pure.address(address));\n\n return this;\n }\n\n /**\n * Adds the Kiosk Royalty rule to the Transfer Policy.\n * You can pass the percentage, as well as a minimum amount.\n * The royalty that will be paid is the MAX(percentage, minAmount).\n * \tYou can pass 0 in either value if you want only percentage royalty, or a fixed amount fee.\n * \t(but you should define at least one of them for the rule to make sense).\n *\n * \t@param percentageBps The royalty percentage in basis points. Use `percentageToBasisPoints` helper to convert from percentage [0,100].\n * \t@param minAmount The minimum royalty amount per request in nano.\n */\n addRoyaltyRule(\n percentageBps: number | string, // this is in basis points.\n minAmount: number | string,\n ) {\n this.#validateInputs();\n\n // Hard-coding package Ids as these don't change.\n // Also, it's hard to keep versioning as with network wipes, mainnet\n // and testnet will conflict.\n attachRoyaltyRuleTx(\n this.transactionBlock,\n this.type!,\n this.policy!,\n this.policyCap!,\n percentageBps,\n minAmount,\n this.kioskClient.getRulePackageId('royaltyRulePackageId'),\n );\n return this;\n }\n\n /**\n * Adds the Kiosk Lock Rule to the Transfer Policy.\n * This Rule forces buyer to lock the item in the kiosk, preserving strong royalties.\n */\n addLockRule() {\n this.#validateInputs();\n\n attachKioskLockRuleTx(\n this.transactionBlock,\n this.type!,\n this.policy!,\n this.policyCap!,\n this.kioskClient.getRulePackageId('kioskLockRulePackageId'),\n );\n return this;\n }\n\n /**\n * Attaches the Personal Kiosk Rule, making a purchase valid only for `SoulBound` kiosks.\n */\n addPersonalKioskRule() {\n this.#validateInputs();\n\n attachPersonalKioskRuleTx(\n this.transactionBlock,\n this.type!,\n this.policy!,\n this.policyCap!,\n this.kioskClient.getRulePackageId('personalKioskRulePackageId'),\n );\n return this;\n }\n\n /**\n * A function to add the floor price rule to a transfer policy.\n * @param minPrice The minimum price in nano.\n */\n addFloorPriceRule(minPrice: string | bigint) {\n this.#validateInputs();\n\n attachFloorPriceRuleTx(\n this.transactionBlock,\n this.type!,\n this.policy!,\n this.policyCap!,\n minPrice,\n this.kioskClient.getRulePackageId('floorPriceRulePackageId'),\n );\n return this;\n }\n\n /**\n * Generic helper to remove a rule, not from the SDK's base ruleset.\n * @param ruleType The Rule Type\n * @param configType The Config Type\n */\n removeRule({ ruleType, configType }: { ruleType: string; configType: string }) {\n this.#validateInputs();\n\n removeTransferPolicyRule(\n this.transactionBlock,\n this.type!,\n ruleType,\n configType,\n this.policy!,\n this.policyCap!,\n );\n }\n\n /**\n * Removes the lock rule.\n */\n removeLockRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('kioskLockRulePackageId');\n\n removeTransferPolicyRule(\n this.transactionBlock,\n this.type!,\n `${packageId}::kiosk_lock_rule::Rule`,\n `${packageId}::kiosk_lock_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n /**\n * Removes the Royalty rule\n */\n removeRoyaltyRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('royaltyRulePackageId');\n\n removeTransferPolicyRule(\n this.transactionBlock,\n this.type!,\n `${packageId}::royalty_rule::Rule`,\n `${packageId}::royalty_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n removePersonalKioskRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('personalKioskRulePackageId');\n\n removeTransferPolicyRule(\n this.transactionBlock,\n this.type!,\n `${packageId}::personal_kiosk_rule::Rule`,\n `bool`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n removeFloorPriceRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('floorPriceRulePackageId');\n\n removeTransferPolicyRule(\n this.transactionBlock,\n this.type!,\n `${packageId}::floor_price_rule::Rule`,\n `${packageId}::floor_price_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n getPolicy() {\n if (!this.policy) throw new Error('Policy not set.');\n return this.policy;\n }\n\n getPolicyCap() {\n if (!this.policyCap) throw new Error('Transfer Policy Cap not set.');\n return this.policyCap;\n }\n\n // Internal function that that the policy's Id + Cap + type have been set.\n #validateInputs() {\n const genericErrorMessage = `Please use 'setCap()' to setup the TransferPolicy.`;\n if (!this.policy)\n throw new Error(`${genericErrorMessage} Missing: Transfer Policy Object.`);\n if (!this.policyCap)\n throw new Error(`${genericErrorMessage} Missing: TransferPolicyCap Object ID`);\n if (!this.type)\n throw new Error(\n `${genericErrorMessage} Missing: Transfer Policy object type (e.g. {packageId}::item::Item)`,\n );\n }\n\n /**\n * Setup the state of the TransferPolicyTransaction.\n */\n #setup(policyId: ObjectArgument, policyCap: ObjectArgument, type: string) {\n this.policy = policyId;\n this.policyCap = policyCap;\n this.type = type;\n return this;\n }\n}\n"],
5
- "mappings": "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",
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 {\n attachFloorPriceRuleTx,\n attachKioskLockRuleTx,\n attachPersonalKioskRuleTx,\n attachRoyaltyRuleTx,\n} from '../tx/rules/attach.js';\nimport {\n createTransferPolicy,\n createTransferPolicyWithoutSharing,\n removeTransferPolicyRule,\n shareTransferPolicy,\n withdrawFromPolicy,\n} from '../tx/transfer-policy.js';\nimport type { ObjectArgument, TransferPolicyCap } from '../types/index.js';\nimport type { KioskClient } from './kiosk-client.js';\n\nexport type TransferPolicyBaseParams = {\n type: string;\n publisher: ObjectArgument;\n skipCheck?: boolean;\n};\n\nexport type TransferPolicyTransactionParams = {\n kioskClient: KioskClient;\n transaction: Transaction;\n /** @deprecated use transaction instead */\n transactionBlock?: Transaction;\n cap?: TransferPolicyCap;\n};\n\nexport class TransferPolicyTransaction {\n transaction: Transaction;\n kioskClient: KioskClient;\n policy?: ObjectArgument;\n policyCap?: ObjectArgument;\n type?: string;\n\n constructor({\n kioskClient,\n transactionBlock,\n transaction = transactionBlock!,\n cap,\n }: TransferPolicyTransactionParams) {\n this.kioskClient = kioskClient;\n this.transaction = transaction;\n if (cap) this.setCap(cap);\n }\n\n /**\n * A function to create a new transfer policy.\n * Checks if there's already an existing transfer policy to prevent\n * double transfer policy mistakes.\n * There's an optional `skipCheck` flag that will just create the policy\n * without checking\n *\n * @param type The Type (`T`) for which we're creating the transfer policy.\n * @param publisher The Publisher Object Id.\n * @param address Address to save the `TransferPolicyCap` object to.\n * @param skipCheck (Optional) skip checking if a transfer policy already exists\n */\n async createAndShare({\n type,\n publisher,\n address,\n skipCheck,\n }: TransferPolicyBaseParams & {\n address: string;\n }) {\n if (!skipCheck) {\n const policies = await this.kioskClient.getTransferPolicies({ type });\n if (policies.length > 0)\n throw new Error(\"There's already transfer policy for this Type.\");\n }\n const cap = createTransferPolicy(this.transaction, type, publisher);\n this.transaction.transferObjects([cap], this.transaction.pure.address(address));\n }\n\n /**\n * A convenient function to create a Transfer Policy and attach some rules\n * before sharing it (so you can prepare it in a single PTB)\n * @param type The Type (`T`) for which we're creating the transfer policy.\n * @param publisher The Publisher Object Id.\n * @param address Address to save the `TransferPolicyCap` object to.\n * @param skipCheck (Optional) skip checking if a transfer policy already exists\n */\n async create({\n type,\n publisher,\n skipCheck,\n }: TransferPolicyBaseParams): Promise<TransferPolicyTransaction> {\n if (!skipCheck) {\n const policies = await this.kioskClient.getTransferPolicies({ type });\n if (policies.length > 0)\n throw new Error(\"There's already transfer policy for this Type.\");\n }\n const [policy, policyCap] = createTransferPolicyWithoutSharing(\n this.transaction,\n type,\n publisher,\n );\n\n this.#setup(policy, policyCap, type); // sets the client's TP to the newly created one.\n return this;\n }\n\n /**\n * This can be called after calling the `create` function to share the `TransferPolicy`,\n * and transfer the `TransferPolicyCap` to the specified address\n *\n * @param address The address to transfer the `TransferPolicyCap`\n */\n shareAndTransferCap(address: string) {\n if (!this.type || !this.policyCap || !this.policy)\n throw new Error(\n 'This function can only be called after `transferPolicyManager.create`',\n );\n\n shareTransferPolicy(this.transaction, this.type, this.policy as TransactionObjectArgument);\n this.transaction.transferObjects(\n [this.policyCap as TransactionObjectArgument],\n this.transaction.pure.address(address),\n );\n }\n\n /**\n * Setup the TransferPolicy by passing a `cap` returned from `kioskClient.getOwnedTransferPolicies` or\n * `kioskClient.getOwnedTransferPoliciesByType`.\n * @param policyCapId The `TransferPolicyCap`\n */\n setCap({ policyId, policyCapId, type }: TransferPolicyCap) {\n return this.#setup(policyId, policyCapId, type);\n }\n\n /**\n * Withdraw from the transfer policy's profits.\n * @param address Address to transfer the profits to.\n * @param amount (Optional) amount parameter. Will withdraw all profits if the amount is not specified.\n */\n withdraw(address: string, amount?: string | bigint) {\n this.#validateInputs();\n // Withdraw coin for specified amount (or none)\n const coin = withdrawFromPolicy(\n this.transaction,\n this.type!,\n this.policy!,\n this.policyCap!,\n amount,\n );\n\n this.transaction.transferObjects([coin], this.transaction.pure.address(address));\n\n return this;\n }\n\n /**\n * Adds the Kiosk Royalty rule to the Transfer Policy.\n * You can pass the percentage, as well as a minimum amount.\n * The royalty that will be paid is the MAX(percentage, minAmount).\n * \tYou can pass 0 in either value if you want only percentage royalty, or a fixed amount fee.\n * \t(but you should define at least one of them for the rule to make sense).\n *\n * \t@param percentageBps The royalty percentage in basis points. Use `percentageToBasisPoints` helper to convert from percentage [0,100].\n * \t@param minAmount The minimum royalty amount per request in NANOS.\n */\n addRoyaltyRule(\n percentageBps: number | string, // this is in basis points.\n minAmount: number | string,\n ) {\n this.#validateInputs();\n\n // Hard-coding package Ids as these don't change.\n // Also, it's hard to keep versioning as with network wipes, mainnet\n // and testnet will conflict.\n attachRoyaltyRuleTx(\n this.transaction,\n this.type!,\n this.policy!,\n this.policyCap!,\n percentageBps,\n minAmount,\n this.kioskClient.getRulePackageId('royaltyRulePackageId'),\n );\n return this;\n }\n\n /**\n * Adds the Kiosk Lock Rule to the Transfer Policy.\n * This Rule forces buyer to lock the item in the kiosk, preserving strong royalties.\n */\n addLockRule() {\n this.#validateInputs();\n\n attachKioskLockRuleTx(\n this.transaction,\n this.type!,\n this.policy!,\n this.policyCap!,\n this.kioskClient.getRulePackageId('kioskLockRulePackageId'),\n );\n return this;\n }\n\n /**\n * Attaches the Personal Kiosk Rule, making a purchase valid only for `SoulBound` kiosks.\n */\n addPersonalKioskRule() {\n this.#validateInputs();\n\n attachPersonalKioskRuleTx(\n this.transaction,\n this.type!,\n this.policy!,\n this.policyCap!,\n this.kioskClient.getRulePackageId('personalKioskRulePackageId'),\n );\n return this;\n }\n\n /**\n * A function to add the floor price rule to a transfer policy.\n * @param minPrice The minimum price in NANOS.\n */\n addFloorPriceRule(minPrice: string | bigint) {\n this.#validateInputs();\n\n attachFloorPriceRuleTx(\n this.transaction,\n this.type!,\n this.policy!,\n this.policyCap!,\n minPrice,\n this.kioskClient.getRulePackageId('floorPriceRulePackageId'),\n );\n return this;\n }\n\n /**\n * Generic helper to remove a rule, not from the SDK's base ruleset.\n * @param ruleType The Rule Type\n * @param configType The Config Type\n */\n removeRule({ ruleType, configType }: { ruleType: string; configType: string }) {\n this.#validateInputs();\n\n removeTransferPolicyRule(\n this.transaction,\n this.type!,\n ruleType,\n configType,\n this.policy!,\n this.policyCap!,\n );\n }\n\n /**\n * Removes the lock rule.\n */\n removeLockRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('kioskLockRulePackageId');\n\n removeTransferPolicyRule(\n this.transaction,\n this.type!,\n `${packageId}::kiosk_lock_rule::Rule`,\n `${packageId}::kiosk_lock_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n /**\n * Removes the Royalty rule\n */\n removeRoyaltyRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('royaltyRulePackageId');\n\n removeTransferPolicyRule(\n this.transaction,\n this.type!,\n `${packageId}::royalty_rule::Rule`,\n `${packageId}::royalty_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n removePersonalKioskRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('personalKioskRulePackageId');\n\n removeTransferPolicyRule(\n this.transaction,\n this.type!,\n `${packageId}::personal_kiosk_rule::Rule`,\n `bool`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n removeFloorPriceRule() {\n this.#validateInputs();\n\n const packageId = this.kioskClient.getRulePackageId('floorPriceRulePackageId');\n\n removeTransferPolicyRule(\n this.transaction,\n this.type!,\n `${packageId}::floor_price_rule::Rule`,\n `${packageId}::floor_price_rule::Config`,\n this.policy!,\n this.policyCap!,\n );\n return this;\n }\n\n getPolicy() {\n if (!this.policy) throw new Error('Policy not set.');\n return this.policy;\n }\n\n getPolicyCap() {\n if (!this.policyCap) throw new Error('Transfer Policy Cap not set.');\n return this.policyCap;\n }\n\n // Internal function that that the policy's Id + Cap + type have been set.\n #validateInputs() {\n const genericErrorMessage = `Please use 'setCap()' to setup the TransferPolicy.`;\n if (!this.policy)\n throw new Error(`${genericErrorMessage} Missing: Transfer Policy Object.`);\n if (!this.policyCap)\n throw new Error(`${genericErrorMessage} Missing: TransferPolicyCap Object ID`);\n if (!this.type)\n throw new Error(\n `${genericErrorMessage} Missing: Transfer Policy object type (e.g. {packageId}::item::Item)`,\n );\n }\n\n /**\n * Setup the state of the TransferPolicyTransaction.\n */\n #setup(policyId: ObjectArgument, policyCap: ObjectArgument, type: string) {\n this.policy = policyId;\n this.policyCap = policyCap;\n this.type = type;\n return this;\n }\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../src/constants.ts"],
4
4
  "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\n// eslint-disable-next-line import/no-cycle\nimport type { KioskConfiguration } from '@iota/iota-sdk/client';\nimport { getAllNetworks } from '@iota/iota-sdk/client';\nimport {\n resolveFloorPriceRule,\n resolveKioskLockRule,\n resolvePersonalKioskRule,\n resolveRoyaltyRule,\n} from './tx/rules//resolve.js';\nimport type { ObjectArgument, RuleResolvingParams } from './types/index.js';\n\n/**\n * The base rule package ids that can be extended\n */\nexport type BaseRulePackageIds = {\n royaltyRulePackageId?: string;\n kioskLockRulePackageId?: string;\n personalKioskRulePackageId?: string;\n floorPriceRulePackageId?: string;\n};\n\n/**\n * The Transfer Policy rule.\n */\nexport type TransferPolicyRule = {\n rule: string;\n packageId: string;\n resolveRuleFunction: (rule: RuleResolvingParams) => ObjectArgument | void;\n hasLockingRule?: boolean;\n};\n\n/**\n * Constructs a list of rule resolvers based on the params.\n */\nexport function getBaseRules({\n royaltyRulePackageId,\n kioskLockRulePackageId,\n personalKioskRulePackageId,\n floorPriceRulePackageId,\n}: BaseRulePackageIds): TransferPolicyRule[] {\n const rules = [];\n\n if (royaltyRulePackageId) {\n rules.push({\n rule: `${royaltyRulePackageId}::royalty_rule::Rule`,\n packageId: royaltyRulePackageId,\n resolveRuleFunction: resolveRoyaltyRule,\n });\n }\n\n if (kioskLockRulePackageId) {\n rules.push({\n rule: `${kioskLockRulePackageId}::kiosk_lock_rule::Rule`,\n packageId: kioskLockRulePackageId,\n resolveRuleFunction: resolveKioskLockRule,\n hasLockingRule: true,\n });\n }\n\n if (personalKioskRulePackageId) {\n rules.push({\n rule: `${personalKioskRulePackageId}::personal_kiosk_rule::Rule`,\n packageId: personalKioskRulePackageId,\n resolveRuleFunction: resolvePersonalKioskRule,\n });\n }\n\n if (floorPriceRulePackageId) {\n rules.push({\n rule: `${floorPriceRulePackageId}::floor_price_rule::Rule`,\n packageId: floorPriceRulePackageId,\n resolveRuleFunction: resolveFloorPriceRule,\n });\n }\n\n return rules;\n}\n\nexport const rules: TransferPolicyRule[] = Object.values(getAllNetworks())\n .filter((network) => network.kiosk)\n .flatMap((network) => getBaseRules(network.kiosk as KioskConfiguration));\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA+B;AAC/B,qBAKO;AA0BA,SAAS,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAA6C;AACzC,QAAMA,SAAQ,CAAC;AAEf,MAAI,sBAAsB;AACtB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,MAAI,wBAAwB;AACxB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,MACX,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,IACpB,CAAC;AAAA,EACL;AAEA,MAAI,4BAA4B;AAC5B,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,MAAI,yBAAyB;AACzB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG;AAAA,MACT,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,SAAOA;AACX;AAEO,MAAM,QAA8B,OAAO,WAAO,8BAAe,CAAC,EACpE,OAAO,CAAC,YAAY,QAAQ,KAAK,EACjC,QAAQ,CAAC,YAAY,aAAa,QAAQ,KAA2B,CAAC;",
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAMA,oBAA+B;AAC/B,qBAKO;AA0BA,SAAS,aAAa;AAAA,EACzB;AAAA,EACA;AAAA,EACA;AAAA,EACA;AACJ,GAA6C;AACzC,QAAMA,SAAQ,CAAC;AAEf,MAAI,sBAAsB;AACtB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG,oBAAoB;AAAA,MAC7B,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,MAAI,wBAAwB;AACxB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG,sBAAsB;AAAA,MAC/B,WAAW;AAAA,MACX,qBAAqB;AAAA,MACrB,gBAAgB;AAAA,IACpB,CAAC;AAAA,EACL;AAEA,MAAI,4BAA4B;AAC5B,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG,0BAA0B;AAAA,MACnC,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,MAAI,yBAAyB;AACzB,IAAAA,OAAM,KAAK;AAAA,MACP,MAAM,GAAG,uBAAuB;AAAA,MAChC,WAAW;AAAA,MACX,qBAAqB;AAAA,IACzB,CAAC;AAAA,EACL;AAEA,SAAOA;AACX;AAEO,MAAM,QAA8B,OAAO,WAAO,8BAAe,CAAC,EACpE,OAAO,CAAC,YAAY,QAAQ,KAAK,EACjC,QAAQ,CAAC,YAAY,aAAa,QAAQ,KAA2B,CAAC;",
6
6
  "names": ["rules"]
7
7
  }
@@ -42,8 +42,7 @@ async function fetchKiosk(client, kioskId, pagination, options) {
42
42
  options.objectOptions || { showDisplay: true }
43
43
  ) : Promise.resolve([])
44
44
  ]);
45
- if (options.withKioskFields)
46
- kioskData.kiosk = kiosk;
45
+ if (options.withKioskFields) kioskData.kiosk = kiosk;
47
46
  (0, import_utils2.attachListingsAndPrices)(kioskData, listings, listingObjects);
48
47
  (0, import_utils2.attachLockedItems)(kioskData, lockedItemIds);
49
48
  (0, import_utils2.attachObjects)(
@@ -113,8 +112,7 @@ async function fetchKioskExtension(client, kioskId, extensionType) {
113
112
  }
114
113
  }
115
114
  });
116
- if (!extension.data)
117
- return null;
115
+ if (!extension.data) return null;
118
116
  const fields = extension?.data?.content?.fields?.value?.fields;
119
117
  return {
120
118
  objectId: extension.data.objectId,
@@ -2,6 +2,6 @@
2
2
  "version": 3,
3
3
  "sources": ["../../../src/query/kiosk.ts"],
4
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 PaginationArguments,\n IotaClient,\n IotaObjectData,\n IotaObjectDataFilter,\n IotaObjectResponse,\n} from '@iota/iota-sdk/client';\nimport { isValidIotaAddress } from '@iota/iota-sdk/utils';\n\nimport type {\n FetchKioskOptions,\n KioskExtension,\n KioskListing,\n OwnedKiosks,\n PagedKioskData,\n} from '../types/index.js';\nimport { KIOSK_OWNER_CAP } from '../types/index.js';\nimport {\n attachListingsAndPrices,\n attachLockedItems,\n attachObjects,\n extractKioskData,\n getAllDynamicFields,\n getAllObjects,\n getKioskObject,\n} from '../utils.js';\n\nexport async function fetchKiosk(\n client: IotaClient,\n kioskId: string,\n pagination: PaginationArguments<string>,\n options: FetchKioskOptions,\n): Promise<PagedKioskData> {\n // TODO: Replace the `getAllDynamicFields` with a paginated\n // response, once we have better RPC support for\n // type filtering & batch fetching.\n // This can't work with pagination currently.\n const data = await getAllDynamicFields(client, kioskId, pagination);\n\n const listings: KioskListing[] = [];\n const lockedItemIds: string[] = [];\n\n // extracted kiosk data.\n const kioskData = extractKioskData(data, listings, lockedItemIds, kioskId);\n\n // split the fetching in two queries as we are most likely passing different options for each kind.\n // For items, we usually seek the Display.\n // For listings we usually seek the DF value (price) / exclusivity.\n const [kiosk, listingObjects, items] = await Promise.all([\n options.withKioskFields ? getKioskObject(client, kioskId) : Promise.resolve(undefined),\n options.withListingPrices\n ? getAllObjects(client, kioskData.listingIds, {\n showContent: true,\n })\n : Promise.resolve([]),\n options.withObjects\n ? getAllObjects(\n client,\n kioskData.itemIds,\n options.objectOptions || { showDisplay: true },\n )\n : Promise.resolve([]),\n ]);\n\n if (options.withKioskFields) kioskData.kiosk = kiosk;\n // attach items listings. IF we have `options.withListingPrices === true`, it will also attach the prices.\n attachListingsAndPrices(kioskData, listings, listingObjects);\n // add `locked` status to items that are locked.\n attachLockedItems(kioskData, lockedItemIds);\n\n // Attach the objects for the queried items.\n attachObjects(\n kioskData,\n items.filter((x) => !!x.data).map((x) => x.data!),\n );\n\n return {\n data: kioskData,\n nextCursor: null,\n hasNextPage: false,\n };\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n */\nexport async function getOwnedKiosks(\n client: IotaClient,\n address: string,\n options?: {\n pagination?: PaginationArguments<string>;\n personalKioskType: string;\n },\n): Promise<OwnedKiosks> {\n if (!isValidIotaAddress(address))\n return {\n nextCursor: null,\n hasNextPage: false,\n kioskOwnerCaps: [],\n kioskIds: [],\n };\n\n const filter: IotaObjectDataFilter = {\n MatchAny: [\n {\n StructType: KIOSK_OWNER_CAP,\n },\n ],\n };\n\n if (options?.personalKioskType) {\n filter.MatchAny.push({\n StructType: options.personalKioskType,\n });\n }\n\n // fetch owned kiosk caps, paginated.\n const { data, hasNextPage, nextCursor } = await client.getOwnedObjects({\n owner: address,\n filter,\n options: {\n showContent: true,\n showType: true,\n },\n ...(options?.pagination || {}),\n });\n\n // get kioskIds from the OwnerCaps.\n const kioskIdList = data?.map((x: IotaObjectResponse) => {\n const fields = x.data?.content?.dataType === 'moveObject' ? x.data.content.fields : null;\n // @ts-expect-error TODO: should i remove ts ignore here?\n return (fields?.cap ? fields?.cap?.fields?.for : fields?.for) as string;\n // return (fields as { for: string })?.for;\n });\n\n // clean up data that might have an error in them.\n // only return valid objects.\n const filteredData = data.filter((x) => 'data' in x).map((x) => x.data) as IotaObjectData[];\n\n return {\n nextCursor,\n hasNextPage,\n kioskOwnerCaps: filteredData.map((x, idx) => ({\n isPersonal: x.type !== KIOSK_OWNER_CAP,\n digest: x.digest,\n version: x.version,\n objectId: x.objectId,\n kioskId: kioskIdList[idx],\n })),\n kioskIds: kioskIdList,\n };\n}\n\n// Get a kiosk extension data for a given kioskId and extensionType.\nexport async function fetchKioskExtension(\n client: IotaClient,\n kioskId: string,\n extensionType: string,\n): Promise<KioskExtension | null> {\n const extension = await client.getDynamicFieldObject({\n parentId: kioskId,\n name: {\n type: `0x2::kiosk_extension::ExtensionKey<${extensionType}>`,\n value: {\n dummy_field: false,\n },\n },\n });\n\n if (!extension.data) return null;\n\n const fields = (extension?.data?.content as { fields: { [k: string]: any } })?.fields?.value\n ?.fields;\n\n return {\n objectId: extension.data.objectId,\n type: extensionType,\n isEnabled: fields?.is_enabled,\n permissions: fields?.permissions,\n storageId: fields?.storage?.fields?.id?.id,\n storageSize: fields?.storage?.fields?.size,\n };\n}\n"],
5
- "mappings": "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",
5
+ "mappings": "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",
6
6
  "names": ["import_utils"]
7
7
  }
@@ -1,4 +1,5 @@
1
1
  import type { IotaClient } from '@iota/iota-sdk/client';
2
+ import '../bcs.js';
2
3
  import type { TransferPolicy, TransferPolicyCap } from '../types/index.js';
3
4
  /**
4
5
  * Searches the `TransferPolicy`-s for the given type. The search is performed via
@@ -25,6 +25,7 @@ __export(transfer_policy_exports, {
25
25
  module.exports = __toCommonJS(transfer_policy_exports);
26
26
  var import_utils = require("@iota/iota-sdk/utils");
27
27
  var import_bcs = require("../bcs.js");
28
+ var import_bcs2 = require("../bcs.js");
28
29
  var import_types = require("../types/index.js");
29
30
  var import_utils2 = require("../utils.js");
30
31
  async function queryTransferPolicy(client, type) {
@@ -44,7 +45,7 @@ async function queryTransferPolicy(client, type) {
44
45
  `Invalid policy: ${policy?.objectId}, expected object, got package`
45
46
  );
46
47
  }
47
- const parsed = import_bcs.bcs.de(import_types.TRANSFER_POLICY_TYPE, policy.bcs.bcsBytes, "base64");
48
+ const parsed = import_bcs2.TransferPolicyType.parse((0, import_utils.fromB64)(policy.bcs.bcsBytes));
48
49
  return {
49
50
  id: policy?.objectId,
50
51
  type: `${import_types.TRANSFER_POLICY_TYPE}<${type}>`,
@@ -55,8 +56,7 @@ async function queryTransferPolicy(client, type) {
55
56
  });
56
57
  }
57
58
  async function queryTransferPolicyCapsByType(client, address, type) {
58
- if (!(0, import_utils.isValidIotaAddress)(address))
59
- return [];
59
+ if (!(0, import_utils.isValidIotaAddress)(address)) return [];
60
60
  const filter = {
61
61
  MatchAll: [
62
62
  {
@@ -72,8 +72,7 @@ async function queryTransferPolicyCapsByType(client, address, type) {
72
72
  return data.map((item) => (0, import_utils2.parseTransferPolicyCapObject)(item)).filter((item) => !!item);
73
73
  }
74
74
  async function queryOwnedTransferPolicies(client, address) {
75
- if (!(0, import_utils.isValidIotaAddress)(address))
76
- return;
75
+ if (!(0, import_utils.isValidIotaAddress)(address)) return;
77
76
  const filter = {
78
77
  MatchAll: [
79
78
  {
@@ -88,8 +87,7 @@ async function queryOwnedTransferPolicies(client, address) {
88
87
  const policies = [];
89
88
  for (const item of data) {
90
89
  const data2 = (0, import_utils2.parseTransferPolicyCapObject)(item);
91
- if (data2)
92
- policies.push(data2);
90
+ if (data2) policies.push(data2);
93
91
  }
94
92
  return policies;
95
93
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/query/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 { IotaClient } from '@iota/iota-sdk/client';\nimport { isValidIotaAddress } from '@iota/iota-sdk/utils';\n\nimport { bcs } from '../bcs.js';\nimport type { TransferPolicy, TransferPolicyCap } from '../types/index.js';\nimport {\n TRANSFER_POLICY_CAP_TYPE,\n TRANSFER_POLICY_CREATED_EVENT,\n TRANSFER_POLICY_TYPE,\n} from '../types/index.js';\nimport { getAllOwnedObjects, parseTransferPolicyCapObject } from '../utils.js';\n\n/**\n * Searches the `TransferPolicy`-s for the given type. The search is performed via\n * the `TransferPolicyCreated` event. The policy can either be owned or shared,\n * and the caller needs to filter the results accordingly (ie single owner can not\n * be accessed by anyone but the owner).\n *\n * @param provider\n * @param type\n */\nexport async function queryTransferPolicy(\n client: IotaClient,\n type: string,\n): Promise<TransferPolicy[]> {\n // console.log('event type: %s', `${TRANSFER_POLICY_CREATED_EVENT}<${type}>`);\n const { data } = await client.queryEvents({\n query: {\n MoveEventType: `${TRANSFER_POLICY_CREATED_EVENT}<${type}>`,\n },\n });\n\n const search = data.map((event) => event.parsedJson as { id: string });\n const policies = await client.multiGetObjects({\n ids: search.map((policy) => policy.id),\n options: { showBcs: true, showOwner: true },\n });\n\n return policies\n .filter((policy) => !!policy && 'data' in policy)\n .map(({ data: policy }) => {\n // should never happen; policies are objects and fetched via an event.\n // policies are filtered for null and undefined above.\n if (!policy || !policy.bcs || !('bcsBytes' in policy.bcs)) {\n throw new Error(\n `Invalid policy: ${policy?.objectId}, expected object, got package`,\n );\n }\n\n const parsed = bcs.de(TRANSFER_POLICY_TYPE, policy.bcs.bcsBytes, 'base64');\n\n return {\n id: policy?.objectId,\n type: `${TRANSFER_POLICY_TYPE}<${type}>`,\n owner: policy?.owner,\n rules: parsed.rules,\n balance: parsed.balance,\n } as TransferPolicy;\n });\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n * @returns TransferPolicyCap Object ID | undefined if not found.\n */\nexport async function queryTransferPolicyCapsByType(\n client: IotaClient,\n address: string,\n type: string,\n): Promise<TransferPolicyCap[]> {\n if (!isValidIotaAddress(address)) return [];\n\n const filter = {\n MatchAll: [\n {\n StructType: `${TRANSFER_POLICY_CAP_TYPE}<${type}>`,\n },\n ],\n };\n\n // fetch owned kiosk caps, paginated.\n const data = await getAllOwnedObjects({\n client,\n filter,\n owner: address,\n });\n\n return data\n .map((item) => parseTransferPolicyCapObject(item))\n .filter((item) => !!item) as TransferPolicyCap[];\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n * @returns TransferPolicyCap Object ID | undefined if not found.\n */\nexport async function queryOwnedTransferPolicies(\n client: IotaClient,\n address: string,\n): Promise<TransferPolicyCap[] | undefined> {\n if (!isValidIotaAddress(address)) return;\n\n const filter = {\n MatchAll: [\n {\n MoveModule: {\n module: 'transfer_policy',\n package: '0x2',\n },\n },\n ],\n };\n\n // fetch all owned kiosk caps, paginated.\n const data = await getAllOwnedObjects({ client, owner: address, filter });\n\n const policies: TransferPolicyCap[] = [];\n\n for (const item of data) {\n const data = parseTransferPolicyCapObject(item);\n if (data) policies.push(data);\n }\n\n return policies;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,mBAAmC;AAEnC,iBAAoB;AAEpB,mBAIO;AACP,IAAAA,gBAAiE;AAWjE,eAAsB,oBAClB,QACA,MACyB;AAEzB,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,YAAY;AAAA,IACtC,OAAO;AAAA,MACH,eAAe,GAAG,8CAAiC;AAAA,IACvD;AAAA,EACJ,CAAC;AAED,QAAM,SAAS,KAAK,IAAI,CAAC,UAAU,MAAM,UAA4B;AACrE,QAAM,WAAW,MAAM,OAAO,gBAAgB;AAAA,IAC1C,KAAK,OAAO,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,IACrC,SAAS,EAAE,SAAS,MAAM,WAAW,KAAK;AAAA,EAC9C,CAAC;AAED,SAAO,SACF,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,UAAU,MAAM,EAC/C,IAAI,CAAC,EAAE,MAAM,OAAO,MAAM;AAGvB,QAAI,CAAC,UAAU,CAAC,OAAO,OAAO,EAAE,cAAc,OAAO,MAAM;AACvD,YAAM,IAAI;AAAA,QACN,mBAAmB,QAAQ;AAAA,MAC/B;AAAA,IACJ;AAEA,UAAM,SAAS,eAAI,GAAG,mCAAsB,OAAO,IAAI,UAAU,QAAQ;AAEzE,WAAO;AAAA,MACH,IAAI,QAAQ;AAAA,MACZ,MAAM,GAAG,qCAAwB;AAAA,MACjC,OAAO,QAAQ;AAAA,MACf,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,IACpB;AAAA,EACJ,CAAC;AACT;AASA,eAAsB,8BAClB,QACA,SACA,MAC4B;AAC5B,MAAI,KAAC,iCAAmB,OAAO;AAAG,WAAO,CAAC;AAE1C,QAAM,SAAS;AAAA,IACX,UAAU;AAAA,MACN;AAAA,QACI,YAAY,GAAG,yCAA4B;AAAA,MAC/C;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,OAAO,UAAM,kCAAmB;AAAA,IAClC;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACX,CAAC;AAED,SAAO,KACF,IAAI,CAAC,aAAS,4CAA6B,IAAI,CAAC,EAChD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI;AAChC;AASA,eAAsB,2BAClB,QACA,SACwC;AACxC,MAAI,KAAC,iCAAmB,OAAO;AAAG;AAElC,QAAM,SAAS;AAAA,IACX,UAAU;AAAA,MACN;AAAA,QACI,YAAY;AAAA,UACR,QAAQ;AAAA,UACR,SAAS;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,OAAO,UAAM,kCAAmB,EAAE,QAAQ,OAAO,SAAS,OAAO,CAAC;AAExE,QAAM,WAAgC,CAAC;AAEvC,aAAW,QAAQ,MAAM;AACrB,UAAMC,YAAO,4CAA6B,IAAI;AAC9C,QAAIA;AAAM,eAAS,KAAKA,KAAI;AAAA,EAChC;AAEA,SAAO;AACX;",
6
- "names": ["import_utils", "data"]
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// Modifications Copyright (c) 2024 IOTA Stiftung\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { IotaClient } from '@iota/iota-sdk/client';\nimport { fromB64, isValidIotaAddress } from '@iota/iota-sdk/utils';\n\nimport '../bcs.js';\n\nimport { TransferPolicyType } from '../bcs.js';\nimport type { TransferPolicy, TransferPolicyCap } from '../types/index.js';\nimport {\n TRANSFER_POLICY_CAP_TYPE,\n TRANSFER_POLICY_CREATED_EVENT,\n TRANSFER_POLICY_TYPE,\n} from '../types/index.js';\nimport { getAllOwnedObjects, parseTransferPolicyCapObject } from '../utils.js';\n\n/**\n * Searches the `TransferPolicy`-s for the given type. The search is performed via\n * the `TransferPolicyCreated` event. The policy can either be owned or shared,\n * and the caller needs to filter the results accordingly (ie single owner can not\n * be accessed by anyone but the owner).\n *\n * @param provider\n * @param type\n */\nexport async function queryTransferPolicy(\n client: IotaClient,\n type: string,\n): Promise<TransferPolicy[]> {\n // console.log('event type: %s', `${TRANSFER_POLICY_CREATED_EVENT}<${type}>`);\n const { data } = await client.queryEvents({\n query: {\n MoveEventType: `${TRANSFER_POLICY_CREATED_EVENT}<${type}>`,\n },\n });\n\n const search = data.map((event) => event.parsedJson as { id: string });\n const policies = await client.multiGetObjects({\n ids: search.map((policy) => policy.id),\n options: { showBcs: true, showOwner: true },\n });\n\n return policies\n .filter((policy) => !!policy && 'data' in policy)\n .map(({ data: policy }) => {\n // should never happen; policies are objects and fetched via an event.\n // policies are filtered for null and undefined above.\n if (!policy || !policy.bcs || !('bcsBytes' in policy.bcs)) {\n throw new Error(\n `Invalid policy: ${policy?.objectId}, expected object, got package`,\n );\n }\n\n const parsed = TransferPolicyType.parse(fromB64(policy.bcs.bcsBytes));\n\n return {\n id: policy?.objectId,\n type: `${TRANSFER_POLICY_TYPE}<${type}>`,\n owner: policy?.owner,\n rules: parsed.rules,\n balance: parsed.balance,\n } as TransferPolicy;\n });\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n * @returns TransferPolicyCap Object ID | undefined if not found.\n */\nexport async function queryTransferPolicyCapsByType(\n client: IotaClient,\n address: string,\n type: string,\n): Promise<TransferPolicyCap[]> {\n if (!isValidIotaAddress(address)) return [];\n\n const filter = {\n MatchAll: [\n {\n StructType: `${TRANSFER_POLICY_CAP_TYPE}<${type}>`,\n },\n ],\n };\n\n // fetch owned kiosk caps, paginated.\n const data = await getAllOwnedObjects({\n client,\n filter,\n owner: address,\n });\n\n return data\n .map((item) => parseTransferPolicyCapObject(item))\n .filter((item) => !!item) as TransferPolicyCap[];\n}\n\n/**\n * A function to fetch all the user's kiosk Caps\n * And a list of the kiosk address ids.\n * Returns a list of `kioskOwnerCapIds` and `kioskIds`.\n * Extra options allow pagination.\n * @returns TransferPolicyCap Object ID | undefined if not found.\n */\nexport async function queryOwnedTransferPolicies(\n client: IotaClient,\n address: string,\n): Promise<TransferPolicyCap[] | undefined> {\n if (!isValidIotaAddress(address)) return;\n\n const filter = {\n MatchAll: [\n {\n MoveModule: {\n module: 'transfer_policy',\n package: '0x2',\n },\n },\n ],\n };\n\n // fetch all owned kiosk caps, paginated.\n const data = await getAllOwnedObjects({ client, owner: address, filter });\n\n const policies: TransferPolicyCap[] = [];\n\n for (const item of data) {\n const data = parseTransferPolicyCapObject(item);\n if (data) policies.push(data);\n }\n\n return policies;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,mBAA4C;AAE5C,iBAAO;AAEP,IAAAA,cAAmC;AAEnC,mBAIO;AACP,IAAAC,gBAAiE;AAWjE,eAAsB,oBAClB,QACA,MACyB;AAEzB,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,YAAY;AAAA,IACtC,OAAO;AAAA,MACH,eAAe,GAAG,0CAA6B,IAAI,IAAI;AAAA,IAC3D;AAAA,EACJ,CAAC;AAED,QAAM,SAAS,KAAK,IAAI,CAAC,UAAU,MAAM,UAA4B;AACrE,QAAM,WAAW,MAAM,OAAO,gBAAgB;AAAA,IAC1C,KAAK,OAAO,IAAI,CAAC,WAAW,OAAO,EAAE;AAAA,IACrC,SAAS,EAAE,SAAS,MAAM,WAAW,KAAK;AAAA,EAC9C,CAAC;AAED,SAAO,SACF,OAAO,CAAC,WAAW,CAAC,CAAC,UAAU,UAAU,MAAM,EAC/C,IAAI,CAAC,EAAE,MAAM,OAAO,MAAM;AAGvB,QAAI,CAAC,UAAU,CAAC,OAAO,OAAO,EAAE,cAAc,OAAO,MAAM;AACvD,YAAM,IAAI;AAAA,QACN,mBAAmB,QAAQ,QAAQ;AAAA,MACvC;AAAA,IACJ;AAEA,UAAM,SAAS,+BAAmB,UAAM,sBAAQ,OAAO,IAAI,QAAQ,CAAC;AAEpE,WAAO;AAAA,MACH,IAAI,QAAQ;AAAA,MACZ,MAAM,GAAG,iCAAoB,IAAI,IAAI;AAAA,MACrC,OAAO,QAAQ;AAAA,MACf,OAAO,OAAO;AAAA,MACd,SAAS,OAAO;AAAA,IACpB;AAAA,EACJ,CAAC;AACT;AASA,eAAsB,8BAClB,QACA,SACA,MAC4B;AAC5B,MAAI,KAAC,iCAAmB,OAAO,EAAG,QAAO,CAAC;AAE1C,QAAM,SAAS;AAAA,IACX,UAAU;AAAA,MACN;AAAA,QACI,YAAY,GAAG,qCAAwB,IAAI,IAAI;AAAA,MACnD;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,OAAO,UAAM,kCAAmB;AAAA,IAClC;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACX,CAAC;AAED,SAAO,KACF,IAAI,CAAC,aAAS,4CAA6B,IAAI,CAAC,EAChD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI;AAChC;AASA,eAAsB,2BAClB,QACA,SACwC;AACxC,MAAI,KAAC,iCAAmB,OAAO,EAAG;AAElC,QAAM,SAAS;AAAA,IACX,UAAU;AAAA,MACN;AAAA,QACI,YAAY;AAAA,UACR,QAAQ;AAAA,UACR,SAAS;AAAA,QACb;AAAA,MACJ;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,OAAO,UAAM,kCAAmB,EAAE,QAAQ,OAAO,SAAS,OAAO,CAAC;AAExE,QAAM,WAAgC,CAAC;AAEvC,aAAW,QAAQ,MAAM;AACrB,UAAMC,YAAO,4CAA6B,IAAI;AAC9C,QAAIA,MAAM,UAAS,KAAKA,KAAI;AAAA,EAChC;AAEA,SAAO;AACX;",
6
+ "names": ["import_bcs", "import_utils", "data"]
7
7
  }