@haneullabs/haneulns 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (70) hide show
  1. package/CHANGELOG.md +505 -0
  2. package/README.md +9 -0
  3. package/dist/cjs/constants.d.ts +11 -0
  4. package/dist/cjs/constants.js +120 -0
  5. package/dist/cjs/constants.js.map +7 -0
  6. package/dist/cjs/haneulns-client.d.ts +40 -0
  7. package/dist/cjs/haneulns-client.js +261 -0
  8. package/dist/cjs/haneulns-client.js.map +7 -0
  9. package/dist/cjs/haneulns-transaction.d.ts +105 -0
  10. package/dist/cjs/haneulns-transaction.js +465 -0
  11. package/dist/cjs/haneulns-transaction.js.map +7 -0
  12. package/dist/cjs/helpers.d.ts +18 -0
  13. package/dist/cjs/helpers.js +63 -0
  14. package/dist/cjs/helpers.js.map +7 -0
  15. package/dist/cjs/index.d.ts +5 -0
  16. package/dist/cjs/index.js +39 -0
  17. package/dist/cjs/index.js.map +7 -0
  18. package/dist/cjs/package.json +5 -0
  19. package/dist/cjs/pyth/PriceServiceConnection.d.ts +26 -0
  20. package/dist/cjs/pyth/PriceServiceConnection.js +68 -0
  21. package/dist/cjs/pyth/PriceServiceConnection.js.map +7 -0
  22. package/dist/cjs/pyth/pyth-helpers.d.ts +7 -0
  23. package/dist/cjs/pyth/pyth-helpers.js +36 -0
  24. package/dist/cjs/pyth/pyth-helpers.js.map +7 -0
  25. package/dist/cjs/pyth/pyth.d.ts +66 -0
  26. package/dist/cjs/pyth/pyth.js +270 -0
  27. package/dist/cjs/pyth/pyth.js.map +7 -0
  28. package/dist/cjs/types.d.ts +89 -0
  29. package/dist/cjs/types.js +17 -0
  30. package/dist/cjs/types.js.map +7 -0
  31. package/dist/esm/constants.d.ts +11 -0
  32. package/dist/esm/constants.js +100 -0
  33. package/dist/esm/constants.js.map +7 -0
  34. package/dist/esm/haneulns-client.d.ts +40 -0
  35. package/dist/esm/haneulns-client.js +249 -0
  36. package/dist/esm/haneulns-client.js.map +7 -0
  37. package/dist/esm/haneulns-transaction.d.ts +105 -0
  38. package/dist/esm/haneulns-transaction.js +445 -0
  39. package/dist/esm/haneulns-transaction.js.map +7 -0
  40. package/dist/esm/helpers.d.ts +18 -0
  41. package/dist/esm/helpers.js +43 -0
  42. package/dist/esm/helpers.js.map +7 -0
  43. package/dist/esm/index.d.ts +5 -0
  44. package/dist/esm/index.js +28 -0
  45. package/dist/esm/index.js.map +7 -0
  46. package/dist/esm/package.json +5 -0
  47. package/dist/esm/pyth/PriceServiceConnection.d.ts +26 -0
  48. package/dist/esm/pyth/PriceServiceConnection.js +38 -0
  49. package/dist/esm/pyth/PriceServiceConnection.js.map +7 -0
  50. package/dist/esm/pyth/pyth-helpers.d.ts +7 -0
  51. package/dist/esm/pyth/pyth-helpers.js +16 -0
  52. package/dist/esm/pyth/pyth-helpers.js.map +7 -0
  53. package/dist/esm/pyth/pyth.d.ts +66 -0
  54. package/dist/esm/pyth/pyth.js +250 -0
  55. package/dist/esm/pyth/pyth.js.map +7 -0
  56. package/dist/esm/types.d.ts +89 -0
  57. package/dist/esm/types.js +1 -0
  58. package/dist/esm/types.js.map +7 -0
  59. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  60. package/dist/tsconfig.tsbuildinfo +1 -0
  61. package/package.json +63 -0
  62. package/src/constants.ts +106 -0
  63. package/src/haneulns-client.ts +368 -0
  64. package/src/haneulns-transaction.ts +555 -0
  65. package/src/helpers.ts +52 -0
  66. package/src/index.ts +16 -0
  67. package/src/pyth/PriceServiceConnection.ts +48 -0
  68. package/src/pyth/pyth-helpers.ts +23 -0
  69. package/src/pyth/pyth.ts +312 -0
  70. package/src/types.ts +111 -0
