@iota/kiosk 0.1.2 → 0.2.1
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 +20 -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
|
/**
|
|
@@ -1,17 +1,10 @@
|
|
|
1
|
-
var
|
|
2
|
-
|
|
3
|
-
throw TypeError("Cannot " + msg);
|
|
1
|
+
var __typeError = (msg) => {
|
|
2
|
+
throw TypeError(msg);
|
|
4
3
|
};
|
|
5
|
-
var
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
};
|
|
10
|
-
var __privateMethod = (obj, member, method) => {
|
|
11
|
-
__accessCheck(obj, member, "access private method");
|
|
12
|
-
return method;
|
|
13
|
-
};
|
|
14
|
-
var _validateInputs, validateInputs_fn, _setup, setup_fn;
|
|
4
|
+
var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
|
|
5
|
+
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);
|
|
6
|
+
var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
|
|
7
|
+
var _TransferPolicyTransaction_instances, validateInputs_fn, setup_fn;
|
|
15
8
|
import {
|
|
16
9
|
attachFloorPriceRuleTx,
|
|
17
10
|
attachKioskLockRuleTx,
|
|
@@ -26,17 +19,16 @@ import {
|
|
|
26
19
|
withdrawFromPolicy
|
|
27
20
|
} from "../tx/transfer-policy.js";
|
|
28
21
|
class TransferPolicyTransaction {
|
|
29
|
-
constructor({
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
__privateAdd(this,
|
|
22
|
+
constructor({
|
|
23
|
+
kioskClient,
|
|
24
|
+
transactionBlock,
|
|
25
|
+
transaction = transactionBlock,
|
|
26
|
+
cap
|
|
27
|
+
}) {
|
|
28
|
+
__privateAdd(this, _TransferPolicyTransaction_instances);
|
|
36
29
|
this.kioskClient = kioskClient;
|
|
37
|
-
this.
|
|
38
|
-
if (cap)
|
|
39
|
-
this.setCap(cap);
|
|
30
|
+
this.transaction = transaction;
|
|
31
|
+
if (cap) this.setCap(cap);
|
|
40
32
|
}
|
|
41
33
|
/**
|
|
42
34
|
* A function to create a new transfer policy.
|
|
@@ -61,8 +53,8 @@ class TransferPolicyTransaction {
|
|
|
61
53
|
if (policies.length > 0)
|
|
62
54
|
throw new Error("There's already transfer policy for this Type.");
|
|
63
55
|
}
|
|
64
|
-
const cap = createTransferPolicy(this.
|
|
65
|
-
this.
|
|
56
|
+
const cap = createTransferPolicy(this.transaction, type, publisher);
|
|
57
|
+
this.transaction.transferObjects([cap], this.transaction.pure.address(address));
|
|
66
58
|
}
|
|
67
59
|
/**
|
|
68
60
|
* A convenient function to create a Transfer Policy and attach some rules
|
|
@@ -83,11 +75,11 @@ class TransferPolicyTransaction {
|
|
|
83
75
|
throw new Error("There's already transfer policy for this Type.");
|
|
84
76
|
}
|
|
85
77
|
const [policy, policyCap] = createTransferPolicyWithoutSharing(
|
|
86
|
-
this.
|
|
78
|
+
this.transaction,
|
|
87
79
|
type,
|
|
88
80
|
publisher
|
|
89
81
|
);
|
|
90
|
-
__privateMethod(this,
|
|
82
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, setup_fn).call(this, policy, policyCap, type);
|
|
91
83
|
return this;
|
|
92
84
|
}
|
|
93
85
|
/**
|
|
@@ -101,14 +93,10 @@ class TransferPolicyTransaction {
|
|
|
101
93
|
throw new Error(
|
|
102
94
|
"This function can only be called after `transferPolicyManager.create`"
|
|
103
95
|
);
|
|
104
|
-
shareTransferPolicy(
|
|
105
|
-
|
|
106
|
-
this.type,
|
|
107
|
-
this.policy
|
|
108
|
-
);
|
|
109
|
-
this.transactionBlock.transferObjects(
|
|
96
|
+
shareTransferPolicy(this.transaction, this.type, this.policy);
|
|
97
|
+
this.transaction.transferObjects(
|
|
110
98
|
[this.policyCap],
|
|
111
|
-
this.
|
|
99
|
+
this.transaction.pure.address(address)
|
|
112
100
|
);
|
|
113
101
|
}
|
|
114
102
|
/**
|
|
@@ -117,7 +105,7 @@ class TransferPolicyTransaction {
|
|
|
117
105
|
* @param policyCapId The `TransferPolicyCap`
|
|
118
106
|
*/
|
|
119
107
|
setCap({ policyId, policyCapId, type }) {
|
|
120
|
-
return __privateMethod(this,
|
|
108
|
+
return __privateMethod(this, _TransferPolicyTransaction_instances, setup_fn).call(this, policyId, policyCapId, type);
|
|
121
109
|
}
|
|
122
110
|
/**
|
|
123
111
|
* Withdraw from the transfer policy's profits.
|
|
@@ -125,15 +113,15 @@ class TransferPolicyTransaction {
|
|
|
125
113
|
* @param amount (Optional) amount parameter. Will withdraw all profits if the amount is not specified.
|
|
126
114
|
*/
|
|
127
115
|
withdraw(address, amount) {
|
|
128
|
-
__privateMethod(this,
|
|
116
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
129
117
|
const coin = withdrawFromPolicy(
|
|
130
|
-
this.
|
|
118
|
+
this.transaction,
|
|
131
119
|
this.type,
|
|
132
120
|
this.policy,
|
|
133
121
|
this.policyCap,
|
|
134
122
|
amount
|
|
135
123
|
);
|
|
136
|
-
this.
|
|
124
|
+
this.transaction.transferObjects([coin], this.transaction.pure.address(address));
|
|
137
125
|
return this;
|
|
138
126
|
}
|
|
139
127
|
/**
|
|
@@ -144,12 +132,12 @@ class TransferPolicyTransaction {
|
|
|
144
132
|
* (but you should define at least one of them for the rule to make sense).
|
|
145
133
|
*
|
|
146
134
|
* @param percentageBps The royalty percentage in basis points. Use `percentageToBasisPoints` helper to convert from percentage [0,100].
|
|
147
|
-
* @param minAmount The minimum royalty amount per request in
|
|
135
|
+
* @param minAmount The minimum royalty amount per request in NANOS.
|
|
148
136
|
*/
|
|
149
137
|
addRoyaltyRule(percentageBps, minAmount) {
|
|
150
|
-
__privateMethod(this,
|
|
138
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
151
139
|
attachRoyaltyRuleTx(
|
|
152
|
-
this.
|
|
140
|
+
this.transaction,
|
|
153
141
|
this.type,
|
|
154
142
|
this.policy,
|
|
155
143
|
this.policyCap,
|
|
@@ -164,9 +152,9 @@ class TransferPolicyTransaction {
|
|
|
164
152
|
* This Rule forces buyer to lock the item in the kiosk, preserving strong royalties.
|
|
165
153
|
*/
|
|
166
154
|
addLockRule() {
|
|
167
|
-
__privateMethod(this,
|
|
155
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
168
156
|
attachKioskLockRuleTx(
|
|
169
|
-
this.
|
|
157
|
+
this.transaction,
|
|
170
158
|
this.type,
|
|
171
159
|
this.policy,
|
|
172
160
|
this.policyCap,
|
|
@@ -178,9 +166,9 @@ class TransferPolicyTransaction {
|
|
|
178
166
|
* Attaches the Personal Kiosk Rule, making a purchase valid only for `SoulBound` kiosks.
|
|
179
167
|
*/
|
|
180
168
|
addPersonalKioskRule() {
|
|
181
|
-
__privateMethod(this,
|
|
169
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
182
170
|
attachPersonalKioskRuleTx(
|
|
183
|
-
this.
|
|
171
|
+
this.transaction,
|
|
184
172
|
this.type,
|
|
185
173
|
this.policy,
|
|
186
174
|
this.policyCap,
|
|
@@ -190,12 +178,12 @@ class TransferPolicyTransaction {
|
|
|
190
178
|
}
|
|
191
179
|
/**
|
|
192
180
|
* A function to add the floor price rule to a transfer policy.
|
|
193
|
-
* @param minPrice The minimum price in
|
|
181
|
+
* @param minPrice The minimum price in NANOS.
|
|
194
182
|
*/
|
|
195
183
|
addFloorPriceRule(minPrice) {
|
|
196
|
-
__privateMethod(this,
|
|
184
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
197
185
|
attachFloorPriceRuleTx(
|
|
198
|
-
this.
|
|
186
|
+
this.transaction,
|
|
199
187
|
this.type,
|
|
200
188
|
this.policy,
|
|
201
189
|
this.policyCap,
|
|
@@ -210,9 +198,9 @@ class TransferPolicyTransaction {
|
|
|
210
198
|
* @param configType The Config Type
|
|
211
199
|
*/
|
|
212
200
|
removeRule({ ruleType, configType }) {
|
|
213
|
-
__privateMethod(this,
|
|
201
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
214
202
|
removeTransferPolicyRule(
|
|
215
|
-
this.
|
|
203
|
+
this.transaction,
|
|
216
204
|
this.type,
|
|
217
205
|
ruleType,
|
|
218
206
|
configType,
|
|
@@ -224,10 +212,10 @@ class TransferPolicyTransaction {
|
|
|
224
212
|
* Removes the lock rule.
|
|
225
213
|
*/
|
|
226
214
|
removeLockRule() {
|
|
227
|
-
__privateMethod(this,
|
|
215
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
228
216
|
const packageId = this.kioskClient.getRulePackageId("kioskLockRulePackageId");
|
|
229
217
|
removeTransferPolicyRule(
|
|
230
|
-
this.
|
|
218
|
+
this.transaction,
|
|
231
219
|
this.type,
|
|
232
220
|
`${packageId}::kiosk_lock_rule::Rule`,
|
|
233
221
|
`${packageId}::kiosk_lock_rule::Config`,
|
|
@@ -240,10 +228,10 @@ class TransferPolicyTransaction {
|
|
|
240
228
|
* Removes the Royalty rule
|
|
241
229
|
*/
|
|
242
230
|
removeRoyaltyRule() {
|
|
243
|
-
__privateMethod(this,
|
|
231
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
244
232
|
const packageId = this.kioskClient.getRulePackageId("royaltyRulePackageId");
|
|
245
233
|
removeTransferPolicyRule(
|
|
246
|
-
this.
|
|
234
|
+
this.transaction,
|
|
247
235
|
this.type,
|
|
248
236
|
`${packageId}::royalty_rule::Rule`,
|
|
249
237
|
`${packageId}::royalty_rule::Config`,
|
|
@@ -253,10 +241,10 @@ class TransferPolicyTransaction {
|
|
|
253
241
|
return this;
|
|
254
242
|
}
|
|
255
243
|
removePersonalKioskRule() {
|
|
256
|
-
__privateMethod(this,
|
|
244
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
257
245
|
const packageId = this.kioskClient.getRulePackageId("personalKioskRulePackageId");
|
|
258
246
|
removeTransferPolicyRule(
|
|
259
|
-
this.
|
|
247
|
+
this.transaction,
|
|
260
248
|
this.type,
|
|
261
249
|
`${packageId}::personal_kiosk_rule::Rule`,
|
|
262
250
|
`bool`,
|
|
@@ -266,10 +254,10 @@ class TransferPolicyTransaction {
|
|
|
266
254
|
return this;
|
|
267
255
|
}
|
|
268
256
|
removeFloorPriceRule() {
|
|
269
|
-
__privateMethod(this,
|
|
257
|
+
__privateMethod(this, _TransferPolicyTransaction_instances, validateInputs_fn).call(this);
|
|
270
258
|
const packageId = this.kioskClient.getRulePackageId("floorPriceRulePackageId");
|
|
271
259
|
removeTransferPolicyRule(
|
|
272
|
-
this.
|
|
260
|
+
this.transaction,
|
|
273
261
|
this.type,
|
|
274
262
|
`${packageId}::floor_price_rule::Rule`,
|
|
275
263
|
`${packageId}::floor_price_rule::Config`,
|
|
@@ -279,17 +267,16 @@ class TransferPolicyTransaction {
|
|
|
279
267
|
return this;
|
|
280
268
|
}
|
|
281
269
|
getPolicy() {
|
|
282
|
-
if (!this.policy)
|
|
283
|
-
throw new Error("Policy not set.");
|
|
270
|
+
if (!this.policy) throw new Error("Policy not set.");
|
|
284
271
|
return this.policy;
|
|
285
272
|
}
|
|
286
273
|
getPolicyCap() {
|
|
287
|
-
if (!this.policyCap)
|
|
288
|
-
throw new Error("Transfer Policy Cap not set.");
|
|
274
|
+
if (!this.policyCap) throw new Error("Transfer Policy Cap not set.");
|
|
289
275
|
return this.policyCap;
|
|
290
276
|
}
|
|
291
277
|
}
|
|
292
|
-
|
|
278
|
+
_TransferPolicyTransaction_instances = new WeakSet();
|
|
279
|
+
// Internal function that that the policy's Id + Cap + type have been set.
|
|
293
280
|
validateInputs_fn = function() {
|
|
294
281
|
const genericErrorMessage = `Please use 'setCap()' to setup the TransferPolicy.`;
|
|
295
282
|
if (!this.policy)
|
|
@@ -301,7 +288,9 @@ validateInputs_fn = function() {
|
|
|
301
288
|
`${genericErrorMessage} Missing: Transfer Policy object type (e.g. {packageId}::item::Item)`
|
|
302
289
|
);
|
|
303
290
|
};
|
|
304
|
-
|
|
291
|
+
/**
|
|
292
|
+
* Setup the state of the TransferPolicyTransaction.
|
|
293
|
+
*/
|
|
305
294
|
setup_fn = function(policyId, policyCap, type) {
|
|
306
295
|
this.policy = policyId;
|
|
307
296
|
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": "AAMA,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;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": "AAMA,SAAS,sBAAsB;AAC/B;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;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,OAAO,eAAe,CAAC,EACpE,OAAO,CAAC,YAAY,QAAQ,KAAK,EACjC,QAAQ,CAAC,YAAY,aAAa,QAAQ,KAA2B,CAAC;",
|
|
6
6
|
"names": ["rules"]
|
|
7
7
|
}
|
package/dist/esm/query/kiosk.js
CHANGED
|
@@ -25,8 +25,7 @@ async function fetchKiosk(client, kioskId, pagination, options) {
|
|
|
25
25
|
options.objectOptions || { showDisplay: true }
|
|
26
26
|
) : Promise.resolve([])
|
|
27
27
|
]);
|
|
28
|
-
if (options.withKioskFields)
|
|
29
|
-
kioskData.kiosk = kiosk;
|
|
28
|
+
if (options.withKioskFields) kioskData.kiosk = kiosk;
|
|
30
29
|
attachListingsAndPrices(kioskData, listings, listingObjects);
|
|
31
30
|
attachLockedItems(kioskData, lockedItemIds);
|
|
32
31
|
attachObjects(
|
|
@@ -96,8 +95,7 @@ async function fetchKioskExtension(client, kioskId, extensionType) {
|
|
|
96
95
|
}
|
|
97
96
|
}
|
|
98
97
|
});
|
|
99
|
-
if (!extension.data)
|
|
100
|
-
return null;
|
|
98
|
+
if (!extension.data) return null;
|
|
101
99
|
const fields = extension?.data?.content?.fields?.value?.fields;
|
|
102
100
|
return {
|
|
103
101
|
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": "AAWA,SAAS,0BAA0B;AASnC,SAAS,uBAAuB;AAChC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,EACA;AAAA,OACG;AAEP,eAAsB,WAClB,QACA,SACA,YACA,SACuB;AAKvB,QAAM,OAAO,MAAM,oBAAoB,QAAQ,SAAS,UAAU;AAElE,QAAM,WAA2B,CAAC;AAClC,QAAM,gBAA0B,CAAC;AAGjC,QAAM,YAAY,iBAAiB,MAAM,UAAU,eAAe,OAAO;AAKzE,QAAM,CAAC,OAAO,gBAAgB,KAAK,IAAI,MAAM,QAAQ,IAAI;AAAA,IACrD,QAAQ,kBAAkB,eAAe,QAAQ,OAAO,IAAI,QAAQ,QAAQ,MAAS;AAAA,IACrF,QAAQ,oBACF,cAAc,QAAQ,UAAU,YAAY;AAAA,MACxC,aAAa;AAAA,IACjB,CAAC,IACD,QAAQ,QAAQ,CAAC,CAAC;AAAA,IACxB,QAAQ,cACF;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": "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",
|
|
6
6
|
"names": []
|
|
7
7
|
}
|
|
@@ -1,5 +1,6 @@
|
|
|
1
|
-
import { isValidIotaAddress } from "@iota/iota-sdk/utils";
|
|
2
|
-
import
|
|
1
|
+
import { fromB64, isValidIotaAddress } from "@iota/iota-sdk/utils";
|
|
2
|
+
import "../bcs.js";
|
|
3
|
+
import { TransferPolicyType } from "../bcs.js";
|
|
3
4
|
import {
|
|
4
5
|
TRANSFER_POLICY_CAP_TYPE,
|
|
5
6
|
TRANSFER_POLICY_CREATED_EVENT,
|
|
@@ -23,7 +24,7 @@ async function queryTransferPolicy(client, type) {
|
|
|
23
24
|
`Invalid policy: ${policy?.objectId}, expected object, got package`
|
|
24
25
|
);
|
|
25
26
|
}
|
|
26
|
-
const parsed =
|
|
27
|
+
const parsed = TransferPolicyType.parse(fromB64(policy.bcs.bcsBytes));
|
|
27
28
|
return {
|
|
28
29
|
id: policy?.objectId,
|
|
29
30
|
type: `${TRANSFER_POLICY_TYPE}<${type}>`,
|
|
@@ -34,8 +35,7 @@ async function queryTransferPolicy(client, type) {
|
|
|
34
35
|
});
|
|
35
36
|
}
|
|
36
37
|
async function queryTransferPolicyCapsByType(client, address, type) {
|
|
37
|
-
if (!isValidIotaAddress(address))
|
|
38
|
-
return [];
|
|
38
|
+
if (!isValidIotaAddress(address)) return [];
|
|
39
39
|
const filter = {
|
|
40
40
|
MatchAll: [
|
|
41
41
|
{
|
|
@@ -51,8 +51,7 @@ async function queryTransferPolicyCapsByType(client, address, type) {
|
|
|
51
51
|
return data.map((item) => parseTransferPolicyCapObject(item)).filter((item) => !!item);
|
|
52
52
|
}
|
|
53
53
|
async function queryOwnedTransferPolicies(client, address) {
|
|
54
|
-
if (!isValidIotaAddress(address))
|
|
55
|
-
return;
|
|
54
|
+
if (!isValidIotaAddress(address)) return;
|
|
56
55
|
const filter = {
|
|
57
56
|
MatchAll: [
|
|
58
57
|
{
|
|
@@ -67,8 +66,7 @@ async function queryOwnedTransferPolicies(client, address) {
|
|
|
67
66
|
const policies = [];
|
|
68
67
|
for (const item of data) {
|
|
69
68
|
const data2 = parseTransferPolicyCapObject(item);
|
|
70
|
-
if (data2)
|
|
71
|
-
policies.push(data2);
|
|
69
|
+
if (data2) policies.push(data2);
|
|
72
70
|
}
|
|
73
71
|
return policies;
|
|
74
72
|
}
|
|
@@ -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": "AAKA,SAAS,0BAA0B;
|
|
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": "AAKA,SAAS,SAAS,0BAA0B;AAE5C,OAAO;AAEP,SAAS,0BAA0B;AAEnC;AAAA,EACI;AAAA,EACA;AAAA,EACA;AAAA,OACG;AACP,SAAS,oBAAoB,oCAAoC;AAWjE,eAAsB,oBAClB,QACA,MACyB;AAEzB,QAAM,EAAE,KAAK,IAAI,MAAM,OAAO,YAAY;AAAA,IACtC,OAAO;AAAA,MACH,eAAe,GAAG,6BAA6B,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,mBAAmB,MAAM,QAAQ,OAAO,IAAI,QAAQ,CAAC;AAEpE,WAAO;AAAA,MACH,IAAI,QAAQ;AAAA,MACZ,MAAM,GAAG,oBAAoB,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,CAAC,mBAAmB,OAAO,EAAG,QAAO,CAAC;AAE1C,QAAM,SAAS;AAAA,IACX,UAAU;AAAA,MACN;AAAA,QACI,YAAY,GAAG,wBAAwB,IAAI,IAAI;AAAA,MACnD;AAAA,IACJ;AAAA,EACJ;AAGA,QAAM,OAAO,MAAM,mBAAmB;AAAA,IAClC;AAAA,IACA;AAAA,IACA,OAAO;AAAA,EACX,CAAC;AAED,SAAO,KACF,IAAI,CAAC,SAAS,6BAA6B,IAAI,CAAC,EAChD,OAAO,CAAC,SAAS,CAAC,CAAC,IAAI;AAChC;AASA,eAAsB,2BAClB,QACA,SACwC;AACxC,MAAI,CAAC,mBAAmB,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,MAAM,mBAAmB,EAAE,QAAQ,OAAO,SAAS,OAAO,CAAC;AAExE,QAAM,WAAgC,CAAC;AAEvC,aAAW,QAAQ,MAAM;AACrB,UAAMA,QAAO,6BAA6B,IAAI;AAC9C,QAAIA,MAAM,UAAS,KAAKA,KAAI;AAAA,EAChC;AAEA,SAAO;AACX;",
|
|
6
6
|
"names": ["data"]
|
|
7
7
|
}
|