@haneullabs/haneulns 1.0.2 → 1.0.3
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/dist/constants.d.mts +0 -1
- package/dist/constants.d.mts.map +1 -1
- package/dist/contracts/haneulns/haneulns.mjs +2 -2
- package/dist/contracts/haneulns/haneulns.mjs.map +1 -1
- package/dist/contracts/haneulns/name_record.mjs.map +1 -1
- package/dist/contracts/haneulns_coupons/coupon_house.mjs.map +1 -1
- package/dist/haneulns-client.d.mts +10 -10
- package/dist/haneulns-client.d.mts.map +1 -1
- package/dist/haneulns-client.mjs +8 -8
- package/dist/haneulns-client.mjs.map +1 -1
- package/dist/haneulns-transaction.d.mts +6 -6
- package/dist/haneulns-transaction.d.mts.map +1 -1
- package/dist/haneulns-transaction.mjs +3 -3
- package/dist/haneulns-transaction.mjs.map +1 -1
- package/dist/helpers.d.mts.map +1 -1
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +3 -3
- package/dist/types.d.mts +3 -3
- package/dist/types.d.mts.map +1 -1
- package/package.json +7 -7
- package/src/contracts/haneulns/auction.ts +2 -2
- package/src/contracts/haneulns/constants.ts +4 -4
- package/src/contracts/haneulns/haneulns.ts +2 -2
- package/src/contracts/haneulns/haneulns_registration.ts +11 -11
- package/src/contracts/haneulns/name_record.ts +2 -2
- package/src/contracts/haneulns/registry.ts +8 -8
- package/src/contracts/haneulns/subdomain_registration.ts +2 -2
- package/src/contracts/haneulns_coupons/coupon_house.ts +6 -6
- package/src/haneulns-client.ts +14 -14
- package/src/haneulns-transaction.ts +5 -5
- package/src/index.ts +3 -3
- package/src/types.ts +2 -2
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"haneulns-transaction.mjs","names":["payment.initRegistration","payment.initRenewal","paymentsModule.calculatePrice","paymentsModule.handleBasePayment","paymentsModule.handlePayment","payment.register","payment.renew","paymentsModule.calculatePriceAfterDiscount","couponHouse.applyCoupon","freeClaims.freeClaim","discounts.applyPercentageDiscount","controller.setReverseLookup","controller.burnExpiredSubname","controller.burnExpired"],"sources":["../src/haneulns-transaction.ts"],"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 { SuinsClient } from './haneulns-client.js';\nimport type { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from './types.js';\n\nimport * as payment from './contracts/haneulns/payment.js';\nimport * as controller from './contracts/haneulns/controller.js';\nimport * as paymentsModule from './contracts/haneulns_payments/payments.js';\nimport * as couponHouse from './contracts/haneulns_coupons/coupon_house.js';\nimport * as discounts from './contracts/haneulns_discounts/discounts.js';\nimport * as freeClaims from './contracts/haneulns_discounts/free_claims.js';\n\nexport class SuinsTransaction {\n\thaneulnsClient: SuinsClient;\n\ttransaction: Transaction;\n\n\tconstructor(client: SuinsClient, 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.add(\n\t\t\tpayment.initRegistration({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, domain },\n\t\t\t}),\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.add(\n\t\t\tpayment.initRenewal({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, nft: this.transaction.object(nft), 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.add(\n\t\t\tpaymentsModule.calculatePrice({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbaseAmount,\n\t\t\t\t\tpriceInfoObject: priceInfoObjectId,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\thandleBasePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentArg: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.add(\n\t\t\tpaymentsModule.handleBasePayment({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbbbVault: config.bbb.vault,\n\t\t\t\t\tintent: paymentIntent,\n\t\t\t\t\tpayment: paymentArg,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\thandlePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentArg: 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.add(\n\t\t\tpaymentsModule.handlePayment({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbbbVault: config.bbb.vault,\n\t\t\t\t\tintent: paymentIntent,\n\t\t\t\t\tpayment: paymentArg,\n\t\t\t\t\tpriceInfoObject: priceInfoObjectId,\n\t\t\t\t\tuserPriceGuard: maxAmount,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\tfinalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.add(\n\t\t\tpayment.register({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { receipt, haneulns: config.haneulns },\n\t\t\t}),\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.add(\n\t\t\tpayment.renew({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { receipt, haneulns: config.haneulns, nft: this.transaction.object(nft) },\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.add(\n\t\t\tpaymentsModule.calculatePriceAfterDiscount({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, intent: paymentIntent },\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\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.add(\n\t\t\tcouponHouse.applyCoupon({\n\t\t\t\tpackage: config.coupons.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, intent, couponCode },\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.add(\n\t\t\t\tfreeClaims.freeClaim({\n\t\t\t\t\tpackage: config.discountsPackage.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: config.discountsPackage.discountHouseId,\n\t\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\t\tintent,\n\t\t\t\t\t\tobject: this.transaction.object(discountInfo.discountNft),\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.transaction.add(\n\t\t\t\tdiscounts.applyPercentageDiscount({\n\t\t\t\t\tpackage: config.discountsPackage.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: config.discountsPackage.discountHouseId,\n\t\t\t\t\t\tintent,\n\t\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\t\t_: this.transaction.object(discountInfo.discountNft),\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t\t}),\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 `SuinsRegistration` 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.add(\n\t\t\tcontroller.setReverseLookup({\n\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\tdomainName: normalizeHaneulNSName(name, 'dot'),\n\t\t\t\t},\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\tif (isSubname) {\n\t\t\tthis.transaction.add(\n\t\t\t\tcontroller.burnExpiredSubname({\n\t\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\t\tnft: this.transaction.object(nft),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.transaction.add(\n\t\t\t\tcontroller.burnExpired({\n\t\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\t\tnft: this.transaction.object(nft),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"haneulns-transaction.mjs","names":["payment.initRegistration","payment.initRenewal","paymentsModule.calculatePrice","paymentsModule.handleBasePayment","paymentsModule.handlePayment","payment.register","payment.renew","paymentsModule.calculatePriceAfterDiscount","couponHouse.applyCoupon","freeClaims.freeClaim","discounts.applyPercentageDiscount","controller.setReverseLookup","controller.burnExpiredSubname","controller.burnExpired"],"sources":["../src/haneulns-transaction.ts"],"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\nimport * as payment from './contracts/haneulns/payment.js';\nimport * as controller from './contracts/haneulns/controller.js';\nimport * as paymentsModule from './contracts/haneulns_payments/payments.js';\nimport * as couponHouse from './contracts/haneulns_coupons/coupon_house.js';\nimport * as discounts from './contracts/haneulns_discounts/discounts.js';\nimport * as freeClaims from './contracts/haneulns_discounts/free_claims.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.add(\n\t\t\tpayment.initRegistration({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, domain },\n\t\t\t}),\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.add(\n\t\t\tpayment.initRenewal({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, nft: this.transaction.object(nft), 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.add(\n\t\t\tpaymentsModule.calculatePrice({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbaseAmount,\n\t\t\t\t\tpriceInfoObject: priceInfoObjectId,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\thandleBasePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentArg: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.add(\n\t\t\tpaymentsModule.handleBasePayment({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbbbVault: config.bbb.vault,\n\t\t\t\t\tintent: paymentIntent,\n\t\t\t\t\tpayment: paymentArg,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\thandlePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentArg: 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.add(\n\t\t\tpaymentsModule.handlePayment({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\tbbbVault: config.bbb.vault,\n\t\t\t\t\tintent: paymentIntent,\n\t\t\t\t\tpayment: paymentArg,\n\t\t\t\t\tpriceInfoObject: priceInfoObjectId,\n\t\t\t\t\tuserPriceGuard: maxAmount,\n\t\t\t\t},\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\n\t\t);\n\t}\n\n\tfinalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.add(\n\t\t\tpayment.register({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { receipt, haneulns: config.haneulns },\n\t\t\t}),\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.add(\n\t\t\tpayment.renew({\n\t\t\t\tpackage: config.packageId,\n\t\t\t\targuments: { receipt, haneulns: config.haneulns, nft: this.transaction.object(nft) },\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.add(\n\t\t\tpaymentsModule.calculatePriceAfterDiscount({\n\t\t\t\tpackage: config.payments.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, intent: paymentIntent },\n\t\t\t\ttypeArguments: [paymentType],\n\t\t\t}),\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.add(\n\t\t\tcouponHouse.applyCoupon({\n\t\t\t\tpackage: config.coupons.packageId,\n\t\t\t\targuments: { haneulns: config.haneulns, intent, couponCode },\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.add(\n\t\t\t\tfreeClaims.freeClaim({\n\t\t\t\t\tpackage: config.discountsPackage.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: config.discountsPackage.discountHouseId,\n\t\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\t\tintent,\n\t\t\t\t\t\tobject: this.transaction.object(discountInfo.discountNft),\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.transaction.add(\n\t\t\t\tdiscounts.applyPercentageDiscount({\n\t\t\t\t\tpackage: config.discountsPackage.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tself: config.discountsPackage.discountHouseId,\n\t\t\t\t\t\tintent,\n\t\t\t\t\t\thaneulns: config.haneulns,\n\t\t\t\t\t\t_: this.transaction.object(discountInfo.discountNft),\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t\t}),\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.add(\n\t\t\tcontroller.setReverseLookup({\n\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\targuments: {\n\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\tdomainName: normalizeHaneulNSName(name, 'dot'),\n\t\t\t\t},\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\tif (isSubname) {\n\t\t\tthis.transaction.add(\n\t\t\t\tcontroller.burnExpiredSubname({\n\t\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\t\tnft: this.transaction.object(nft),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t} else {\n\t\t\tthis.transaction.add(\n\t\t\t\tcontroller.burnExpired({\n\t\t\t\t\tpackage: this.haneulnsClient.config.packageId,\n\t\t\t\t\targuments: {\n\t\t\t\t\t\thaneulns: this.haneulnsClient.config.haneulns,\n\t\t\t\t\t\tnft: this.transaction.object(nft),\n\t\t\t\t\t},\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\t}\n}\n"],"mappings":"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"}
|
package/dist/helpers.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.d.mts","names":[],"sources":["../src/helpers.ts"],"
|
|
1
|
+
{"version":3,"file":"helpers.d.mts","names":[],"sources":["../src/helpers.ts"],"mappings":";;;iBAMgB,SAAA,CAAU,IAAA;;AAA1B;;;;iBASgB,eAAA,CAAgB,IAAA;AAAhC;;;AAAA,iBAOgB,aAAA,CAAc,KAAA;AAAA,iBAWd,aAAA,CAAc,iBAAA,UAA2B,SAAA;AAAA,iBAIzC,aAAA,CAAc,iBAAA;AAAA,iBAId,sBAAA,CAAuB,iBAAA;AAAA,iBAIvB,6BAAA,CAA8B,iBAAA;AAAA,iBAI9B,yBAAA,CAA0B,gBAAA"}
|
package/dist/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
import {
|
|
1
|
+
import { HaneulnsClientConfig, PackageInfo } from "./types.mjs";
|
|
2
|
+
import { HaneulnsClient, HaneulnsExtensionOptions, haneulns } from "./haneulns-client.mjs";
|
|
3
|
+
import { HaneulnsTransaction } from "./haneulns-transaction.mjs";
|
|
4
4
|
import { ALLOWED_METADATA, mainPackage } from "./constants.mjs";
|
|
5
5
|
import { getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, isNestedSubName, isSubName, validateYears } from "./helpers.mjs";
|
|
6
|
-
export { ALLOWED_METADATA, type
|
|
6
|
+
export { ALLOWED_METADATA, HaneulnsClient, type HaneulnsClientConfig, type HaneulnsExtensionOptions, HaneulnsTransaction, type PackageInfo, getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, haneulns, isNestedSubName, isSubName, mainPackage, validateYears };
|
package/dist/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { ALLOWED_METADATA, mainPackage } from "./constants.mjs";
|
|
2
2
|
import { getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, isNestedSubName, isSubName, validateYears } from "./helpers.mjs";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
3
|
+
import { HaneulnsClient, haneulns } from "./haneulns-client.mjs";
|
|
4
|
+
import { HaneulnsTransaction } from "./haneulns-transaction.mjs";
|
|
5
5
|
|
|
6
|
-
export { ALLOWED_METADATA,
|
|
6
|
+
export { ALLOWED_METADATA, HaneulnsClient, HaneulnsTransaction, getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, haneulns, isNestedSubName, isSubName, mainPackage, validateYears };
|
package/dist/types.d.mts
CHANGED
|
@@ -76,13 +76,13 @@ type ReceiptParams = {
|
|
|
76
76
|
maxAmount?: bigint;
|
|
77
77
|
priceInfoObjectId?: string | null;
|
|
78
78
|
};
|
|
79
|
-
type
|
|
79
|
+
type HaneulnsClientConfig = {
|
|
80
80
|
client: ClientWithCoreApi;
|
|
81
81
|
network?: HaneulClientTypes.Network;
|
|
82
82
|
packageInfo?: PackageInfo;
|
|
83
83
|
};
|
|
84
|
-
type
|
|
84
|
+
type HaneulnsPriceList = Map<[number, number], number>;
|
|
85
85
|
type CoinTypeDiscount = Map<string, number>;
|
|
86
86
|
//#endregion
|
|
87
|
-
export { CoinTypeDiscount, Config, DiscountInfo, NameRecord, PackageInfo, ReceiptParams, RegistrationParams, RenewalParams
|
|
87
|
+
export { CoinTypeDiscount, Config, DiscountInfo, HaneulnsClientConfig, HaneulnsPriceList, NameRecord, PackageInfo, ReceiptParams, RegistrationParams, RenewalParams };
|
|
88
88
|
//# sourceMappingURL=types.d.mts.map
|
package/dist/types.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"
|
|
1
|
+
{"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;UAQiB,UAAA;EAChB,IAAA;EACA,IAAA;AAAA;AAAA,UAGgB,YAAA;EAChB,WAAA,EAAa,sBAAA;EACb,IAAA;EACA,WAAA;AAAA;AAAA,UAGgB,WAAA;EAChB,SAAA;EACA,WAAA;EACA,gBAAA;EACA,QAAA;EACA,gBAAA;IACC,SAAA;IACA,eAAA;EAAA;EAED,iBAAA;EACA,4BAAA;EACA,OAAA;IACC,SAAA;EAAA;EAED,QAAA;IACC,SAAA;EAAA;EAED,GAAA;IACC,SAAA;IACA,KAAA;EAAA;EAED,eAAA;EACA,IAAA;IACC,WAAA;IACA,eAAA;EAAA;EAED,KAAA;IACC,SAAA;EAAA;EAED,KAAA,EAAO,MAAA,SAAe,UAAA;AAAA;AAAA,UAGN,UAAA;EAChB,IAAA;EACA,KAAA;EACA,aAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAA;EACN,MAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,KAYW,MAAA,GAAS,MAAA,wBAA8B,WAAA;AAAA,KAEvC,UAAA;EACX,KAAA;EACA,UAAA,EAAY,UAAA;EACZ,IAAA,GAAO,sBAAA;EACP,UAAA;EACA,YAAA,GAAe,YAAA;EACf,SAAA;EACA,iBAAA;AAAA;AAAA,KAGW,kBAAA,GAAqB,UAAA;EAChC,MAAA;AAAA;AAAA,KAGW,aAAA,GAAgB,UAAA;EAC3B,GAAA,EAAK,sBAAA;AAAA;AAAA,KAGM,aAAA;EACX,aAAA,EAAe,yBAAA;EACf,kBAAA,EAAoB,yBAAA;EACpB,UAAA,EAAY,UAAA;EACZ,IAAA,GAAO,sBAAA;EACP,SAAA;EACA,iBAAA;AAAA;AAAA,KAGW,oBAAA;EACX,MAAA,EAAQ,iBAAA;EACR,OAAA,GAAU,iBAAA,CAAkB,OAAA;EAC5B,WAAA,GAAc,WAAA;AAAA;AAAA,KAGH,iBAAA,GAAoB,GAAA;AAAA,KAEpB,gBAAA,GAAmB,GAAA"}
|
package/package.json
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@haneullabs/haneulns",
|
|
3
3
|
"author": "Haneul Labs <build@haneul-labs.com>",
|
|
4
|
-
"description": "
|
|
5
|
-
"version": "1.0.
|
|
4
|
+
"description": "HaneulNS SDK",
|
|
5
|
+
"version": "1.0.3",
|
|
6
6
|
"license": "Apache-2.0",
|
|
7
7
|
"private": false,
|
|
8
8
|
"type": "module",
|
|
@@ -10,7 +10,7 @@
|
|
|
10
10
|
"types": "./dist/index.d.mts",
|
|
11
11
|
"keywords": [
|
|
12
12
|
"Haneul",
|
|
13
|
-
"
|
|
13
|
+
"haneulns",
|
|
14
14
|
"haneullabs"
|
|
15
15
|
],
|
|
16
16
|
"exports": {
|
|
@@ -39,18 +39,18 @@
|
|
|
39
39
|
"typescript": "^5.9.3",
|
|
40
40
|
"vite": "^7.3.1",
|
|
41
41
|
"vitest": "^4.0.17",
|
|
42
|
-
"@haneullabs/
|
|
43
|
-
"@haneullabs/
|
|
42
|
+
"@haneullabs/codegen": "^0.8.3",
|
|
43
|
+
"@haneullabs/haneul": "^2.13.0"
|
|
44
44
|
},
|
|
45
45
|
"peerDependencies": {
|
|
46
|
-
"@haneullabs/haneul": "^2.
|
|
46
|
+
"@haneullabs/haneul": "^2.13.0"
|
|
47
47
|
},
|
|
48
48
|
"repository": {
|
|
49
49
|
"type": "git",
|
|
50
50
|
"url": "git+https://github.com/GeunhwaJeong/ts-sdks.git"
|
|
51
51
|
},
|
|
52
52
|
"bugs": {
|
|
53
|
-
"url": "https://github.com/
|
|
53
|
+
"url": "https://github.com/GeunhwaJeong/haneulns-contracts/issues"
|
|
54
54
|
},
|
|
55
55
|
"scripts": {
|
|
56
56
|
"codegen": "haneul-ts-codegen generate && pnpm lint:fix",
|
|
@@ -35,7 +35,7 @@ export const Auction = new MoveStruct({
|
|
|
35
35
|
end_timestamp_ms: bcs.u64(),
|
|
36
36
|
winner: bcs.Address,
|
|
37
37
|
current_bid: coin.Coin,
|
|
38
|
-
nft: haneulns_registration.
|
|
38
|
+
nft: haneulns_registration.HaneulnsRegistration,
|
|
39
39
|
},
|
|
40
40
|
});
|
|
41
41
|
export const AuctionStartedEvent = new MoveStruct({
|
|
@@ -284,7 +284,7 @@ export interface AdminFinalizeAuctionOptions {
|
|
|
284
284
|
* provided `operation_limit`:
|
|
285
285
|
*
|
|
286
286
|
* - claim the winning bid and place in `AuctionHouse.balance`
|
|
287
|
-
* - push the `
|
|
287
|
+
* - push the `HaneulnsRegistration` to the winner
|
|
288
288
|
* - push loosing bids back to their respective account owners
|
|
289
289
|
*
|
|
290
290
|
* Once all of the above has been done the auction is destroyed, freeing on-chain
|
|
@@ -22,7 +22,7 @@ export function haneulTld(options: HaneulTldOptions = {}) {
|
|
|
22
22
|
tx.moveCall({
|
|
23
23
|
package: packageAddress,
|
|
24
24
|
module: 'constants',
|
|
25
|
-
function: '
|
|
25
|
+
function: 'haneul_tld',
|
|
26
26
|
});
|
|
27
27
|
}
|
|
28
28
|
export interface DefaultImageOptions {
|
|
@@ -39,18 +39,18 @@ export function defaultImage(options: DefaultImageOptions = {}) {
|
|
|
39
39
|
function: 'default_image',
|
|
40
40
|
});
|
|
41
41
|
}
|
|
42
|
-
export interface
|
|
42
|
+
export interface GeunhwaPerHaneulOptions {
|
|
43
43
|
package?: string;
|
|
44
44
|
arguments?: [];
|
|
45
45
|
}
|
|
46
46
|
/** The amount of GEUNHWA in 1 HANEUL. */
|
|
47
|
-
export function
|
|
47
|
+
export function geunhwaPerHaneul(options: GeunhwaPerHaneulOptions = {}) {
|
|
48
48
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
49
49
|
return (tx: Transaction) =>
|
|
50
50
|
tx.moveCall({
|
|
51
51
|
package: packageAddress,
|
|
52
52
|
module: 'constants',
|
|
53
|
-
function: '
|
|
53
|
+
function: 'geunhwa_per_haneul',
|
|
54
54
|
});
|
|
55
55
|
}
|
|
56
56
|
export interface MinDomainLengthOptions {
|
|
@@ -49,8 +49,8 @@ export const HaneulNS = new MoveStruct({
|
|
|
49
49
|
balance: balance.Balance,
|
|
50
50
|
},
|
|
51
51
|
});
|
|
52
|
-
export const
|
|
53
|
-
name: `${$moduleName}::
|
|
52
|
+
export const HANEULNS = new MoveStruct({
|
|
53
|
+
name: `${$moduleName}::HANEULNS`,
|
|
54
54
|
fields: {
|
|
55
55
|
dummy_field: bcs.bool(),
|
|
56
56
|
},
|
|
@@ -3,8 +3,8 @@
|
|
|
3
3
|
**************************************************************/
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* Handles creation of the `
|
|
7
|
-
* `
|
|
6
|
+
* Handles creation of the `HaneulnsRegistration`s. Separates the logic of creating a
|
|
7
|
+
* `HaneulnsRegistration`. New `HaneulnsRegistration`s can be created only by the
|
|
8
8
|
* `registry` and this module is tightly coupled with it.
|
|
9
9
|
*
|
|
10
10
|
* When reviewing the module, make sure that:
|
|
@@ -18,8 +18,8 @@ import { bcs } from '@haneullabs/haneul/bcs';
|
|
|
18
18
|
import { type Transaction } from '@haneullabs/haneul/transactions';
|
|
19
19
|
import * as domain_1 from './domain.js';
|
|
20
20
|
const $moduleName = '@haneulns/core::haneulns_registration';
|
|
21
|
-
export const
|
|
22
|
-
name: `${$moduleName}::
|
|
21
|
+
export const HaneulnsRegistration = new MoveStruct({
|
|
22
|
+
name: `${$moduleName}::HaneulnsRegistration`,
|
|
23
23
|
fields: {
|
|
24
24
|
id: bcs.Address,
|
|
25
25
|
/** The parsed domain. */
|
|
@@ -40,7 +40,7 @@ export interface HasExpiredOptions {
|
|
|
40
40
|
arguments: HasExpiredArguments | [self: RawTransactionArgument<string>];
|
|
41
41
|
}
|
|
42
42
|
/**
|
|
43
|
-
* Check whether the `
|
|
43
|
+
* Check whether the `HaneulnsRegistration` has expired by comparing the expiration
|
|
44
44
|
* timeout with the current time.
|
|
45
45
|
*/
|
|
46
46
|
export function hasExpired(options: HasExpiredOptions) {
|
|
@@ -63,7 +63,7 @@ export interface HasExpiredPastGracePeriodOptions {
|
|
|
63
63
|
arguments: HasExpiredPastGracePeriodArguments | [self: RawTransactionArgument<string>];
|
|
64
64
|
}
|
|
65
65
|
/**
|
|
66
|
-
* Check whether the `
|
|
66
|
+
* Check whether the `HaneulnsRegistration` has expired by comparing the expiration
|
|
67
67
|
* timeout with the current time. This function also takes into account the grace
|
|
68
68
|
* period.
|
|
69
69
|
*/
|
|
@@ -86,7 +86,7 @@ export interface DomainOptions {
|
|
|
86
86
|
package?: string;
|
|
87
87
|
arguments: DomainArguments | [self: RawTransactionArgument<string>];
|
|
88
88
|
}
|
|
89
|
-
/** Get the `domain` field of the `
|
|
89
|
+
/** Get the `domain` field of the `HaneulnsRegistration`. */
|
|
90
90
|
export function domain(options: DomainOptions) {
|
|
91
91
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
92
92
|
const argumentsTypes = [null] satisfies (string | null)[];
|
|
@@ -106,7 +106,7 @@ export interface DomainNameOptions {
|
|
|
106
106
|
package?: string;
|
|
107
107
|
arguments: DomainNameArguments | [self: RawTransactionArgument<string>];
|
|
108
108
|
}
|
|
109
|
-
/** Get the `domain_name` field of the `
|
|
109
|
+
/** Get the `domain_name` field of the `HaneulnsRegistration`. */
|
|
110
110
|
export function domainName(options: DomainNameOptions) {
|
|
111
111
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
112
112
|
const argumentsTypes = [null] satisfies (string | null)[];
|
|
@@ -126,7 +126,7 @@ export interface ExpirationTimestampMsOptions {
|
|
|
126
126
|
package?: string;
|
|
127
127
|
arguments: ExpirationTimestampMsArguments | [self: RawTransactionArgument<string>];
|
|
128
128
|
}
|
|
129
|
-
/** Get the `expiration_timestamp_ms` field of the `
|
|
129
|
+
/** Get the `expiration_timestamp_ms` field of the `HaneulnsRegistration`. */
|
|
130
130
|
export function expirationTimestampMs(options: ExpirationTimestampMsOptions) {
|
|
131
131
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
132
132
|
const argumentsTypes = [null] satisfies (string | null)[];
|
|
@@ -146,7 +146,7 @@ export interface ImageUrlOptions {
|
|
|
146
146
|
package?: string;
|
|
147
147
|
arguments: ImageUrlArguments | [self: RawTransactionArgument<string>];
|
|
148
148
|
}
|
|
149
|
-
/** Get the `image_url` field of the `
|
|
149
|
+
/** Get the `image_url` field of the `HaneulnsRegistration`. */
|
|
150
150
|
export function imageUrl(options: ImageUrlOptions) {
|
|
151
151
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
152
152
|
const argumentsTypes = [null] satisfies (string | null)[];
|
|
@@ -185,7 +185,7 @@ export interface UidMutOptions {
|
|
|
185
185
|
package?: string;
|
|
186
186
|
arguments: UidMutArguments | [self: RawTransactionArgument<string>];
|
|
187
187
|
}
|
|
188
|
-
/** Get the mutable `id` field of the `
|
|
188
|
+
/** Get the mutable `id` field of the `HaneulnsRegistration`. */
|
|
189
189
|
export function uidMut(options: UidMutOptions) {
|
|
190
190
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
191
191
|
const argumentsTypes = [null] satisfies (string | null)[];
|
|
@@ -17,9 +17,9 @@ export const NameRecord = new MoveStruct({
|
|
|
17
17
|
name: `${$moduleName}::NameRecord`,
|
|
18
18
|
fields: {
|
|
19
19
|
/**
|
|
20
|
-
* The ID of the `
|
|
20
|
+
* The ID of the `HaneulnsRegistration` assigned to this record.
|
|
21
21
|
*
|
|
22
|
-
* The owner of the corresponding `
|
|
22
|
+
* The owner of the corresponding `HaneulnsRegistration` has the rights to be able to
|
|
23
23
|
* change and adjust the `target_address` of this domain.
|
|
24
24
|
*
|
|
25
25
|
* It is possible that the ID changes if the record expires and is purchased by
|
|
@@ -57,7 +57,7 @@ export interface AddRecordIgnoringGracePeriodOptions {
|
|
|
57
57
|
/**
|
|
58
58
|
* Attempts to add a new record to the registry without looking at the grace
|
|
59
59
|
* period. Currently used for subdomains where there's no grace period to respect.
|
|
60
|
-
* Returns a `
|
|
60
|
+
* Returns a `HaneulnsRegistration` upon success.
|
|
61
61
|
*/
|
|
62
62
|
export function addRecordIgnoringGracePeriod(options: AddRecordIgnoringGracePeriodOptions) {
|
|
63
63
|
const packageAddress = options.package ?? '@haneulns/core';
|
|
@@ -87,7 +87,7 @@ export interface AddRecordOptions {
|
|
|
87
87
|
];
|
|
88
88
|
}
|
|
89
89
|
/**
|
|
90
|
-
* Attempts to add a new record to the registry and returns a `
|
|
90
|
+
* Attempts to add a new record to the registry and returns a `HaneulnsRegistration`
|
|
91
91
|
* upon success. Only use with second-level names. Enforces a `grace_period` by
|
|
92
92
|
* default. Not suitable for subdomains (unless a grace period is needed).
|
|
93
93
|
*/
|
|
@@ -195,9 +195,9 @@ export interface AddLeafRecordOptions {
|
|
|
195
195
|
}
|
|
196
196
|
/**
|
|
197
197
|
* Adds a `leaf` record to the registry. A `leaf` record is a record that is a
|
|
198
|
-
* subdomain and doesn't have an equivalent `
|
|
198
|
+
* subdomain and doesn't have an equivalent `HaneulnsRegistration` object.
|
|
199
199
|
*
|
|
200
|
-
* Instead, the parent's `
|
|
200
|
+
* Instead, the parent's `HaneulnsRegistration` object is used to manage
|
|
201
201
|
* target_address & remove it / determine expiration.
|
|
202
202
|
*
|
|
203
203
|
* 1. Leaf records can't have children. They only work as a resolving mechanism.
|
|
@@ -233,7 +233,7 @@ export interface RemoveLeafRecordOptions {
|
|
|
233
233
|
}
|
|
234
234
|
/**
|
|
235
235
|
* Can be used to remove a leaf record. Leaf records do not have any symmetrical
|
|
236
|
-
* `
|
|
236
|
+
* `HaneulnsRegistration` object. Authorization of who calls this is delegated to the
|
|
237
237
|
* authorized module that calls this.
|
|
238
238
|
*/
|
|
239
239
|
export function removeLeafRecord(options: RemoveLeafRecordOptions) {
|
|
@@ -343,8 +343,8 @@ export interface SetExpirationTimestampMsOptions {
|
|
|
343
343
|
];
|
|
344
344
|
}
|
|
345
345
|
/**
|
|
346
|
-
* Update the `expiration_timestamp_ms` of the given `
|
|
347
|
-
* `NameRecord`. Requires the `
|
|
346
|
+
* Update the `expiration_timestamp_ms` of the given `HaneulnsRegistration` and
|
|
347
|
+
* `NameRecord`. Requires the `HaneulnsRegistration` to make sure that both timestamps
|
|
348
348
|
* are in sync.
|
|
349
349
|
*/
|
|
350
350
|
export function setExpirationTimestampMs(options: SetExpirationTimestampMsOptions) {
|
|
@@ -375,7 +375,7 @@ export interface SetDataOptions {
|
|
|
375
375
|
];
|
|
376
376
|
}
|
|
377
377
|
/**
|
|
378
|
-
* Update the `data` of the given `NameRecord` using a `
|
|
378
|
+
* Update the `data` of the given `NameRecord` using a `HaneulnsRegistration`. Use
|
|
379
379
|
* with caution and validate(!!) that any system fields are not removed
|
|
380
380
|
* (accidentally), when building authorized packages that can write the metadata
|
|
381
381
|
* field.
|
|
@@ -3,7 +3,7 @@
|
|
|
3
3
|
**************************************************************/
|
|
4
4
|
|
|
5
5
|
/**
|
|
6
|
-
* A wrapper for `
|
|
6
|
+
* A wrapper for `HaneulnsRegistration` subdomain objects.
|
|
7
7
|
*
|
|
8
8
|
* With the wrapper, we are allowing easier distinction between second level names
|
|
9
9
|
* & subdomains in RPC Querying | filtering.
|
|
@@ -20,7 +20,7 @@ export const SubDomainRegistration = new MoveStruct({
|
|
|
20
20
|
name: `${$moduleName}::SubDomainRegistration`,
|
|
21
21
|
fields: {
|
|
22
22
|
id: bcs.Address,
|
|
23
|
-
nft: haneulns_registration.
|
|
23
|
+
nft: haneulns_registration.HaneulnsRegistration,
|
|
24
24
|
},
|
|
25
25
|
});
|
|
26
26
|
export interface NftArguments {
|
|
@@ -92,7 +92,7 @@ export function applyCoupon(options: ApplyCouponOptions) {
|
|
|
92
92
|
});
|
|
93
93
|
}
|
|
94
94
|
export interface RegisterWithCouponArguments {
|
|
95
|
-
|
|
95
|
+
Haneulns: RawTransactionArgument<string>;
|
|
96
96
|
CouponCode: RawTransactionArgument<string>;
|
|
97
97
|
DomainName: RawTransactionArgument<string>;
|
|
98
98
|
NoYears: RawTransactionArgument<number>;
|
|
@@ -103,7 +103,7 @@ export interface RegisterWithCouponOptions {
|
|
|
103
103
|
arguments:
|
|
104
104
|
| RegisterWithCouponArguments
|
|
105
105
|
| [
|
|
106
|
-
|
|
106
|
+
Haneulns: RawTransactionArgument<string>,
|
|
107
107
|
CouponCode: RawTransactionArgument<string>,
|
|
108
108
|
DomainName: RawTransactionArgument<string>,
|
|
109
109
|
NoYears: RawTransactionArgument<number>,
|
|
@@ -120,7 +120,7 @@ export function registerWithCoupon(options: RegisterWithCouponOptions) {
|
|
|
120
120
|
null,
|
|
121
121
|
'0x2::clock::Clock',
|
|
122
122
|
] satisfies (string | null)[];
|
|
123
|
-
const parameterNames = ['
|
|
123
|
+
const parameterNames = ['Haneulns', 'CouponCode', 'DomainName', 'NoYears', 'Payment'];
|
|
124
124
|
return (tx: Transaction) =>
|
|
125
125
|
tx.moveCall({
|
|
126
126
|
package: packageAddress,
|
|
@@ -130,7 +130,7 @@ export function registerWithCoupon(options: RegisterWithCouponOptions) {
|
|
|
130
130
|
});
|
|
131
131
|
}
|
|
132
132
|
export interface CalculateSalePriceArguments {
|
|
133
|
-
|
|
133
|
+
Haneulns: RawTransactionArgument<string>;
|
|
134
134
|
Price: RawTransactionArgument<number | bigint>;
|
|
135
135
|
CouponCode: RawTransactionArgument<string>;
|
|
136
136
|
}
|
|
@@ -139,7 +139,7 @@ export interface CalculateSalePriceOptions {
|
|
|
139
139
|
arguments:
|
|
140
140
|
| CalculateSalePriceArguments
|
|
141
141
|
| [
|
|
142
|
-
|
|
142
|
+
Haneulns: RawTransactionArgument<string>,
|
|
143
143
|
Price: RawTransactionArgument<number | bigint>,
|
|
144
144
|
CouponCode: RawTransactionArgument<string>,
|
|
145
145
|
];
|
|
@@ -147,7 +147,7 @@ export interface CalculateSalePriceOptions {
|
|
|
147
147
|
export function calculateSalePrice(options: CalculateSalePriceOptions) {
|
|
148
148
|
const packageAddress = options.package ?? '@haneulns/coupons';
|
|
149
149
|
const argumentsTypes = [null, 'u64', '0x1::string::String'] satisfies (string | null)[];
|
|
150
|
-
const parameterNames = ['
|
|
150
|
+
const parameterNames = ['Haneulns', 'Price', 'CouponCode'];
|
|
151
151
|
return (tx: Transaction) =>
|
|
152
152
|
tx.moveCall({
|
|
153
153
|
package: packageAddress,
|
package/src/haneulns-client.ts
CHANGED
|
@@ -11,8 +11,8 @@ import type {
|
|
|
11
11
|
CoinTypeDiscount,
|
|
12
12
|
NameRecord,
|
|
13
13
|
PackageInfo,
|
|
14
|
-
|
|
15
|
-
|
|
14
|
+
HaneulnsClientConfig,
|
|
15
|
+
HaneulnsPriceList,
|
|
16
16
|
} from './types.js';
|
|
17
17
|
|
|
18
18
|
import { ConfigKey } from './contracts/haneulns/haneulns.js';
|
|
@@ -21,7 +21,7 @@ import { NameRecord as NameRecordBcs } from './contracts/haneulns/name_record.js
|
|
|
21
21
|
import { PricingConfig, RenewalConfig } from './contracts/haneulns/pricing_config.js';
|
|
22
22
|
import { PaymentsConfig } from './contracts/haneulns_payments/payments.js';
|
|
23
23
|
|
|
24
|
-
export type
|
|
24
|
+
export type HaneulnsExtensionOptions<Name extends string = 'haneulns'> = {
|
|
25
25
|
name?: Name;
|
|
26
26
|
packageInfo?: PackageInfo;
|
|
27
27
|
};
|
|
@@ -45,11 +45,11 @@ export type SuinsExtensionOptions<Name extends string = 'haneulns'> = {
|
|
|
45
45
|
export function haneulns<const Name extends string = 'haneulns'>({
|
|
46
46
|
name = 'haneulns' as Name,
|
|
47
47
|
packageInfo,
|
|
48
|
-
}:
|
|
48
|
+
}: HaneulnsExtensionOptions<Name> = {}) {
|
|
49
49
|
return {
|
|
50
50
|
name,
|
|
51
51
|
register: (client: ClientWithCoreApi) => {
|
|
52
|
-
return new
|
|
52
|
+
return new HaneulnsClient({
|
|
53
53
|
client,
|
|
54
54
|
network: client.network,
|
|
55
55
|
packageInfo,
|
|
@@ -58,12 +58,12 @@ export function haneulns<const Name extends string = 'haneulns'>({
|
|
|
58
58
|
};
|
|
59
59
|
}
|
|
60
60
|
|
|
61
|
-
export class
|
|
61
|
+
export class HaneulnsClient {
|
|
62
62
|
client: ClientWithCoreApi;
|
|
63
63
|
network: HaneulClientTypes.Network;
|
|
64
64
|
config: PackageInfo;
|
|
65
65
|
|
|
66
|
-
constructor(config:
|
|
66
|
+
constructor(config: HaneulnsClientConfig) {
|
|
67
67
|
this.client = config.client;
|
|
68
68
|
this.network = config.network || 'mainnet';
|
|
69
69
|
|
|
@@ -88,8 +88,8 @@ export class SuinsClient {
|
|
|
88
88
|
// [ 4, 4 ] => 100000000,
|
|
89
89
|
// [ 5, 63 ] => 20000000
|
|
90
90
|
// }
|
|
91
|
-
async getPriceList(): Promise<
|
|
92
|
-
if (!this.config.haneulns) throw new Error('
|
|
91
|
+
async getPriceList(): Promise<HaneulnsPriceList> {
|
|
92
|
+
if (!this.config.haneulns) throw new Error('Haneulns object ID is not set');
|
|
93
93
|
if (!this.config.packageId) throw new Error('Price list config not found');
|
|
94
94
|
|
|
95
95
|
const configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::PricingConfig>`;
|
|
@@ -126,8 +126,8 @@ export class SuinsClient {
|
|
|
126
126
|
// [ 4, 4 ] => 100000000,
|
|
127
127
|
// [ 5, 63 ] => 20000000
|
|
128
128
|
// }
|
|
129
|
-
async getRenewalPriceList(): Promise<
|
|
130
|
-
if (!this.config.haneulns) throw new Error('
|
|
129
|
+
async getRenewalPriceList(): Promise<HaneulnsPriceList> {
|
|
130
|
+
if (!this.config.haneulns) throw new Error('Haneulns object ID is not set');
|
|
131
131
|
if (!this.config.packageId) throw new Error('Price list config not found');
|
|
132
132
|
|
|
133
133
|
const configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::RenewalConfig>`;
|
|
@@ -165,7 +165,7 @@ export class SuinsClient {
|
|
|
165
165
|
// 'b48aac3f53bab328e1eb4c5b3c34f55e760f2fb3f2305ee1a474878d80f650f0::TESTNS::TESTNS' => 25
|
|
166
166
|
// }
|
|
167
167
|
async getCoinTypeDiscount(): Promise<CoinTypeDiscount> {
|
|
168
|
-
if (!this.config.haneulns) throw new Error('
|
|
168
|
+
if (!this.config.haneulns) throw new Error('Haneulns object ID is not set');
|
|
169
169
|
if (!this.config.packageId) throw new Error('Price list config not found');
|
|
170
170
|
|
|
171
171
|
const configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.payments.packageId}::payments::PaymentsConfig>`;
|
|
@@ -193,7 +193,7 @@ export class SuinsClient {
|
|
|
193
193
|
|
|
194
194
|
async getNameRecord(name: string): Promise<NameRecord | null> {
|
|
195
195
|
if (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');
|
|
196
|
-
if (!this.config.registryTableId) throw new Error('
|
|
196
|
+
if (!this.config.registryTableId) throw new Error('Haneulns package ID is not set');
|
|
197
197
|
|
|
198
198
|
const labels = normalizeHaneulNSName(name, 'dot').split('.').reverse();
|
|
199
199
|
|
|
@@ -232,7 +232,7 @@ export class SuinsClient {
|
|
|
232
232
|
|
|
233
233
|
/**
|
|
234
234
|
* Calculates the registration or renewal price for an SLD (Second Level Domain).
|
|
235
|
-
* It expects a domain name, the number of years and a `
|
|
235
|
+
* It expects a domain name, the number of years and a `HaneulnsPriceList` object,
|
|
236
236
|
* as returned from `haneulnsClient.getPriceList()` function, or `haneulns.getRenewalPriceList()` function.
|
|
237
237
|
*
|
|
238
238
|
* It throws an error:
|