@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.
- package/CHANGELOG.md +21 -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
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import type {
|
|
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
|
-
|
|
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
|
-
|
|
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
|
|
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
|
|
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
|
-
|
|
21
|
-
|
|
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
|
|
32
|
+
var _TransferPolicyTransaction_instances, validateInputs_fn, setup_fn;
|
|
40
33
|
class TransferPolicyTransaction {
|
|
41
|
-
constructor({
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
__privateAdd(this,
|
|
34
|
+
constructor({
|
|
35
|
+
kioskClient,
|
|
36
|
+
transactionBlock,
|
|
37
|
+
transaction = transactionBlock,
|
|
38
|
+
cap
|
|
39
|
+
}) {
|
|
40
|
+
__privateAdd(this, _TransferPolicyTransaction_instances);
|
|
48
41
|
this.kioskClient = kioskClient;
|
|
49
|
-
this.
|
|
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.
|
|
77
|
-
this.
|
|
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.
|
|
90
|
+
this.transaction,
|
|
99
91
|
type,
|
|
100
92
|
publisher
|
|
101
93
|
);
|
|
102
|
-
__privateMethod(this,
|
|
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
|
-
|
|
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.
|
|
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,
|
|
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,
|
|
128
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
141
129
|
const coin = (0, import_transfer_policy.withdrawFromPolicy)(
|
|
142
|
-
this.
|
|
130
|
+
this.transaction,
|
|
143
131
|
this.type,
|
|
144
132
|
this.policy,
|
|
145
133
|
this.policyCap,
|
|
146
134
|
amount
|
|
147
135
|
);
|
|
148
|
-
this.
|
|
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
|
|
147
|
+
* @param minAmount The minimum royalty amount per request in NANOS.
|
|
160
148
|
*/
|
|
161
149
|
addRoyaltyRule(percentageBps, minAmount) {
|
|
162
|
-
__privateMethod(this,
|
|
150
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
163
151
|
(0, import_attach.attachRoyaltyRuleTx)(
|
|
164
|
-
this.
|
|
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,
|
|
167
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
180
168
|
(0, import_attach.attachKioskLockRuleTx)(
|
|
181
|
-
this.
|
|
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,
|
|
181
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
194
182
|
(0, import_attach.attachPersonalKioskRuleTx)(
|
|
195
|
-
this.
|
|
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
|
|
193
|
+
* @param minPrice The minimum price in NANOS.
|
|
206
194
|
*/
|
|
207
195
|
addFloorPriceRule(minPrice) {
|
|
208
|
-
__privateMethod(this,
|
|
196
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
209
197
|
(0, import_attach.attachFloorPriceRuleTx)(
|
|
210
|
-
this.
|
|
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,
|
|
213
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
226
214
|
(0, import_transfer_policy.removeTransferPolicyRule)(
|
|
227
|
-
this.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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,
|
|
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.
|
|
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
|
-
|
|
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
|
-
|
|
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": "
|
|
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,
|
|
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
|
}
|
package/dist/cjs/query/kiosk.js
CHANGED
|
@@ -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": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,mBAAmC;AASnC,mBAAgC;AAChC,IAAAA,gBAQO;AAEP,eAAsB,WAClB,QACA,SACA,YACA,SACuB;AAKvB,QAAM,OAAO,UAAM,mCAAoB,QAAQ,SAAS,UAAU;AAElE,QAAM,WAA2B,CAAC;AAClC,QAAM,gBAA0B,CAAC;AAGjC,QAAM,gBAAY,gCAAiB,MAAM,UAAU,eAAe,OAAO;AAKzE,QAAM,CAAC,OAAO,gBAAgB,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACrD,QAAQ,sBAAkB,8BAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,MAAS;AAAA,IACrF,QAAQ,wBACF,6BAAc,QAAQ,UAAU,YAAY;AAAA,MACxC,aAAa;AAAA,IACjB,CAAC,IACD,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACxB,QAAQ,kBACF;AAAA,MACI;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,iBAAiB,EAAE,aAAa,KAAK;AAAA,IACjD,IACA,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC5B,CAAC;AAED,MAAI,QAAQ
|
|
5
|
+
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAWA,mBAAmC;AASnC,mBAAgC;AAChC,IAAAA,gBAQO;AAEP,eAAsB,WAClB,QACA,SACA,YACA,SACuB;AAKvB,QAAM,OAAO,UAAM,mCAAoB,QAAQ,SAAS,UAAU;AAElE,QAAM,WAA2B,CAAC;AAClC,QAAM,gBAA0B,CAAC;AAGjC,QAAM,gBAAY,gCAAiB,MAAM,UAAU,eAAe,OAAO;AAKzE,QAAM,CAAC,OAAO,gBAAgB,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACrD,QAAQ,sBAAkB,8BAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,MAAS;AAAA,IACrF,QAAQ,wBACF,6BAAc,QAAQ,UAAU,YAAY;AAAA,MACxC,aAAa;AAAA,IACjB,CAAC,IACD,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACxB,QAAQ,kBACF;AAAA,MACI;AAAA,MACA,UAAU;AAAA,MACV,QAAQ,iBAAiB,EAAE,aAAa,KAAK;AAAA,IACjD,IACA,QAAQ,QAAQ,CAAC,CAAC;AAAA,EAC5B,CAAC;AAED,MAAI,QAAQ,gBAAiB,WAAU,QAAQ;AAE/C,6CAAwB,WAAW,UAAU,cAAc;AAE3D,uCAAkB,WAAW,aAAa;AAG1C;AAAA,IACI;AAAA,IACA,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,MAAM,EAAE,IAAK;AAAA,EACpD;AAEA,SAAO;AAAA,IACH,MAAM;AAAA,IACN,YAAY;AAAA,IACZ,aAAa;AAAA,EACjB;AACJ;AAQA,eAAsB,eAClB,QACA,SACA,SAIoB;AACpB,MAAI,KAAC,iCAAmB,OAAO;AAC3B,WAAO;AAAA,MACH,YAAY;AAAA,MACZ,aAAa;AAAA,MACb,gBAAgB,CAAC;AAAA,MACjB,UAAU,CAAC;AAAA,IACf;AAEJ,QAAM,SAA+B;AAAA,IACjC,UAAU;AAAA,MACN;AAAA,QACI,YAAY;AAAA,MAChB;AAAA,IACJ;AAAA,EACJ;AAEA,MAAI,SAAS,mBAAmB;AAC5B,WAAO,SAAS,KAAK;AAAA,MACjB,YAAY,QAAQ;AAAA,IACxB,CAAC;AAAA,EACL;AAGA,QAAM,EAAE,MAAM,aAAa,WAAW,IAAI,MAAM,OAAO,gBAAgB;AAAA,IACnE,OAAO;AAAA,IACP;AAAA,IACA,SAAS;AAAA,MACL,aAAa;AAAA,MACb,UAAU;AAAA,IACd;AAAA,IACA,GAAI,SAAS,cAAc,CAAC;AAAA,EAChC,CAAC;AAGD,QAAM,cAAc,MAAM,IAAI,CAAC,MAA0B;AACrD,UAAM,SAAS,EAAE,MAAM,SAAS,aAAa,eAAe,EAAE,KAAK,QAAQ,SAAS;AAEpF,WAAQ,QAAQ,MAAM,QAAQ,KAAK,QAAQ,MAAM,QAAQ;AAAA,EAE7D,CAAC;AAID,QAAM,eAAe,KAAK,OAAO,CAAC,MAAM,UAAU,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI;AAEtE,SAAO;AAAA,IACH;AAAA,IACA;AAAA,IACA,gBAAgB,aAAa,IAAI,CAAC,GAAG,SAAS;AAAA,MAC1C,YAAY,EAAE,SAAS;AAAA,MACvB,QAAQ,EAAE;AAAA,MACV,SAAS,EAAE;AAAA,MACX,UAAU,EAAE;AAAA,MACZ,SAAS,YAAY,GAAG;AAAA,IAC5B,EAAE;AAAA,IACF,UAAU;AAAA,EACd;AACJ;AAGA,eAAsB,oBAClB,QACA,SACA,eAC8B;AAC9B,QAAM,YAAY,MAAM,OAAO,sBAAsB;AAAA,IACjD,UAAU;AAAA,IACV,MAAM;AAAA,MACF,MAAM,sCAAsC,aAAa;AAAA,MACzD,OAAO;AAAA,QACH,aAAa;AAAA,MACjB;AAAA,IACJ;AAAA,EACJ,CAAC;AAED,MAAI,CAAC,UAAU,KAAM,QAAO;AAE5B,QAAM,SAAU,WAAW,MAAM,SAA8C,QAAQ,OACjF;AAEN,SAAO;AAAA,IACH,UAAU,UAAU,KAAK;AAAA,IACzB,MAAM;AAAA,IACN,WAAW,QAAQ;AAAA,IACnB,aAAa,QAAQ;AAAA,IACrB,WAAW,QAAQ,SAAS,QAAQ,IAAI;AAAA,IACxC,aAAa,QAAQ,SAAS,QAAQ;AAAA,EAC1C;AACJ;",
|
|
6
6
|
"names": ["import_utils"]
|
|
7
7
|
}
|
|
@@ -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 =
|
|
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 {
|
|
5
|
-
"mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKA,
|
|
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
|
}
|