@@ -0,0 +1,465 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var haneulns_transaction_exports = {};
20
+ __export(haneulns_transaction_exports, {
21
+ HaneulnsTransaction: () => HaneulnsTransaction
22
+ });
23
+ module.exports = __toCommonJS(haneulns_transaction_exports);
24
+ var import_bcs = require("@haneullabs/haneul/bcs");
25
+ var import_utils = require("@haneullabs/haneul/utils");
26
+ var import_constants = require("./constants.js");
27
+ var import_helpers = require("./helpers.js");
28
+ class HaneulnsTransaction {
29
+ constructor(client, transaction) {
30
+ this.haneulnsClient = client;
31
+ this.transaction = transaction;
32
+ }
33
+ /**
34
+ * Registers a domain for a number of years.
35
+ */
36
+ register(params) {
37
+ if (params.couponCode && params.discountInfo) {
38
+ throw new Error("Cannot apply both coupon and discount NFT");
39
+ }
40
+ const paymentIntent = this.initRegistration(params.domain);
41
+ if (params.couponCode) {
42
+ this.applyCoupon(paymentIntent, params.couponCode);
43
+ }
44
+ if (params.discountInfo) {
45
+ this.applyDiscount(paymentIntent, params.discountInfo);
46
+ }
47
+ const priceAfterDiscount = this.calculatePriceAfterDiscount(
48
+ paymentIntent,
49
+ params.coinConfig.type
50
+ );
51
+ const receipt = this.generateReceipt({
52
+ paymentIntent,
53
+ priceAfterDiscount,
54
+ coinConfig: params.coinConfig,
55
+ coin: params.coin,
56
+ maxAmount: params.maxAmount,
57
+ priceInfoObjectId: params.priceInfoObjectId
58
+ });
59
+ const nft = this.finalizeRegister(receipt);
60
+ if (params.years > 1) {
61
+ this.renew({
62
+ nft,
63
+ years: params.years - 1,
64
+ coinConfig: params.coinConfig,
65
+ coin: params.coin,
66
+ couponCode: params.couponCode,
67
+ discountInfo: params.discountInfo,
68
+ maxAmount: params.maxAmount,
69
+ priceInfoObjectId: params.priceInfoObjectId
70
+ });
71
+ }
72
+ return nft;
73
+ }
74
+ /**
75
+ * Renews an NFT for a number of years.
76
+ */
77
+ renew(params) {
78
+ if (params.couponCode && params.discountInfo) {
79
+ throw new Error("Cannot apply both coupon and discount NFT");
80
+ }
81
+ const paymentIntent = this.initRenewal(params.nft, params.years);
82
+ if (params.couponCode) {
83
+ this.applyCoupon(paymentIntent, params.couponCode);
84
+ }
85
+ if (params.discountInfo) {
86
+ this.applyDiscount(paymentIntent, params.discountInfo);
87
+ }
88
+ const priceAfterDiscount = this.calculatePriceAfterDiscount(
89
+ paymentIntent,
90
+ params.coinConfig.type
91
+ );
92
+ const receipt = this.generateReceipt({
93
+ paymentIntent,
94
+ priceAfterDiscount,
95
+ coinConfig: params.coinConfig,
96
+ coin: params.coin,
97
+ maxAmount: params.maxAmount,
98
+ priceInfoObjectId: params.priceInfoObjectId
99
+ });
100
+ this.finalizeRenew(receipt, params.nft);
101
+ }
102
+ initRegistration(domain) {
103
+ const config = this.haneulnsClient.config;
104
+ return this.transaction.moveCall({
105
+ target: `${config.packageId}::payment::init_registration`,
106
+ arguments: [this.transaction.object(config.haneulns), this.transaction.pure.string(domain)]
107
+ });
108
+ }
109
+ initRenewal(nft, years) {
110
+ const config = this.haneulnsClient.config;
111
+ return this.transaction.moveCall({
112
+ target: `${config.packageId}::payment::init_renewal`,
113
+ arguments: [
114
+ this.transaction.object(config.haneulns),
115
+ this.transaction.object(nft),
116
+ this.transaction.pure.u8(years)
117
+ ]
118
+ });
119
+ }
120
+ calculatePrice(baseAmount, paymentType, priceInfoObjectId) {
121
+ const config = this.haneulnsClient.config;
122
+ return this.transaction.moveCall({
123
+ target: `${config.payments.packageId}::payments::calculate_price`,
124
+ arguments: [
125
+ this.transaction.object(config.haneulns),
126
+ baseAmount,
127
+ this.transaction.object.clock(),
128
+ this.transaction.object(priceInfoObjectId)
129
+ ],
130
+ typeArguments: [paymentType]
131
+ });
132
+ }
133
+ handleBasePayment(paymentIntent, payment, paymentType) {
134
+ const config = this.haneulnsClient.config;
135
+ return this.transaction.moveCall({
136
+ target: `${config.payments.packageId}::payments::handle_base_payment`,
137
+ arguments: [
138
+ this.transaction.object(config.haneulns),
139
+ this.transaction.object(config.bbb.vault),
140
+ paymentIntent,
141
+ payment
142
+ ],
143
+ typeArguments: [paymentType]
144
+ });
145
+ }
146
+ handlePayment(paymentIntent, payment, paymentType, priceInfoObjectId, maxAmount = import_constants.MAX_U64) {
147
+ const config = this.haneulnsClient.config;
148
+ return this.transaction.moveCall({
149
+ target: `${config.payments.packageId}::payments::handle_payment`,
150
+ arguments: [
151
+ this.transaction.object(config.haneulns),
152
+ this.transaction.object(config.bbb.vault),
153
+ paymentIntent,
154
+ payment,
155
+ this.transaction.object.clock(),
156
+ this.transaction.object(priceInfoObjectId),
157
+ this.transaction.pure.u64(maxAmount)
158
+ ],
159
+ typeArguments: [paymentType]
160
+ });
161
+ }
162
+ finalizeRegister(receipt) {
163
+ const config = this.haneulnsClient.config;
164
+ return this.transaction.moveCall({
165
+ target: `${config.packageId}::payment::register`,
166
+ arguments: [receipt, this.transaction.object(config.haneulns), this.transaction.object.clock()]
167
+ });
168
+ }
169
+ finalizeRenew(receipt, nft) {
170
+ const config = this.haneulnsClient.config;
171
+ return this.transaction.moveCall({
172
+ target: `${config.packageId}::payment::renew`,
173
+ arguments: [
174
+ receipt,
175
+ this.transaction.object(config.haneulns),
176
+ this.transaction.object(nft),
177
+ this.transaction.object.clock()
178
+ ]
179
+ });
180
+ }
181
+ calculatePriceAfterDiscount(paymentIntent, paymentType) {
182
+ const config = this.haneulnsClient.config;
183
+ return this.transaction.moveCall({
184
+ target: `${config.payments.packageId}::payments::calculate_price_after_discount`,
185
+ arguments: [this.transaction.object(config.haneulns), paymentIntent],
186
+ typeArguments: [paymentType]
187
+ });
188
+ }
189
+ generateReceipt(params) {
190
+ const baseAssetPurchase = params.coinConfig.feed === "";
191
+ if (baseAssetPurchase) {
192
+ const payment = params.coin ? this.transaction.splitCoins(this.transaction.object(params.coin), [
193
+ params.priceAfterDiscount
194
+ ]) : (0, import_helpers.zeroCoin)(this.transaction, params.coinConfig.type);
195
+ const receipt = this.handleBasePayment(params.paymentIntent, payment, params.coinConfig.type);
196
+ return receipt;
197
+ } else {
198
+ const priceInfoObjectId = params.priceInfoObjectId;
199
+ if (!priceInfoObjectId)
200
+ throw new Error("Price info object ID is required for non-base asset purchases");
201
+ const price = this.calculatePrice(
202
+ params.priceAfterDiscount,
203
+ params.coinConfig.type,
204
+ priceInfoObjectId
205
+ );
206
+ if (!params.coin) throw new Error("coin input is required");
207
+ const payment = this.transaction.splitCoins(this.transaction.object(params.coin), [price]);
208
+ const receipt = this.handlePayment(
209
+ params.paymentIntent,
210
+ payment,
211
+ params.coinConfig.type,
212
+ priceInfoObjectId,
213
+ params.maxAmount
214
+ );
215
+ return receipt;
216
+ }
217
+ }
218
+ /**
219
+ * Applies a coupon to the payment intent.
220
+ */
221
+ applyCoupon(intent, couponCode) {
222
+ const config = this.haneulnsClient.config;
223
+ return this.transaction.moveCall({
224
+ target: `${config.coupons.packageId}::coupon_house::apply_coupon`,
225
+ arguments: [
226
+ this.transaction.object(config.haneulns),
227
+ intent,
228
+ this.transaction.pure.string(couponCode),
229
+ this.transaction.object.clock()
230
+ ]
231
+ });
232
+ }
233
+ /**
234
+ * Applies a discount to the payment intent.
235
+ */
236
+ applyDiscount(intent, discountInfo) {
237
+ const config = this.haneulnsClient.config;
238
+ if (discountInfo.isFreeClaim) {
239
+ this.transaction.moveCall({
240
+ target: `${config.discountsPackage.packageId}::free_claims::free_claim`,
241
+ arguments: [
242
+ this.transaction.object(config.discountsPackage.discountHouseId),
243
+ this.transaction.object(config.haneulns),
244
+ intent,
245
+ this.transaction.object(discountInfo.discountNft)
246
+ ],
247
+ typeArguments: [discountInfo.type]
248
+ });
249
+ } else {
250
+ this.transaction.moveCall({
251
+ target: `${config.discountsPackage.packageId}::discounts::apply_percentage_discount`,
252
+ arguments: [
253
+ this.transaction.object(config.discountsPackage.discountHouseId),
254
+ intent,
255
+ this.transaction.object(config.haneulns),
256
+ this.transaction.object(discountInfo.discountNft)
257
+ ],
258
+ typeArguments: [discountInfo.type]
259
+ });
260
+ }
261
+ }
262
+ /**
263
+ * Creates a subdomain.
264
+ */
265
+ createSubName({
266
+ parentNft,
267
+ name,
268
+ expirationTimestampMs,
269
+ allowChildCreation,
270
+ allowTimeExtension
271
+ }) {
272
+ if (!(0, import_utils.isValidHaneulNSName)(name)) throw new Error("Invalid HaneulNS name");
273
+ const isParentSubdomain = (0, import_helpers.isNestedSubName)(name);
274
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
275
+ if (!this.haneulnsClient.config.subNamesPackageId)
276
+ throw new Error("Subnames package ID not found");
277
+ if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
278
+ throw new Error("Subnames proxy package ID not found");
279
+ const subNft = this.transaction.moveCall({
280
+ target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new`,
281
+ arguments: [
282
+ this.transaction.object(this.haneulnsClient.config.haneulns),
283
+ this.transaction.object(parentNft),
284
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID),
285
+ this.transaction.pure.string((0, import_utils.normalizeHaneulNSName)(name, "dot")),
286
+ this.transaction.pure.u64(expirationTimestampMs),
287
+ this.transaction.pure.bool(!!allowChildCreation),
288
+ this.transaction.pure.bool(!!allowTimeExtension)
289
+ ]
290
+ });
291
+ return subNft;
292
+ }
293
+ /**
294
+ * Builds the PTB to create a leaf subdomain.
295
+ * Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.
296
+ * Can be passed in as an ID or a TransactionArgument.
297
+ */
298
+ createLeafSubName({
299
+ parentNft,
300
+ name,
301
+ targetAddress
302
+ }) {
303
+ if (!(0, import_utils.isValidHaneulNSName)(name)) throw new Error("Invalid HaneulNS name");
304
+ const isParentSubdomain = (0, import_helpers.isNestedSubName)(name);
305
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
306
+ if (!this.haneulnsClient.config.subNamesPackageId)
307
+ throw new Error("Subnames package ID not found");
308
+ if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
309
+ throw new Error("Subnames proxy package ID not found");
310
+ this.transaction.moveCall({
311
+ target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new_leaf` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new_leaf`,
312
+ arguments: [
313
+ this.transaction.object(this.haneulnsClient.config.haneulns),
314
+ this.transaction.object(parentNft),
315
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID),
316
+ this.transaction.pure.string((0, import_utils.normalizeHaneulNSName)(name, "dot")),
317
+ this.transaction.pure.address(targetAddress)
318
+ ]
319
+ });
320
+ }
321
+ /**
322
+ * Removes a leaf subname.
323
+ */
324
+ removeLeafSubName({ parentNft, name }) {
325
+ if (!(0, import_utils.isValidHaneulNSName)(name)) throw new Error("Invalid HaneulNS name");
326
+ const isParentSubdomain = (0, import_helpers.isNestedSubName)(name);
327
+ if (!(0, import_helpers.isSubName)(name)) throw new Error("This can only be invoked for subnames");
328
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
329
+ if (!this.haneulnsClient.config.subNamesPackageId)
330
+ throw new Error("Subnames package ID not found");
331
+ if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
332
+ throw new Error("Subnames proxy package ID not found");
333
+ this.transaction.moveCall({
334
+ target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::remove_leaf` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::remove_leaf`,
335
+ arguments: [
336
+ this.transaction.object(this.haneulnsClient.config.haneulns),
337
+ this.transaction.object(parentNft),
338
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID),
339
+ this.transaction.pure.string((0, import_utils.normalizeHaneulNSName)(name, "dot"))
340
+ ]
341
+ });
342
+ }
343
+ /**
344
+ * Sets the target address of an NFT.
345
+ */
346
+ setTargetAddress({
347
+ nft,
348
+ // Can be string or argument
349
+ address,
350
+ isSubname
351
+ }) {
352
+ if (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
353
+ throw new Error("Subnames proxy package ID not found");
354
+ this.transaction.moveCall({
355
+ target: isSubname ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_target_address` : `${this.haneulnsClient.config.packageId}::controller::set_target_address`,
356
+ arguments: [
357
+ this.transaction.object(this.haneulnsClient.config.haneulns),
358
+ this.transaction.object(nft),
359
+ this.transaction.pure(import_bcs.bcs.option(import_bcs.bcs.Address).serialize(address).toBytes()),
360
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID)
361
+ ]
362
+ });
363
+ }
364
+ /**
365
+ * Sets a default name for the user.
366
+ */
367
+ setDefault(name) {
368
+ if (!(0, import_utils.isValidHaneulNSName)(name)) throw new Error("Invalid HaneulNS name");
369
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
370
+ this.transaction.moveCall({
371
+ target: `${this.haneulnsClient.config.packageId}::controller::set_reverse_lookup`,
372
+ arguments: [
373
+ this.transaction.object(this.haneulnsClient.config.haneulns),
374
+ this.transaction.pure.string((0, import_utils.normalizeHaneulNSName)(name, "dot"))
375
+ ]
376
+ });
377
+ }
378
+ /**
379
+ * Edits the setup of a subname.
380
+ */
381
+ editSetup({
382
+ parentNft,
383
+ name,
384
+ allowChildCreation,
385
+ allowTimeExtension
386
+ }) {
387
+ if (!(0, import_utils.isValidHaneulNSName)(name)) throw new Error("Invalid HaneulNS name");
388
+ const isParentSubdomain = (0, import_helpers.isNestedSubName)(name);
389
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
390
+ if (!isParentSubdomain && !this.haneulnsClient.config.subNamesPackageId)
391
+ throw new Error("Subnames package ID not found");
392
+ if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
393
+ throw new Error("Subnames proxy package ID not found");
394
+ this.transaction.moveCall({
395
+ target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::edit_setup` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::edit_setup`,
396
+ arguments: [
397
+ this.transaction.object(this.haneulnsClient.config.haneulns),
398
+ this.transaction.object(parentNft),
399
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID),
400
+ this.transaction.pure.string((0, import_utils.normalizeHaneulNSName)(name, "dot")),
401
+ this.transaction.pure.bool(!!allowChildCreation),
402
+ this.transaction.pure.bool(!!allowTimeExtension)
403
+ ]
404
+ });
405
+ }
406
+ /**
407
+ * Extends the expiration of a subname.
408
+ */
409
+ extendExpiration({
410
+ nft,
411
+ expirationTimestampMs
412
+ }) {
413
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
414
+ if (!this.haneulnsClient.config.subNamesPackageId)
415
+ throw new Error("Subnames package ID not found");
416
+ this.transaction.moveCall({
417
+ target: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::extend_expiration`,
418
+ arguments: [
419
+ this.transaction.object(this.haneulnsClient.config.haneulns),
420
+ this.transaction.object(nft),
421
+ this.transaction.pure.u64(expirationTimestampMs)
422
+ ]
423
+ });
424
+ }
425
+ /**
426
+ * Sets the user data of an NFT.
427
+ */
428
+ setUserData({
429
+ nft,
430
+ value,
431
+ key,
432
+ isSubname
433
+ }) {
434
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
435
+ if (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
436
+ throw new Error("Subnames proxy package ID not found");
437
+ if (!Object.values(import_constants.ALLOWED_METADATA).some((x) => x === key)) throw new Error("Invalid key");
438
+ this.transaction.moveCall({
439
+ target: isSubname ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_user_data` : `${this.haneulnsClient.config.packageId}::controller::set_user_data`,
440
+ arguments: [
441
+ this.transaction.object(this.haneulnsClient.config.haneulns),
442
+ this.transaction.object(nft),
443
+ this.transaction.pure.string(key),
444
+ this.transaction.pure.string(value),
445
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID)
446
+ ]
447
+ });
448
+ }
449
+ /**
450
+ * Burns an expired NFT to collect storage rebates.
451
+ */
452
+ burnExpired({ nft, isSubname }) {
453
+ if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
454
+ this.transaction.moveCall({
455
+ target: `${this.haneulnsClient.config.packageId}::controller::${isSubname ? "burn_expired_subname" : "burn_expired"}`,
456
+ // Update this
457
+ arguments: [
458
+ this.transaction.object(this.haneulnsClient.config.haneulns),
459
+ this.transaction.object(nft),
460
+ this.transaction.object(import_utils.HANEUL_CLOCK_OBJECT_ID)
461
+ ]
462
+ });
463
+ }
464
+ }
465
+ //# sourceMappingURL=haneulns-transaction.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/haneulns-transaction.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport type {\n\tTransaction,\n\tTransactionObjectArgument,\n\tTransactionObjectInput,\n} from '@haneullabs/haneul/transactions';\nimport { isValidHaneulNSName, normalizeHaneulNSName, HANEUL_CLOCK_OBJECT_ID } from '@haneullabs/haneul/utils';\n\nimport { ALLOWED_METADATA, MAX_U64 } from './constants.js';\nimport { isNestedSubName, isSubName, zeroCoin } from './helpers.js';\nimport type { HaneulnsClient } from './haneulns-client.js';\nimport type { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from './types.js';\n\nexport class HaneulnsTransaction {\n\thaneulnsClient: HaneulnsClient;\n\ttransaction: Transaction;\n\n\tconstructor(client: HaneulnsClient, transaction: Transaction) {\n\t\tthis.haneulnsClient = client;\n\t\tthis.transaction = transaction;\n\t}\n\n\t/**\n\t * Registers a domain for a number of years.\n\t */\n\tregister(params: RegistrationParams): TransactionObjectArgument {\n\t\tif (params.couponCode && params.discountInfo) {\n\t\t\tthrow new Error('Cannot apply both coupon and discount NFT');\n\t\t}\n\n\t\tconst paymentIntent = this.initRegistration(params.domain);\n\t\tif (params.couponCode) {\n\t\t\tthis.applyCoupon(paymentIntent, params.couponCode);\n\t\t}\n\t\tif (params.discountInfo) {\n\t\t\tthis.applyDiscount(paymentIntent, params.discountInfo);\n\t\t}\n\t\tconst priceAfterDiscount = this.calculatePriceAfterDiscount(\n\t\t\tpaymentIntent,\n\t\t\tparams.coinConfig.type,\n\t\t);\n\t\tconst receipt = this.generateReceipt({\n\t\t\tpaymentIntent,\n\t\t\tpriceAfterDiscount,\n\t\t\tcoinConfig: params.coinConfig,\n\t\t\tcoin: params.coin,\n\t\t\tmaxAmount: params.maxAmount,\n\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t});\n\t\tconst nft = this.finalizeRegister(receipt);\n\n\t\tif (params.years > 1) {\n\t\t\tthis.renew({\n\t\t\t\tnft,\n\t\t\t\tyears: params.years - 1,\n\t\t\t\tcoinConfig: params.coinConfig,\n\t\t\t\tcoin: params.coin,\n\t\t\t\tcouponCode: params.couponCode,\n\t\t\t\tdiscountInfo: params.discountInfo,\n\t\t\t\tmaxAmount: params.maxAmount,\n\t\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t\t});\n\t\t}\n\n\t\treturn nft as TransactionObjectArgument;\n\t}\n\n\t/**\n\t * Renews an NFT for a number of years.\n\t */\n\trenew(params: RenewalParams): void {\n\t\tif (params.couponCode && params.discountInfo) {\n\t\t\tthrow new Error('Cannot apply both coupon and discount NFT');\n\t\t}\n\n\t\tconst paymentIntent = this.initRenewal(params.nft, params.years);\n\t\tif (params.couponCode) {\n\t\t\tthis.applyCoupon(paymentIntent, params.couponCode);\n\t\t}\n\t\tif (params.discountInfo) {\n\t\t\tthis.applyDiscount(paymentIntent, params.discountInfo);\n\t\t}\n\t\tconst priceAfterDiscount = this.calculatePriceAfterDiscount(\n\t\t\tpaymentIntent,\n\t\t\tparams.coinConfig.type,\n\t\t);\n\t\tconst receipt = this.generateReceipt({\n\t\t\tpaymentIntent,\n\t\t\tpriceAfterDiscount,\n\t\t\tcoinConfig: params.coinConfig,\n\t\t\tcoin: params.coin,\n\t\t\tmaxAmount: params.maxAmount,\n\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t});\n\t\tthis.finalizeRenew(receipt, params.nft);\n\t}\n\n\tinitRegistration(domain: string): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::init_registration`,\n\t\t\targuments: [this.transaction.object(config.haneulns), this.transaction.pure.string(domain)],\n\t\t});\n\t}\n\n\tinitRenewal(nft: TransactionObjectInput, years: number): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::init_renewal`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.u8(years),\n\t\t\t],\n\t\t});\n\t}\n\n\tcalculatePrice(\n\t\tbaseAmount: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t\tpriceInfoObjectId: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::calculate_price`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tbaseAmount,\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t\tthis.transaction.object(priceInfoObjectId),\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\thandleBasePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpayment: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::handle_base_payment`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(config.bbb.vault),\n\t\t\t\tpaymentIntent,\n\t\t\t\tpayment,\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\thandlePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpayment: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t\tpriceInfoObjectId: string,\n\t\tmaxAmount: bigint = MAX_U64,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::handle_payment`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(config.bbb.vault),\n\t\t\t\tpaymentIntent,\n\t\t\t\tpayment,\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t\tthis.transaction.object(priceInfoObjectId),\n\t\t\t\tthis.transaction.pure.u64(maxAmount),\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\tfinalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::register`,\n\t\t\targuments: [receipt, this.transaction.object(config.haneulns), this.transaction.object.clock()],\n\t\t});\n\t}\n\n\tfinalizeRenew(\n\t\treceipt: TransactionObjectArgument,\n\t\tnft: TransactionObjectInput,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::renew`,\n\t\t\targuments: [\n\t\t\t\treceipt,\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t],\n\t\t});\n\t}\n\n\tcalculatePriceAfterDiscount(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::calculate_price_after_discount`,\n\t\t\targuments: [this.transaction.object(config.haneulns), paymentIntent],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\tgenerateReceipt(params: ReceiptParams): TransactionObjectArgument {\n\t\tconst baseAssetPurchase = params.coinConfig.feed === '';\n\t\tif (baseAssetPurchase) {\n\t\t\tconst payment = params.coin\n\t\t\t\t? this.transaction.splitCoins(this.transaction.object(params.coin), [\n\t\t\t\t\t\tparams.priceAfterDiscount,\n\t\t\t\t\t])\n\t\t\t\t: zeroCoin(this.transaction, params.coinConfig.type);\n\t\t\tconst receipt = this.handleBasePayment(params.paymentIntent, payment, params.coinConfig.type);\n\t\t\treturn receipt;\n\t\t} else {\n\t\t\tconst priceInfoObjectId = params.priceInfoObjectId;\n\t\t\tif (!priceInfoObjectId)\n\t\t\t\tthrow new Error('Price info object ID is required for non-base asset purchases');\n\t\t\tconst price = this.calculatePrice(\n\t\t\t\tparams.priceAfterDiscount,\n\t\t\t\tparams.coinConfig.type,\n\t\t\t\tpriceInfoObjectId,\n\t\t\t);\n\t\t\tif (!params.coin) throw new Error('coin input is required');\n\t\t\tconst payment = this.transaction.splitCoins(this.transaction.object(params.coin!), [price]);\n\t\t\tconst receipt = this.handlePayment(\n\t\t\t\tparams.paymentIntent,\n\t\t\t\tpayment,\n\t\t\t\tparams.coinConfig.type,\n\t\t\t\tpriceInfoObjectId,\n\t\t\t\tparams.maxAmount,\n\t\t\t);\n\t\t\treturn receipt;\n\t\t}\n\t}\n\n\t/**\n\t * Applies a coupon to the payment intent.\n\t */\n\tapplyCoupon(intent: TransactionObjectArgument, couponCode: string): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.coupons.packageId}::coupon_house::apply_coupon`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tintent,\n\t\t\t\tthis.transaction.pure.string(couponCode),\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Applies a discount to the payment intent.\n\t */\n\tapplyDiscount(intent: TransactionObjectArgument, discountInfo: DiscountInfo): void {\n\t\tconst config = this.haneulnsClient.config;\n\n\t\tif (discountInfo.isFreeClaim) {\n\t\t\tthis.transaction.moveCall({\n\t\t\t\ttarget: `${config.discountsPackage.packageId}::free_claims::free_claim`,\n\t\t\t\targuments: [\n\t\t\t\t\tthis.transaction.object(config.discountsPackage.discountHouseId),\n\t\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\t\tintent,\n\t\t\t\t\tthis.transaction.object(discountInfo.discountNft),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t});\n\t\t} else {\n\t\t\tthis.transaction.moveCall({\n\t\t\t\ttarget: `${config.discountsPackage.packageId}::discounts::apply_percentage_discount`,\n\t\t\t\targuments: [\n\t\t\t\t\tthis.transaction.object(config.discountsPackage.discountHouseId),\n\t\t\t\t\tintent,\n\t\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\t\tthis.transaction.object(discountInfo.discountNft),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Creates a subdomain.\n\t */\n\tcreateSubName({\n\t\tparentNft,\n\t\tname,\n\t\texpirationTimestampMs,\n\t\tallowChildCreation,\n\t\tallowTimeExtension,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\texpirationTimestampMs: number;\n\t\tallowChildCreation: boolean;\n\t\tallowTimeExtension: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tconst subNft = this.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.u64(expirationTimestampMs),\n\t\t\t\tthis.transaction.pure.bool(!!allowChildCreation),\n\t\t\t\tthis.transaction.pure.bool(!!allowTimeExtension),\n\t\t\t],\n\t\t});\n\n\t\treturn subNft;\n\t}\n\n\t/**\n\t * Builds the PTB to create a leaf subdomain.\n\t * Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.\n\t * Can be passed in as an ID or a TransactionArgument.\n\t */\n\tcreateLeafSubName({\n\t\tparentNft,\n\t\tname,\n\t\ttargetAddress,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\ttargetAddress: string;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new_leaf`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new_leaf`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.address(targetAddress),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Removes a leaf subname.\n\t */\n\tremoveLeafSubName({ parentNft, name }: { parentNft: TransactionObjectInput; name: string }) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!isSubName(name)) throw new Error('This can only be invoked for subnames');\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::remove_leaf`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::remove_leaf`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets the target address of an NFT.\n\t */\n\tsetTargetAddress({\n\t\tnft, // Can be string or argument\n\t\taddress,\n\t\tisSubname,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\taddress?: string;\n\t\tisSubname?: boolean;\n\t}) {\n\t\tif (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isSubname\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_target_address`\n\t\t\t\t: `${this.haneulnsClient.config.packageId}::controller::set_target_address`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure(bcs.option(bcs.Address).serialize(address).toBytes()),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets a default name for the user.\n\t */\n\tsetDefault(name: string) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.packageId}::controller::set_reverse_lookup`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Edits the setup of a subname.\n\t */\n\teditSetup({\n\t\tparentNft,\n\t\tname,\n\t\tallowChildCreation,\n\t\tallowTimeExtension,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\tallowChildCreation: boolean;\n\t\tallowTimeExtension: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!isParentSubdomain && !this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::edit_setup`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::edit_setup`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.bool(!!allowChildCreation),\n\t\t\t\tthis.transaction.pure.bool(!!allowTimeExtension),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Extends the expiration of a subname.\n\t */\n\textendExpiration({\n\t\tnft,\n\t\texpirationTimestampMs,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\texpirationTimestampMs: number;\n\t}) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::extend_expiration`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.u64(expirationTimestampMs),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets the user data of an NFT.\n\t */\n\tsetUserData({\n\t\tnft,\n\t\tvalue,\n\t\tkey,\n\t\tisSubname,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\tvalue: string;\n\t\tkey: string;\n\t\tisSubname?: boolean;\n\t}) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tif (!Object.values(ALLOWED_METADATA).some((x) => x === key)) throw new Error('Invalid key');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isSubname\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_user_data`\n\t\t\t\t: `${this.haneulnsClient.config.packageId}::controller::set_user_data`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.string(key),\n\t\t\t\tthis.transaction.pure.string(value),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Burns an expired NFT to collect storage rebates.\n\t */\n\tburnExpired({ nft, isSubname }: { nft: TransactionObjectInput; isSubname?: boolean }) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.packageId}::controller::${\n\t\t\t\tisSubname ? 'burn_expired_subname' : 'burn_expired'\n\t\t\t}`, // Update this\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,18 @@
1
+ import type { Transaction } from '@haneullabs/haneul/transactions';
2
+ export declare function isSubName(name: string): boolean;
3
+ /**
4
+ * Checks if a name is a nested subname.
5
+ * A nested subdomain is a subdomain that is a subdomain of another subdomain.
6
+ * @param name The name to check (e.g test.example.sub.haneul)
7
+ */
8
+ export declare function isNestedSubName(name: string): boolean;
9
+ /**
10
+ * The years must be between 1 and 5.
11
+ */
12
+ export declare function validateYears(years: number): void;
13
+ export declare function zeroCoin(tx: Transaction, type: string): import("@haneullabs/haneul/transactions").TransactionResult;
14
+ export declare function getConfigType(haneulnsPackageV1: string, innerType: string): string;
15
+ export declare function getDomainType(haneulnsPackageV1: string): string;
16
+ export declare function getPricelistConfigType(haneulnsPackageId: string): string;
17
+ export declare function getRenewalPricelistConfigType(haneulnsPackageId: string): string;
18
+ export declare function getCoinDiscountConfigType(paymentPackageId: string): string;
@@ -0,0 +1,63 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var helpers_exports = {};
20
+ __export(helpers_exports, {
21
+ getCoinDiscountConfigType: () => getCoinDiscountConfigType,
22
+ getConfigType: () => getConfigType,
23
+ getDomainType: () => getDomainType,
24
+ getPricelistConfigType: () => getPricelistConfigType,
25
+ getRenewalPricelistConfigType: () => getRenewalPricelistConfigType,
26
+ isNestedSubName: () => isNestedSubName,
27
+ isSubName: () => isSubName,
28
+ validateYears: () => validateYears,
29
+ zeroCoin: () => zeroCoin
30
+ });
31
+ module.exports = __toCommonJS(helpers_exports);
32
+ var import_utils = require("@haneullabs/haneul/utils");
33
+ function isSubName(name) {
34
+ return (0, import_utils.normalizeHaneulNSName)(name, "dot").split(".").length > 2;
35
+ }
36
+ function isNestedSubName(name) {
37
+ return (0, import_utils.normalizeHaneulNSName)(name, "dot").split(".").length > 3;
38
+ }
39
+ function validateYears(years) {
40
+ if (!(years > 0 && years < 6)) throw new Error("Years must be between 1 and 5");
41
+ }
42
+ function zeroCoin(tx, type) {
43
+ return tx.moveCall({
44
+ target: "0x2::coin::zero",
45
+ typeArguments: [type]
46
+ });
47
+ }
48
+ function getConfigType(haneulnsPackageV1, innerType) {
49
+ return `${haneulnsPackageV1}::haneulns::ConfigKey<${innerType}>`;
50
+ }
51
+ function getDomainType(haneulnsPackageV1) {
52
+ return `${haneulnsPackageV1}::domain::Domain`;
53
+ }
54
+ function getPricelistConfigType(haneulnsPackageId) {
55
+ return `${haneulnsPackageId}::pricing_config::PricingConfig`;
56
+ }
57
+ function getRenewalPricelistConfigType(haneulnsPackageId) {
58
+ return `${haneulnsPackageId}::pricing_config::RenewalConfig`;
59
+ }
60
+ function getCoinDiscountConfigType(paymentPackageId) {
61
+ return `${paymentPackageId}::payments::PaymentsConfig`;
62
+ }
63
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/helpers.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Transaction } from '@haneullabs/haneul/transactions';\nimport { normalizeHaneulNSName } from '@haneullabs/haneul/utils';\n\nexport function isSubName(name: string): boolean {\n\treturn normalizeHaneulNSName(name, 'dot').split('.').length > 2;\n}\n\n/**\n * Checks if a name is a nested subname.\n * A nested subdomain is a subdomain that is a subdomain of another subdomain.\n * @param name The name to check (e.g test.example.sub.haneul)\n */\nexport function isNestedSubName(name: string): boolean {\n\treturn normalizeHaneulNSName(name, 'dot').split('.').length > 3;\n}\n\n/**\n * The years must be between 1 and 5.\n */\nexport function validateYears(years: number) {\n\tif (!(years > 0 && years < 6)) throw new Error('Years must be between 1 and 5');\n}\n\nexport function zeroCoin(tx: Transaction, type: string) {\n\treturn tx.moveCall({\n\t\ttarget: '0x2::coin::zero',\n\t\ttypeArguments: [type],\n\t});\n}\n\nexport function getConfigType(haneulnsPackageV1: string, innerType: string): string {\n\treturn `${haneulnsPackageV1}::haneulns::ConfigKey<${innerType}>`;\n}\n\nexport function getDomainType(haneulnsPackageV1: string): string {\n\treturn `${haneulnsPackageV1}::domain::Domain`;\n}\n\nexport function getPricelistConfigType(haneulnsPackageId: string): string {\n\treturn `${haneulnsPackageId}::pricing_config::PricingConfig`;\n}\n\nexport function getRenewalPricelistConfigType(haneulnsPackageId: string): string {\n\treturn `${haneulnsPackageId}::pricing_config::RenewalConfig`;\n}\n\nexport function getCoinDiscountConfigType(paymentPackageId: string): string {\n\treturn `${paymentPackageId}::payments::PaymentsConfig`;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAsC;AAE/B,SAAS,UAAU,MAAuB;AAChD,aAAO,oCAAsB,MAAM,KAAK,EAAE,MAAM,GAAG,EAAE,SAAS;AAC/D;AAOO,SAAS,gBAAgB,MAAuB;AACtD,aAAO,oCAAsB,MAAM,KAAK,EAAE,MAAM,GAAG,EAAE,SAAS;AAC/D;AAKO,SAAS,cAAc,OAAe;AAC5C,MAAI,EAAE,QAAQ,KAAK,QAAQ,GAAI,OAAM,IAAI,MAAM,+BAA+B;AAC/E;AAEO,SAAS,SAAS,IAAiB,MAAc;AACvD,SAAO,GAAG,SAAS;AAAA,IAClB,QAAQ;AAAA,IACR,eAAe,CAAC,IAAI;AAAA,EACrB,CAAC;AACF;AAEO,SAAS,cAAc,mBAA2B,WAA2B;AACnF,SAAO,GAAG,iBAAiB,yBAAyB,SAAS;AAC9D;AAEO,SAAS,cAAc,mBAAmC;AAChE,SAAO,GAAG,iBAAiB;AAC5B;AAEO,SAAS,uBAAuB,mBAAmC;AACzE,SAAO,GAAG,iBAAiB;AAC5B;AAEO,SAAS,8BAA8B,mBAAmC;AAChF,SAAO,GAAG,iBAAiB;AAC5B;AAEO,SAAS,0BAA0B,kBAAkC;AAC3E,SAAO,GAAG,gBAAgB;AAC3B;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ export { HaneulnsClient } from './haneulns-client.js';
2
+ export { HaneulnsTransaction } from './haneulns-transaction.js';
3
+ export type { Network, HaneulnsClientConfig, Config } from './types.js';
4
+ export { ALLOWED_METADATA, mainPackage } from './constants.js';
5
+ export { isSubName, isNestedSubName, validateYears, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, getCoinDiscountConfigType, } from './helpers.js';