@haneullabs/haneulns 1.0.3 → 1.2.5

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 (115) hide show
  1. package/CHANGELOG.md +108 -0
  2. package/dist/constants.d.mts.map +1 -1
  3. package/dist/constants.mjs +20 -20
  4. package/dist/constants.mjs.map +1 -1
  5. package/dist/contracts/haneulns/controller.mjs +11 -4
  6. package/dist/contracts/haneulns/controller.mjs.map +1 -1
  7. package/dist/contracts/haneulns/deps/haneul/balance.mjs +2 -13
  8. package/dist/contracts/haneulns/deps/haneul/balance.mjs.map +1 -1
  9. package/dist/contracts/haneulns/deps/haneul/vec_map.mjs +1 -2
  10. package/dist/contracts/haneulns/deps/haneul/vec_map.mjs.map +1 -1
  11. package/dist/contracts/haneulns/deps/std/type_name.mjs +13 -10
  12. package/dist/contracts/haneulns/deps/std/type_name.mjs.map +1 -1
  13. package/dist/contracts/haneulns/domain.mjs +11 -16
  14. package/dist/contracts/haneulns/domain.mjs.map +1 -1
  15. package/dist/contracts/haneulns/haneulns.mjs +11 -8
  16. package/dist/contracts/haneulns/haneulns.mjs.map +1 -1
  17. package/dist/contracts/haneulns/name_record.mjs +14 -13
  18. package/dist/contracts/haneulns/name_record.mjs.map +1 -1
  19. package/dist/contracts/haneulns/payment.mjs +16 -17
  20. package/dist/contracts/haneulns/payment.mjs.map +1 -1
  21. package/dist/contracts/haneulns/pricing_config.mjs +1 -2
  22. package/dist/contracts/haneulns/pricing_config.mjs.map +1 -1
  23. package/dist/contracts/haneulns_coupons/coupon_house.mjs +4 -5
  24. package/dist/contracts/haneulns_coupons/coupon_house.mjs.map +1 -1
  25. package/dist/contracts/haneulns_coupons/data.mjs +2 -8
  26. package/dist/contracts/haneulns_coupons/data.mjs.map +1 -1
  27. package/dist/contracts/haneulns_coupons/deps/haneul/bag.mjs +4 -32
  28. package/dist/contracts/haneulns_coupons/deps/haneul/bag.mjs.map +1 -1
  29. package/dist/contracts/haneulns_discounts/deps/haneul/linked_table.mjs +5 -2
  30. package/dist/contracts/haneulns_discounts/deps/haneul/linked_table.mjs.map +1 -1
  31. package/dist/contracts/haneulns_discounts/deps/haneulns/pricing_config.mjs +2 -8
  32. package/dist/contracts/haneulns_discounts/deps/haneulns/pricing_config.mjs.map +1 -1
  33. package/dist/contracts/haneulns_discounts/discounts.mjs +3 -4
  34. package/dist/contracts/haneulns_discounts/discounts.mjs.map +1 -1
  35. package/dist/contracts/haneulns_discounts/free_claims.mjs +4 -5
  36. package/dist/contracts/haneulns_discounts/free_claims.mjs.map +1 -1
  37. package/dist/contracts/haneulns_payments/deps/haneul/vec_map.mjs +1 -2
  38. package/dist/contracts/haneulns_payments/deps/haneul/vec_map.mjs.map +1 -1
  39. package/dist/contracts/haneulns_payments/deps/std/type_name.mjs +13 -10
  40. package/dist/contracts/haneulns_payments/deps/std/type_name.mjs.map +1 -1
  41. package/dist/contracts/haneulns_payments/payments.mjs +4 -3
  42. package/dist/contracts/haneulns_payments/payments.mjs.map +1 -1
  43. package/dist/contracts/pyth/data_source.mjs +2 -8
  44. package/dist/contracts/pyth/data_source.mjs.map +1 -1
  45. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +2 -8
  46. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -1
  47. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +2 -8
  48. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -1
  49. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs +2 -8
  50. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs.map +1 -1
  51. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs +2 -8
  52. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs.map +1 -1
  53. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs +2 -8
  54. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs.map +1 -1
  55. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +2 -8
  56. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -1
  57. package/dist/contracts/pyth/state.mjs +2 -8
  58. package/dist/contracts/pyth/state.mjs.map +1 -1
  59. package/dist/contracts/utils/index.mjs +97 -12
  60. package/dist/contracts/utils/index.mjs.map +1 -1
  61. package/dist/contracts/wormhole/bytes32.mjs +2 -8
  62. package/dist/contracts/wormhole/bytes32.mjs.map +1 -1
  63. package/dist/contracts/wormhole/consumed_vaas.mjs +2 -8
  64. package/dist/contracts/wormhole/consumed_vaas.mjs.map +1 -1
  65. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs +2 -8
  66. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs.map +1 -1
  67. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +2 -8
  68. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -1
  69. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +2 -8
  70. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -1
  71. package/dist/contracts/wormhole/external_address.mjs +2 -8
  72. package/dist/contracts/wormhole/external_address.mjs.map +1 -1
  73. package/dist/contracts/wormhole/fee_collector.mjs +2 -8
  74. package/dist/contracts/wormhole/fee_collector.mjs.map +1 -1
  75. package/dist/contracts/wormhole/set.mjs +2 -8
  76. package/dist/contracts/wormhole/set.mjs.map +1 -1
  77. package/dist/contracts/wormhole/state.mjs +2 -8
  78. package/dist/contracts/wormhole/state.mjs.map +1 -1
  79. package/dist/haneulns-client.d.mts.map +1 -1
  80. package/dist/haneulns-client.mjs +1 -2
  81. package/dist/haneulns-client.mjs.map +1 -1
  82. package/dist/haneulns-transaction.d.mts +1 -2
  83. package/dist/haneulns-transaction.d.mts.map +1 -1
  84. package/dist/haneulns-transaction.mjs +1 -2
  85. package/dist/haneulns-transaction.mjs.map +1 -1
  86. package/dist/helpers.d.mts.map +1 -1
  87. package/dist/helpers.mjs +1 -2
  88. package/dist/helpers.mjs.map +1 -1
  89. package/dist/index.mjs +1 -2
  90. package/dist/pyth/PriceServiceConnection.mjs +1 -2
  91. package/dist/pyth/PriceServiceConnection.mjs.map +1 -1
  92. package/dist/pyth/pyth-helpers.mjs +1 -1
  93. package/dist/pyth/pyth-helpers.mjs.map +1 -1
  94. package/dist/pyth/pyth.mjs +8 -6
  95. package/dist/pyth/pyth.mjs.map +1 -1
  96. package/dist/types.d.mts.map +1 -1
  97. package/package.json +8 -9
  98. package/src/constants.ts +19 -19
  99. package/src/contracts/haneulns/admin.ts +2 -2
  100. package/src/contracts/haneulns/config.ts +18 -18
  101. package/src/contracts/haneulns/controller.ts +95 -1
  102. package/src/contracts/haneulns/core_config.ts +19 -19
  103. package/src/contracts/haneulns/domain.ts +18 -20
  104. package/src/contracts/haneulns/haneulns.ts +5 -5
  105. package/src/contracts/haneulns/name_record.ts +22 -27
  106. package/src/contracts/haneulns/payment.ts +23 -23
  107. package/src/contracts/haneulns/pricing_config.ts +16 -16
  108. package/src/contracts/haneulns/registry.ts +53 -67
  109. package/src/contracts/haneulns_coupons/coupon_house.ts +13 -13
  110. package/src/contracts/haneulns_coupons/range.ts +7 -7
  111. package/src/contracts/haneulns_coupons/rules.ts +27 -27
  112. package/src/contracts/haneulns_discounts/discounts.ts +7 -7
  113. package/src/contracts/haneulns_discounts/free_claims.ts +7 -7
  114. package/src/contracts/haneulns_payments/payments.ts +13 -13
  115. package/src/contracts/utils/index.ts +185 -24
@@ -1 +1 @@
1
- {"version":3,"file":"haneulns-client.mjs","names":["NameRecordBcs"],"sources":["../src/haneulns-client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport type { ClientWithCoreApi, HaneulClientTypes } from '@haneullabs/haneul/client';\nimport type { Transaction, TransactionObjectArgument } from '@haneullabs/haneul/transactions';\nimport { isValidHaneulNSName, normalizeHaneulNSName } from '@haneullabs/haneul/utils';\n\nimport { mainPackage } from './constants.js';\nimport { isSubName, validateYears } from './helpers.js';\nimport { HaneulPriceServiceConnection, HaneulPythClient } from './pyth/pyth.js';\nimport type {\n\tCoinTypeDiscount,\n\tNameRecord,\n\tPackageInfo,\n\tHaneulnsClientConfig,\n\tHaneulnsPriceList,\n} from './types.js';\n\nimport { ConfigKey } from './contracts/haneulns/haneulns.js';\nimport { Domain } from './contracts/haneulns/domain.js';\nimport { NameRecord as NameRecordBcs } from './contracts/haneulns/name_record.js';\nimport { PricingConfig, RenewalConfig } from './contracts/haneulns/pricing_config.js';\nimport { PaymentsConfig } from './contracts/haneulns_payments/payments.js';\n\nexport type HaneulnsExtensionOptions<Name extends string = 'haneulns'> = {\n\tname?: Name;\n\tpackageInfo?: PackageInfo;\n};\n\n/**\n * Creates a HaneulNS client extension that can be used with `client.$extend()`.\n *\n * @example\n * ```ts\n * import { HaneulJsonRpcClient, getJsonRpcFullnodeUrl } from '@haneullabs/haneul/jsonRpc';\n * import { haneulns } from '@haneullabs/haneulns';\n *\n * const client = new HaneulJsonRpcClient({\n * url: getJsonRpcFullnodeUrl('mainnet'),\n * network: 'mainnet',\n * }).$extend(haneulns());\n *\n * const nameRecord = await client.haneulns.getNameRecord('example.haneul');\n * ```\n */\nexport function haneulns<const Name extends string = 'haneulns'>({\n\tname = 'haneulns' as Name,\n\tpackageInfo,\n}: HaneulnsExtensionOptions<Name> = {}) {\n\treturn {\n\t\tname,\n\t\tregister: (client: ClientWithCoreApi) => {\n\t\t\treturn new HaneulnsClient({\n\t\t\t\tclient,\n\t\t\t\tnetwork: client.network,\n\t\t\t\tpackageInfo,\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport class HaneulnsClient {\n\tclient: ClientWithCoreApi;\n\tnetwork: HaneulClientTypes.Network;\n\tconfig: PackageInfo;\n\n\tconstructor(config: HaneulnsClientConfig) {\n\t\tthis.client = config.client;\n\t\tthis.network = config.network || 'mainnet';\n\n\t\tif (config.packageInfo) {\n\t\t\tthis.config = config.packageInfo;\n\t\t} else if (this.network === 'mainnet') {\n\t\t\tthis.config = mainPackage.mainnet;\n\t\t} else if (this.network === 'testnet') {\n\t\t\tthis.config = mainPackage.testnet;\n\t\t} else {\n\t\t\tthrow new Error('Invalid network');\n\t\t}\n\t}\n\n\t/**\n\t * Returns the price list for HaneulNS names in the base asset.\n\t */\n\n\t// Format:\n\t// {\n\t// \t[ 3, 3 ] => 500000000,\n\t// \t[ 4, 4 ] => 100000000,\n\t// \t[ 5, 63 ] => 20000000\n\t// }\n\tasync getPriceList(): Promise<HaneulnsPriceList> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::PricingConfig>`;\n\t\tconst nameBytes = ConfigKey.serialize({ dummy_field: false }).toBytes();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: nameBytes },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Price list not found or content is invalid');\n\t\t}\n\n\t\tconst pricingConfig = PricingConfig.parse(result.dynamicField.value.bcs);\n\t\tconst priceMap = new Map();\n\n\t\tfor (const entry of pricingConfig.pricing.contents) {\n\t\t\tconst key = [Number(entry.key[0]), Number(entry.key[1])];\n\t\t\tconst value = Number(entry.value);\n\t\t\tpriceMap.set(key, value);\n\t\t}\n\n\t\treturn priceMap;\n\t}\n\n\t/**\n\t * Returns the renewal price list for HaneulNS names in the base asset.\n\t */\n\n\t// Format:\n\t// {\n\t// \t[ 3, 3 ] => 500000000,\n\t// \t[ 4, 4 ] => 100000000,\n\t// \t[ 5, 63 ] => 20000000\n\t// }\n\tasync getRenewalPriceList(): Promise<HaneulnsPriceList> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::RenewalConfig>`;\n\t\tconst nameBytes = ConfigKey.serialize({ dummy_field: false }).toBytes();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: nameBytes },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Price list not found or content structure is invalid');\n\t\t}\n\n\t\tconst renewalConfig = RenewalConfig.parse(result.dynamicField.value.bcs);\n\t\tconst priceMap = new Map();\n\n\t\tfor (const entry of renewalConfig.config.pricing.contents) {\n\t\t\tconst key = [Number(entry.key[0]), Number(entry.key[1])];\n\t\t\tconst value = Number(entry.value);\n\t\t\tpriceMap.set(key, value);\n\t\t}\n\n\t\treturn priceMap;\n\t}\n\n\t/**\n\t * Returns the coin discount list for HaneulNS names.\n\t */\n\n\t// Format:\n\t// {\n\t// \t'b48aac3f53bab328e1eb4c5b3c34f55e760f2fb3f2305ee1a474878d80f650f0::TESTUSDC::TESTUSDC' => 0,\n\t// \t'0000000000000000000000000000000000000000000000000000000000000002::haneul::HANEUL' => 0,\n\t// \t'b48aac3f53bab328e1eb4c5b3c34f55e760f2fb3f2305ee1a474878d80f650f0::TESTNS::TESTNS' => 25\n\t// }\n\tasync getCoinTypeDiscount(): Promise<CoinTypeDiscount> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.payments.packageId}::payments::PaymentsConfig>`;\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: ConfigKey.serialize({ dummy_field: false }).toBytes() },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Payments config not found or content structure is invalid');\n\t\t}\n\n\t\tconst paymentsConfig = PaymentsConfig.parse(result.dynamicField.value.bcs);\n\t\tconst discountMap = new Map();\n\n\t\tfor (const entry of paymentsConfig.currencies.contents) {\n\t\t\tconst key = entry.key.name;\n\t\t\tconst value = Number(entry.value.discount_percentage);\n\t\t\tdiscountMap.set(key, value);\n\t\t}\n\n\t\treturn discountMap;\n\t}\n\n\tasync getNameRecord(name: string): Promise<NameRecord | null> {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tif (!this.config.registryTableId) throw new Error('Haneulns package ID is not set');\n\n\t\tconst labels = normalizeHaneulNSName(name, 'dot').split('.').reverse();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.registryTableId,\n\t\t\tname: {\n\t\t\t\ttype: `${this.config.packageIdV1}::domain::Domain`,\n\t\t\t\tbcs: Domain.serialize({ labels }).toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.dynamicField) return null;\n\n\t\tif (!result.dynamicField.value?.bcs) {\n\t\t\tthrow new Error('Name record not found. This domain is not registered.');\n\t\t}\n\n\t\tconst record = NameRecordBcs.parse(result.dynamicField.value.bcs);\n\n\t\tconst data: Record<string, string> = {};\n\t\tfor (const entry of record.data.contents) {\n\t\t\tdata[entry.key] = entry.value;\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\tnftId: record.nft_id,\n\t\t\ttargetAddress: record.target_address ?? '',\n\t\t\texpirationTimestampMs: Number(record.expiration_timestamp_ms),\n\t\t\tdata,\n\t\t\tavatar: data.avatar,\n\t\t\tcontentHash: data.content_hash,\n\t\t\twalrusSiteId: data.walrus_site_id,\n\t\t};\n\t}\n\n\t/**\n\t * Calculates the registration or renewal price for an SLD (Second Level Domain).\n\t * It expects a domain name, the number of years and a `HaneulnsPriceList` object,\n\t * as returned from `haneulnsClient.getPriceList()` function, or `haneulns.getRenewalPriceList()` function.\n\t *\n\t * It throws an error:\n\t * 1. if the name is a subdomain\n\t * 2. if the name is not a valid HaneulNS name\n\t * 3. if the years are not between 1 and 5\n\t */\n\tasync calculatePrice({\n\t\tname,\n\t\tyears,\n\t\tisRegistration = true,\n\t}: {\n\t\tname: string;\n\t\tyears: number;\n\t\tisRegistration?: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) {\n\t\t\tthrow new Error('Invalid HaneulNS name');\n\t\t}\n\t\tvalidateYears(years);\n\n\t\tif (isSubName(name)) {\n\t\t\tthrow new Error('Subdomains do not have a registration fee');\n\t\t}\n\n\t\tconst length = normalizeHaneulNSName(name, 'dot').split('.')[0].length;\n\t\tconst priceList = await this.getPriceList();\n\t\tconst renewalPriceList = await this.getRenewalPriceList();\n\t\tlet yearsRemain = years;\n\t\tlet price = 0;\n\n\t\tif (isRegistration) {\n\t\t\tfor (const [[minLength, maxLength], pricePerYear] of priceList.entries()) {\n\t\t\t\tif (length >= minLength && length <= maxLength) {\n\t\t\t\t\tprice += pricePerYear; // Registration is always 1 year\n\t\t\t\t\tyearsRemain -= 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const [[minLength, maxLength], pricePerYear] of renewalPriceList.entries()) {\n\t\t\tif (length >= minLength && length <= maxLength) {\n\t\t\t\tprice += yearsRemain * pricePerYear;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn price;\n\t}\n\n\tasync getPriceInfoObject(tx: Transaction, feed: string, feeCoin?: TransactionObjectArgument) {\n\t\tconst endpoint =\n\t\t\tthis.network === 'testnet'\n\t\t\t\t? 'https://hermes-beta.pyth.network'\n\t\t\t\t: 'https://hermes.pyth.network';\n\t\tconst connection = new HaneulPriceServiceConnection(endpoint);\n\t\tconst priceIDs = [feed];\n\t\tconst priceUpdateData = await connection.getPriceFeedsUpdateData(priceIDs);\n\n\t\tconst client = new HaneulPythClient(\n\t\t\tthis.client,\n\t\t\tthis.config.pyth.pythStateId,\n\t\t\tthis.config.pyth.wormholeStateId,\n\t\t);\n\n\t\treturn client.updatePriceFeeds(tx, priceUpdateData, priceIDs, feeCoin);\n\t}\n\n\tasync getPythBaseUpdateFee(): Promise<number> {\n\t\tconst client = new HaneulPythClient(\n\t\t\tthis.client,\n\t\t\tthis.config.pyth.pythStateId,\n\t\t\tthis.config.pyth.wormholeStateId,\n\t\t);\n\t\treturn client.getBaseUpdateFee();\n\t}\n\n\tasync getObjectType(objectId: string) {\n\t\tconst result = await this.client.core.getObject({ objectId });\n\n\t\tif (result.object?.type) {\n\t\t\treturn result.object.type;\n\t\t}\n\n\t\tthrow new Error(`Type information not found for object ID: ${objectId}`);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"haneulns-client.mjs","names":["NameRecordBcs"],"sources":["../src/haneulns-client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport type { ClientWithCoreApi, HaneulClientTypes } from '@haneullabs/haneul/client';\nimport type { Transaction, TransactionObjectArgument } from '@haneullabs/haneul/transactions';\nimport { isValidHaneulNSName, normalizeHaneulNSName } from '@haneullabs/haneul/utils';\n\nimport { mainPackage } from './constants.js';\nimport { isSubName, validateYears } from './helpers.js';\nimport { HaneulPriceServiceConnection, HaneulPythClient } from './pyth/pyth.js';\nimport type {\n\tCoinTypeDiscount,\n\tNameRecord,\n\tPackageInfo,\n\tHaneulnsClientConfig,\n\tHaneulnsPriceList,\n} from './types.js';\n\nimport { ConfigKey } from './contracts/haneulns/haneulns.js';\nimport { Domain } from './contracts/haneulns/domain.js';\nimport { NameRecord as NameRecordBcs } from './contracts/haneulns/name_record.js';\nimport { PricingConfig, RenewalConfig } from './contracts/haneulns/pricing_config.js';\nimport { PaymentsConfig } from './contracts/haneulns_payments/payments.js';\n\nexport type HaneulnsExtensionOptions<Name extends string = 'haneulns'> = {\n\tname?: Name;\n\tpackageInfo?: PackageInfo;\n};\n\n/**\n * Creates a HaneulNS client extension that can be used with `client.$extend()`.\n *\n * @example\n * ```ts\n * import { HaneulJsonRpcClient, getJsonRpcFullnodeUrl } from '@haneullabs/haneul/jsonRpc';\n * import { haneulns } from '@haneullabs/haneulns';\n *\n * const client = new HaneulJsonRpcClient({\n * url: getJsonRpcFullnodeUrl('mainnet'),\n * network: 'mainnet',\n * }).$extend(haneulns());\n *\n * const nameRecord = await client.haneulns.getNameRecord('example.haneul');\n * ```\n */\nexport function haneulns<const Name extends string = 'haneulns'>({\n\tname = 'haneulns' as Name,\n\tpackageInfo,\n}: HaneulnsExtensionOptions<Name> = {}) {\n\treturn {\n\t\tname,\n\t\tregister: (client: ClientWithCoreApi) => {\n\t\t\treturn new HaneulnsClient({\n\t\t\t\tclient,\n\t\t\t\tnetwork: client.network,\n\t\t\t\tpackageInfo,\n\t\t\t});\n\t\t},\n\t};\n}\n\nexport class HaneulnsClient {\n\tclient: ClientWithCoreApi;\n\tnetwork: HaneulClientTypes.Network;\n\tconfig: PackageInfo;\n\n\tconstructor(config: HaneulnsClientConfig) {\n\t\tthis.client = config.client;\n\t\tthis.network = config.network || 'mainnet';\n\n\t\tif (config.packageInfo) {\n\t\t\tthis.config = config.packageInfo;\n\t\t} else if (this.network === 'mainnet') {\n\t\t\tthis.config = mainPackage.mainnet;\n\t\t} else if (this.network === 'testnet') {\n\t\t\tthis.config = mainPackage.testnet;\n\t\t} else {\n\t\t\tthrow new Error('Invalid network');\n\t\t}\n\t}\n\n\t/**\n\t * Returns the price list for HaneulNS names in the base asset.\n\t */\n\n\t// Format:\n\t// {\n\t// \t[ 3, 3 ] => 500000000,\n\t// \t[ 4, 4 ] => 100000000,\n\t// \t[ 5, 63 ] => 20000000\n\t// }\n\tasync getPriceList(): Promise<HaneulnsPriceList> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::PricingConfig>`;\n\t\tconst nameBytes = ConfigKey.serialize({ dummy_field: false }).toBytes();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: nameBytes },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Price list not found or content is invalid');\n\t\t}\n\n\t\tconst pricingConfig = PricingConfig.parse(result.dynamicField.value.bcs);\n\t\tconst priceMap = new Map();\n\n\t\tfor (const entry of pricingConfig.pricing.contents) {\n\t\t\tconst key = [Number(entry.key[0]), Number(entry.key[1])];\n\t\t\tconst value = Number(entry.value);\n\t\t\tpriceMap.set(key, value);\n\t\t}\n\n\t\treturn priceMap;\n\t}\n\n\t/**\n\t * Returns the renewal price list for HaneulNS names in the base asset.\n\t */\n\n\t// Format:\n\t// {\n\t// \t[ 3, 3 ] => 500000000,\n\t// \t[ 4, 4 ] => 100000000,\n\t// \t[ 5, 63 ] => 20000000\n\t// }\n\tasync getRenewalPriceList(): Promise<HaneulnsPriceList> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.packageIdPricing}::pricing_config::RenewalConfig>`;\n\t\tconst nameBytes = ConfigKey.serialize({ dummy_field: false }).toBytes();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: nameBytes },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Price list not found or content structure is invalid');\n\t\t}\n\n\t\tconst renewalConfig = RenewalConfig.parse(result.dynamicField.value.bcs);\n\t\tconst priceMap = new Map();\n\n\t\tfor (const entry of renewalConfig.config.pricing.contents) {\n\t\t\tconst key = [Number(entry.key[0]), Number(entry.key[1])];\n\t\t\tconst value = Number(entry.value);\n\t\t\tpriceMap.set(key, value);\n\t\t}\n\n\t\treturn priceMap;\n\t}\n\n\t/**\n\t * Returns the coin discount list for HaneulNS names.\n\t */\n\n\t// Format:\n\t// {\n\t// \t'b48aac3f53bab328e1eb4c5b3c34f55e760f2fb3f2305ee1a474878d80f650f0::TESTUSDC::TESTUSDC' => 0,\n\t// \t'0000000000000000000000000000000000000000000000000000000000000002::haneul::HANEUL' => 0,\n\t// \t'b48aac3f53bab328e1eb4c5b3c34f55e760f2fb3f2305ee1a474878d80f650f0::TESTNS::TESTNS' => 25\n\t// }\n\tasync getCoinTypeDiscount(): Promise<CoinTypeDiscount> {\n\t\tif (!this.config.haneulns) throw new Error('Haneulns object ID is not set');\n\t\tif (!this.config.packageId) throw new Error('Price list config not found');\n\n\t\tconst configType = `${this.config.packageIdV1}::haneulns::ConfigKey<${this.config.payments.packageId}::payments::PaymentsConfig>`;\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.haneulns,\n\t\t\tname: { type: configType, bcs: ConfigKey.serialize({ dummy_field: false }).toBytes() },\n\t\t});\n\n\t\tif (!result.dynamicField?.value?.bcs) {\n\t\t\tthrow new Error('Payments config not found or content structure is invalid');\n\t\t}\n\n\t\tconst paymentsConfig = PaymentsConfig.parse(result.dynamicField.value.bcs);\n\t\tconst discountMap = new Map();\n\n\t\tfor (const entry of paymentsConfig.currencies.contents) {\n\t\t\tconst key = entry.key.name;\n\t\t\tconst value = Number(entry.value.discount_percentage);\n\t\t\tdiscountMap.set(key, value);\n\t\t}\n\n\t\treturn discountMap;\n\t}\n\n\tasync getNameRecord(name: string): Promise<NameRecord | null> {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tif (!this.config.registryTableId) throw new Error('Haneulns package ID is not set');\n\n\t\tconst labels = normalizeHaneulNSName(name, 'dot').split('.').reverse();\n\n\t\tconst result = await this.client.core.getDynamicField({\n\t\t\tparentId: this.config.registryTableId,\n\t\t\tname: {\n\t\t\t\ttype: `${this.config.packageIdV1}::domain::Domain`,\n\t\t\t\tbcs: Domain.serialize({ labels }).toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.dynamicField) return null;\n\n\t\tif (!result.dynamicField.value?.bcs) {\n\t\t\tthrow new Error('Name record not found. This domain is not registered.');\n\t\t}\n\n\t\tconst record = NameRecordBcs.parse(result.dynamicField.value.bcs);\n\n\t\tconst data: Record<string, string> = {};\n\t\tfor (const entry of record.data.contents) {\n\t\t\tdata[entry.key] = entry.value;\n\t\t}\n\n\t\treturn {\n\t\t\tname,\n\t\t\tnftId: record.nft_id,\n\t\t\ttargetAddress: record.target_address ?? '',\n\t\t\texpirationTimestampMs: Number(record.expiration_timestamp_ms),\n\t\t\tdata,\n\t\t\tavatar: data.avatar,\n\t\t\tcontentHash: data.content_hash,\n\t\t\twalrusSiteId: data.walrus_site_id,\n\t\t};\n\t}\n\n\t/**\n\t * Calculates the registration or renewal price for an SLD (Second Level Domain).\n\t * It expects a domain name, the number of years and a `HaneulnsPriceList` object,\n\t * as returned from `haneulnsClient.getPriceList()` function, or `haneulns.getRenewalPriceList()` function.\n\t *\n\t * It throws an error:\n\t * 1. if the name is a subdomain\n\t * 2. if the name is not a valid HaneulNS name\n\t * 3. if the years are not between 1 and 5\n\t */\n\tasync calculatePrice({\n\t\tname,\n\t\tyears,\n\t\tisRegistration = true,\n\t}: {\n\t\tname: string;\n\t\tyears: number;\n\t\tisRegistration?: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) {\n\t\t\tthrow new Error('Invalid HaneulNS name');\n\t\t}\n\t\tvalidateYears(years);\n\n\t\tif (isSubName(name)) {\n\t\t\tthrow new Error('Subdomains do not have a registration fee');\n\t\t}\n\n\t\tconst length = normalizeHaneulNSName(name, 'dot').split('.')[0].length;\n\t\tconst priceList = await this.getPriceList();\n\t\tconst renewalPriceList = await this.getRenewalPriceList();\n\t\tlet yearsRemain = years;\n\t\tlet price = 0;\n\n\t\tif (isRegistration) {\n\t\t\tfor (const [[minLength, maxLength], pricePerYear] of priceList.entries()) {\n\t\t\t\tif (length >= minLength && length <= maxLength) {\n\t\t\t\t\tprice += pricePerYear; // Registration is always 1 year\n\t\t\t\t\tyearsRemain -= 1;\n\t\t\t\t\tbreak;\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\n\t\tfor (const [[minLength, maxLength], pricePerYear] of renewalPriceList.entries()) {\n\t\t\tif (length >= minLength && length <= maxLength) {\n\t\t\t\tprice += yearsRemain * pricePerYear;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn price;\n\t}\n\n\tasync getPriceInfoObject(tx: Transaction, feed: string, feeCoin?: TransactionObjectArgument) {\n\t\tconst endpoint =\n\t\t\tthis.network === 'testnet'\n\t\t\t\t? 'https://hermes-beta.pyth.network'\n\t\t\t\t: 'https://hermes.pyth.network';\n\t\tconst connection = new HaneulPriceServiceConnection(endpoint);\n\t\tconst priceIDs = [feed];\n\t\tconst priceUpdateData = await connection.getPriceFeedsUpdateData(priceIDs);\n\n\t\tconst client = new HaneulPythClient(\n\t\t\tthis.client,\n\t\t\tthis.config.pyth.pythStateId,\n\t\t\tthis.config.pyth.wormholeStateId,\n\t\t);\n\n\t\treturn client.updatePriceFeeds(tx, priceUpdateData, priceIDs, feeCoin);\n\t}\n\n\tasync getPythBaseUpdateFee(): Promise<number> {\n\t\tconst client = new HaneulPythClient(\n\t\t\tthis.client,\n\t\t\tthis.config.pyth.pythStateId,\n\t\t\tthis.config.pyth.wormholeStateId,\n\t\t);\n\t\treturn client.getBaseUpdateFee();\n\t}\n\n\tasync getObjectType(objectId: string) {\n\t\tconst result = await this.client.core.getObject({ objectId });\n\n\t\tif (result.object?.type) {\n\t\t\treturn result.object.type;\n\t\t}\n\n\t\tthrow new Error(`Type information not found for object ID: ${objectId}`);\n\t}\n}\n"],"mappings":"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"}
@@ -1,6 +1,5 @@
1
1
  import { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from "./types.mjs";
2
2
  import { HaneulnsClient } from "./haneulns-client.mjs";
3
- import * as _haneullabs_haneul_transactions0 from "@haneullabs/haneul/transactions";
4
3
  import { Transaction, TransactionObjectArgument, TransactionObjectInput } from "@haneullabs/haneul/transactions";
5
4
 
6
5
  //#region src/haneulns-transaction.d.ts
@@ -48,7 +47,7 @@ declare class HaneulnsTransaction {
48
47
  expirationTimestampMs: number;
49
48
  allowChildCreation: boolean;
50
49
  allowTimeExtension: boolean;
51
- }): _haneullabs_haneul_transactions0.TransactionResult;
50
+ }): import("@haneullabs/haneul/transactions").TransactionResult;
52
51
  /**
53
52
  * Builds the PTB to create a leaf subdomain.
54
53
  * Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.
@@ -1 +1 @@
1
- {"version":3,"file":"haneulns-transaction.d.mts","names":[],"sources":["../src/haneulns-transaction.ts"],"mappings":";;;;;;cAuBa,mBAAA;EACZ,cAAA,EAAgB,cAAA;EAChB,WAAA,EAAa,WAAA;cAED,MAAA,EAAQ,cAAA,EAAgB,WAAA,EAAa,WAAA;EAJlB;;;EAY/B,QAAA,CAAS,MAAA,EAAQ,kBAAA,GAAqB,yBAAA;EARlB;;;EAqDpB,KAAA,CAAM,MAAA,EAAQ,aAAA;EA2Bd,gBAAA,CAAiB,MAAA,WAAiB,yBAAA;EAUlC,WAAA,CAAY,GAAA,EAAK,sBAAA,EAAwB,KAAA,WAAgB,yBAAA;EAUzD,cAAA,CACC,UAAA,EAAY,yBAAA,EACZ,WAAA,UACA,iBAAA,WACE,yBAAA;EAeH,iBAAA,CACC,aAAA,EAAe,yBAAA,EACf,UAAA,EAAY,yBAAA,EACZ,WAAA,WACE,yBAAA;EAgBH,aAAA,CACC,aAAA,EAAe,yBAAA,EACf,UAAA,EAAY,yBAAA,EACZ,WAAA,UACA,iBAAA,UACA,SAAA,YACE,yBAAA;EAkBH,gBAAA,CAAiB,OAAA,EAAS,yBAAA,GAA4B,yBAAA;EAUtD,aAAA,CACC,OAAA,EAAS,yBAAA,EACT,GAAA,EAAK,sBAAA,GACH,yBAAA;EAUH,2BAAA,CACC,aAAA,EAAe,yBAAA,EACf,WAAA,WACE,yBAAA;EAWH,eAAA,CAAgB,MAAA,EAAQ,aAAA,GAAgB,yBAAA;EA5DxB;;;EA+FhB,WAAA,CAAY,MAAA,EAAQ,yBAAA,EAA2B,UAAA,WAAqB,yBAAA;EAxEd;;;EAqFtD,aAAA,CAAc,MAAA,EAAQ,yBAAA,EAA2B,YAAA,EAAc,YAAA;EA7D/C;;;EAgGhB,aAAA,CAAA;IACC,SAAA;IACA,IAAA;IACA,qBAAA;IACA,kBAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,qBAAA;IACA,kBAAA;IACA,kBAAA;EAAA,IAJiC,gCAAA,CAKjC,iBAAA;EATA;;;;;EAyCD,iBAAA,CAAA;IACC,SAAA;IACA,IAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,aAAA;EAAA;EA2B8B;;;EAA/B,iBAAA,CAAA;IAAoB,SAAA;IAAW;EAAA;IAAU,SAAA,EAAW,sBAAA;IAAwB,IAAA;EAAA;EA0E3E;;;EAhDD,gBAAA,CAAA;IACC,GAAA;IAAA;IACA,OAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,OAAA;IACA,SAAA;EAAA;EAuGA;;;EAlFD,UAAA,CAAW,IAAA;EAiHQ;;;EA/FnB,SAAA,CAAA;IACC,SAAA;IACA,IAAA;IACA,kBAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,kBAAA;IACA,kBAAA;EAAA;EA1bmB;;;EAsdpB,gBAAA,CAAA;IACC,GAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,qBAAA;EAAA;EAndqC;;;EAsetC,WAAA,CAAA;IACC,GAAA;IACA,KAAA;IACA,GAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,KAAA;IACA,GAAA;IACA,SAAA;EAAA;EA7ZW;;;EAsbZ,WAAA,CAAA;IAAc,GAAA;IAAK;EAAA;IAAe,GAAA,EAAK,sBAAA;IAAwB,SAAA;EAAA;AAAA"}
1
+ {"version":3,"file":"haneulns-transaction.d.mts","names":[],"sources":["../src/haneulns-transaction.ts"],"mappings":";;;;;cAuBa,mBAAA;EACZ,cAAA,EAAgB,cAAA;EAChB,WAAA,EAAa,WAAA;cAED,MAAA,EAAQ,cAAA,EAAgB,WAAA,EAAa,WAAA;;;;EAQjD,QAAA,CAAS,MAAA,EAAQ,kBAAA,GAAqB,yBAAA;EARW;;;EAqDjD,KAAA,CAAM,MAAA,EAAQ,aAAA;EA2Bd,gBAAA,CAAiB,MAAA,WAAiB,yBAAA;EAUlC,WAAA,CAAY,GAAA,EAAK,sBAAA,EAAwB,KAAA,WAAgB,yBAAA;EAUzD,cAAA,CACC,UAAA,EAAY,yBAAA,EACZ,WAAA,UACA,iBAAA,WACE,yBAAA;EAeH,iBAAA,CACC,aAAA,EAAe,yBAAA,EACf,UAAA,EAAY,yBAAA,EACZ,WAAA,WACE,yBAAA;EAgBH,aAAA,CACC,aAAA,EAAe,yBAAA,EACf,UAAA,EAAY,yBAAA,EACZ,WAAA,UACA,iBAAA,UACA,SAAA,YACE,yBAAA;EAkBH,gBAAA,CAAiB,OAAA,EAAS,yBAAA,GAA4B,yBAAA;EAUtD,aAAA,CACC,OAAA,EAAS,yBAAA,EACT,GAAA,EAAK,sBAAA,GACH,yBAAA;EAUH,2BAAA,CACC,aAAA,EAAe,yBAAA,EACf,WAAA,WACE,yBAAA;EAWH,eAAA,CAAgB,MAAA,EAAQ,aAAA,GAAgB,yBAAA;EA3D3B;;;EA8Fb,WAAA,CAAY,MAAA,EAAQ,yBAAA,EAA2B,UAAA,WAAqB,yBAAA;EA7D1D;;;EA0EV,aAAA,CAAc,MAAA,EAAQ,yBAAA,EAA2B,YAAA,EAAc,YAAA;EA3D5D;;;EA8FH,aAAA;IACC,SAAA;IACA,IAAA;IACA,qBAAA;IACA,kBAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,qBAAA;IACA,kBAAA;IACA,kBAAA;EAAA,8CACA,iBAAA;EARA;;;;;EAwCD,iBAAA;IACC,SAAA;IACA,IAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,aAAA;EAAA;EAsDA;;;EA3BD,iBAAA;IAAoB,SAAA;IAAW;EAAA;IAAU,SAAA,EAAW,sBAAA;IAAwB,IAAA;EAAA;EA4E3E;;;EAlDD,gBAAA;IACC,GAAA;IAAA;IACA,OAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,OAAA;IACA,SAAA;EAAA;EA0GK;;;EArFN,UAAA,CAAW,IAAA;EAiHkD;;;EA/F7D,SAAA;IACC,SAAA;IACA,IAAA;IACA,kBAAA;IACA;EAAA;IAEA,SAAA,EAAW,sBAAA;IACX,IAAA;IACA,kBAAA;IACA,kBAAA;EAAA;EA1bgD;;;EAsdjD,gBAAA;IACC,GAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,qBAAA;EAAA;EAtaa;;;EAybd,WAAA;IACC,GAAA;IACA,KAAA;IACA,GAAA;IACA;EAAA;IAEA,GAAA,EAAK,sBAAA;IACL,KAAA;IACA,GAAA;IACA,SAAA;EAAA;EA7ZwD;;;EAsbzD,WAAA;IAAc,GAAA;IAAK;EAAA;IAAe,GAAA,EAAK,sBAAA;IAAwB,SAAA;EAAA;AAAA"}
@@ -8,7 +8,6 @@ import { applyPercentageDiscount } from "./contracts/haneulns_discounts/discount
8
8
  import { freeClaim } from "./contracts/haneulns_discounts/free_claims.mjs";
9
9
  import { HANEUL_CLOCK_OBJECT_ID, isValidHaneulNSName, normalizeHaneulNSName } from "@haneullabs/haneul/utils";
10
10
  import { bcs } from "@haneullabs/haneul/bcs";
11
-
12
11
  //#region src/haneulns-transaction.ts
13
12
  var HaneulnsTransaction = class {
14
13
  constructor(client, transaction) {
@@ -378,7 +377,7 @@ var HaneulnsTransaction = class {
378
377
  }));
379
378
  }
380
379
  };
381
-
382
380
  //#endregion
383
381
  export { HaneulnsTransaction };
382
+
384
383
  //# sourceMappingURL=haneulns-transaction.mjs.map
@@ -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 { 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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"}
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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"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"helpers.d.mts","names":[],"sources":["../src/helpers.ts"],"mappings":";;;iBAMgB,SAAA,CAAU,IAAY;;AAAtC;;;;iBASgB,eAAA,CAAgB,IAAY;AAA5C;;;AAAA,iBAOgB,aAAA,CAAc,KAAa;AAAA,iBAW3B,aAAA,CAAc,iBAAA,UAA2B,SAAiB;AAAA,iBAI1D,aAAA,CAAc,iBAAyB;AAAA,iBAIvC,sBAAA,CAAuB,iBAAyB;AAAA,iBAIhD,6BAAA,CAA8B,iBAAyB;AAAA,iBAIvD,yBAAA,CAA0B,gBAAwB"}
package/dist/helpers.mjs CHANGED
@@ -1,5 +1,4 @@
1
1
  import { normalizeHaneulNSName } from "@haneullabs/haneul/utils";
2
-
3
2
  //#region src/helpers.ts
4
3
  function isSubName(name) {
5
4
  return normalizeHaneulNSName(name, "dot").split(".").length > 2;
@@ -39,7 +38,7 @@ function getRenewalPricelistConfigType(haneulnsPackageId) {
39
38
  function getCoinDiscountConfigType(paymentPackageId) {
40
39
  return `${paymentPackageId}::payments::PaymentsConfig`;
41
40
  }
42
-
43
41
  //#endregion
44
42
  export { getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, isNestedSubName, isSubName, validateYears, zeroCoin };
43
+
45
44
  //# sourceMappingURL=helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"helpers.mjs","names":[],"sources":["../src/helpers.ts"],"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"],"mappings":";;;AAMA,SAAgB,UAAU,MAAuB;AAChD,QAAO,sBAAsB,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS;;;;;;;AAQ/D,SAAgB,gBAAgB,MAAuB;AACtD,QAAO,sBAAsB,MAAM,MAAM,CAAC,MAAM,IAAI,CAAC,SAAS;;;;;AAM/D,SAAgB,cAAc,OAAe;AAC5C,KAAI,EAAE,QAAQ,KAAK,QAAQ,GAAI,OAAM,IAAI,MAAM,gCAAgC;;AAGhF,SAAgB,SAAS,IAAiB,MAAc;AACvD,QAAO,GAAG,SAAS;EAClB,QAAQ;EACR,eAAe,CAAC,KAAK;EACrB,CAAC;;AAGH,SAAgB,cAAc,mBAA2B,WAA2B;AACnF,QAAO,GAAG,kBAAkB,wBAAwB,UAAU;;AAG/D,SAAgB,cAAc,mBAAmC;AAChE,QAAO,GAAG,kBAAkB;;AAG7B,SAAgB,uBAAuB,mBAAmC;AACzE,QAAO,GAAG,kBAAkB;;AAG7B,SAAgB,8BAA8B,mBAAmC;AAChF,QAAO,GAAG,kBAAkB;;AAG7B,SAAgB,0BAA0B,kBAAkC;AAC3E,QAAO,GAAG,iBAAiB"}
1
+ {"version":3,"file":"helpers.mjs","names":[],"sources":["../src/helpers.ts"],"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"],"mappings":";;AAMA,SAAgB,UAAU,MAAuB;CAChD,OAAO,sBAAsB,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS;AAC/D;;;;;;AAOA,SAAgB,gBAAgB,MAAuB;CACtD,OAAO,sBAAsB,MAAM,KAAK,CAAC,CAAC,MAAM,GAAG,CAAC,CAAC,SAAS;AAC/D;;;;AAKA,SAAgB,cAAc,OAAe;CAC5C,IAAI,EAAE,QAAQ,KAAK,QAAQ,IAAI,MAAM,IAAI,MAAM,+BAA+B;AAC/E;AAEA,SAAgB,SAAS,IAAiB,MAAc;CACvD,OAAO,GAAG,SAAS;EAClB,QAAQ;EACR,eAAe,CAAC,IAAI;CACrB,CAAC;AACF;AAEA,SAAgB,cAAc,mBAA2B,WAA2B;CACnF,OAAO,GAAG,kBAAkB,wBAAwB,UAAU;AAC/D;AAEA,SAAgB,cAAc,mBAAmC;CAChE,OAAO,GAAG,kBAAkB;AAC7B;AAEA,SAAgB,uBAAuB,mBAAmC;CACzE,OAAO,GAAG,kBAAkB;AAC7B;AAEA,SAAgB,8BAA8B,mBAAmC;CAChF,OAAO,GAAG,kBAAkB;AAC7B;AAEA,SAAgB,0BAA0B,kBAAkC;CAC3E,OAAO,GAAG,iBAAiB;AAC5B"}
package/dist/index.mjs CHANGED
@@ -2,5 +2,4 @@ import { ALLOWED_METADATA, mainPackage } from "./constants.mjs";
2
2
  import { getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, isNestedSubName, isSubName, validateYears } from "./helpers.mjs";
3
3
  import { HaneulnsClient, haneulns } from "./haneulns-client.mjs";
4
4
  import { HaneulnsTransaction } from "./haneulns-transaction.mjs";
5
-
6
- export { ALLOWED_METADATA, HaneulnsClient, HaneulnsTransaction, getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, haneulns, isNestedSubName, isSubName, mainPackage, validateYears };
5
+ export { ALLOWED_METADATA, HaneulnsClient, HaneulnsTransaction, getCoinDiscountConfigType, getConfigType, getDomainType, getPricelistConfigType, getRenewalPricelistConfigType, haneulns, isNestedSubName, isSubName, mainPackage, validateYears };
@@ -1,6 +1,5 @@
1
1
  import axios from "axios";
2
2
  import axiosRetry from "axios-retry";
3
-
4
3
  //#region src/pyth/PriceServiceConnection.ts
5
4
  var PriceServiceConnection = class {
6
5
  /**
@@ -29,7 +28,7 @@ var PriceServiceConnection = class {
29
28
  return (await this.httpClient.get("/api/latest_vaas", { params: { ids: priceIds } })).data;
30
29
  }
31
30
  };
32
-
33
31
  //#endregion
34
32
  export { PriceServiceConnection };
33
+
35
34
  //# sourceMappingURL=PriceServiceConnection.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"PriceServiceConnection.mjs","names":[],"sources":["../../src/pyth/PriceServiceConnection.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport axios from 'axios';\nimport type { AxiosInstance } from 'axios';\nimport axiosRetry from 'axios-retry';\n\nexport type HexString = string;\nexport type PriceFeedRequestConfig = {\n\tverbose?: boolean;\n\tbinary?: boolean;\n};\nexport type PriceServiceConnectionConfig = {\n\ttimeout?: number;\n\thttpRetries?: number;\n};\nexport class PriceServiceConnection {\n\tprivate httpClient: AxiosInstance;\n\t/**\n\t * Constructs a new Connection.\n\t *\n\t * @param endpoint endpoint URL to the price service.\n\t * @param config Optional configuration for custom setups.\n\t */\n\tconstructor(endpoint: string, config?: PriceServiceConnectionConfig) {\n\t\tthis.httpClient = axios.create({\n\t\t\tbaseURL: endpoint,\n\t\t\ttimeout: config?.timeout || 5000,\n\t\t});\n\t\taxiosRetry(this.httpClient, {\n\t\t\tretries: config?.httpRetries || 3,\n\t\t\tretryDelay: axiosRetry.exponentialDelay,\n\t\t});\n\t}\n\t/**\n\t * Fetch latest VAAs of given price IDs.\n\t *\n\t * @param priceIds Array of hex-encoded price IDs.\n\t * @returns Array of base64 encoded VAAs.\n\t */\n\tasync getLatestVaas(priceIds: HexString[]): Promise<string[]> {\n\t\tconst response = await this.httpClient.get('/api/latest_vaas', {\n\t\t\tparams: {\n\t\t\t\tids: priceIds,\n\t\t\t},\n\t\t});\n\t\treturn response.data;\n\t}\n}\n"],"mappings":";;;;AAeA,IAAa,yBAAb,MAAoC;;;;;;;CAQnC,YAAY,UAAkB,QAAuC;AACpE,OAAK,aAAa,MAAM,OAAO;GAC9B,SAAS;GACT,0DAAS,OAAQ,YAAW;GAC5B,CAAC;AACF,aAAW,KAAK,YAAY;GAC3B,0DAAS,OAAQ,gBAAe;GAChC,YAAY,WAAW;GACvB,CAAC;;;;;;;;CAQH,MAAM,cAAc,UAA0C;AAM7D,UALiB,MAAM,KAAK,WAAW,IAAI,oBAAoB,EAC9D,QAAQ,EACP,KAAK,UACL,EACD,CAAC,EACc"}
1
+ {"version":3,"file":"PriceServiceConnection.mjs","names":[],"sources":["../../src/pyth/PriceServiceConnection.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport axios from 'axios';\nimport type { AxiosInstance } from 'axios';\nimport axiosRetry from 'axios-retry';\n\nexport type HexString = string;\nexport type PriceFeedRequestConfig = {\n\tverbose?: boolean;\n\tbinary?: boolean;\n};\nexport type PriceServiceConnectionConfig = {\n\ttimeout?: number;\n\thttpRetries?: number;\n};\nexport class PriceServiceConnection {\n\tprivate httpClient: AxiosInstance;\n\t/**\n\t * Constructs a new Connection.\n\t *\n\t * @param endpoint endpoint URL to the price service.\n\t * @param config Optional configuration for custom setups.\n\t */\n\tconstructor(endpoint: string, config?: PriceServiceConnectionConfig) {\n\t\tthis.httpClient = axios.create({\n\t\t\tbaseURL: endpoint,\n\t\t\ttimeout: config?.timeout || 5000,\n\t\t});\n\t\taxiosRetry(this.httpClient, {\n\t\t\tretries: config?.httpRetries || 3,\n\t\t\tretryDelay: axiosRetry.exponentialDelay,\n\t\t});\n\t}\n\t/**\n\t * Fetch latest VAAs of given price IDs.\n\t *\n\t * @param priceIds Array of hex-encoded price IDs.\n\t * @returns Array of base64 encoded VAAs.\n\t */\n\tasync getLatestVaas(priceIds: HexString[]): Promise<string[]> {\n\t\tconst response = await this.httpClient.get('/api/latest_vaas', {\n\t\t\tparams: {\n\t\t\t\tids: priceIds,\n\t\t\t},\n\t\t});\n\t\treturn response.data;\n\t}\n}\n"],"mappings":";;;AAeA,IAAa,yBAAb,MAAoC;;;;;;;CAQnC,YAAY,UAAkB,QAAuC;EACpE,KAAK,aAAa,MAAM,OAAO;GAC9B,SAAS;GACT,UAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAS,OAAQ,YAAW;EAC7B,CAAC;EACD,WAAW,KAAK,YAAY;GAC3B,UAAA,WAAA,QAAA,WAAA,KAAA,IAAA,KAAA,IAAS,OAAQ,gBAAe;GAChC,YAAY,WAAW;EACxB,CAAC;CACF;;;;;;;CAOA,MAAM,cAAc,UAA0C;EAM7D,QAAO,MALgB,KAAK,WAAW,IAAI,oBAAoB,EAC9D,QAAQ,EACP,KAAK,SACN,EACD,CAAC,EAAA,CACe;CACjB;AACD"}
@@ -12,7 +12,7 @@ function extractVaaBytesFromAccumulatorMessage(accumulatorMessage) {
12
12
  const vaaOffset = vaaSizeOffset + 2;
13
13
  return accumulatorMessage.subarray(vaaOffset, vaaOffset + vaaSize);
14
14
  }
15
-
16
15
  //#endregion
17
16
  export { extractVaaBytesFromAccumulatorMessage };
17
+
18
18
  //# sourceMappingURL=pyth-helpers.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pyth-helpers.mjs","names":[],"sources":["../../src/pyth/pyth-helpers.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Extracts the VAA bytes embedded in an accumulator message.\n *\n * @param accumulatorMessage The accumulator price update message as a Uint8Array.\n * @returns VAA bytes as a Uint8Array.\n */\nexport function extractVaaBytesFromAccumulatorMessage(accumulatorMessage: Uint8Array): Uint8Array {\n\tconst dataView = new DataView(\n\t\taccumulatorMessage.buffer,\n\t\taccumulatorMessage.byteOffset,\n\t\taccumulatorMessage.byteLength,\n\t);\n\n\tconst trailingPayloadSize = dataView.getUint8(6);\n\tconst vaaSizeOffset = 7 + trailingPayloadSize + 1; // Header (7 bytes), trailing payload size, proof type\n\tconst vaaSize = dataView.getUint16(vaaSizeOffset, false); // Read 2 bytes for VAA size (big-endian)\n\tconst vaaOffset = vaaSizeOffset + 2; // VAA size is 2 bytes\n\n\treturn accumulatorMessage.subarray(vaaOffset, vaaOffset + vaaSize);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,sCAAsC,oBAA4C;CACjG,MAAM,WAAW,IAAI,SACpB,mBAAmB,QACnB,mBAAmB,YACnB,mBAAmB,WACnB;CAGD,MAAM,gBAAgB,IADM,SAAS,SAAS,EAAE,GACA;CAChD,MAAM,UAAU,SAAS,UAAU,eAAe,MAAM;CACxD,MAAM,YAAY,gBAAgB;AAElC,QAAO,mBAAmB,SAAS,WAAW,YAAY,QAAQ"}
1
+ {"version":3,"file":"pyth-helpers.mjs","names":[],"sources":["../../src/pyth/pyth-helpers.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n/**\n * Extracts the VAA bytes embedded in an accumulator message.\n *\n * @param accumulatorMessage The accumulator price update message as a Uint8Array.\n * @returns VAA bytes as a Uint8Array.\n */\nexport function extractVaaBytesFromAccumulatorMessage(accumulatorMessage: Uint8Array): Uint8Array {\n\tconst dataView = new DataView(\n\t\taccumulatorMessage.buffer,\n\t\taccumulatorMessage.byteOffset,\n\t\taccumulatorMessage.byteLength,\n\t);\n\n\tconst trailingPayloadSize = dataView.getUint8(6);\n\tconst vaaSizeOffset = 7 + trailingPayloadSize + 1; // Header (7 bytes), trailing payload size, proof type\n\tconst vaaSize = dataView.getUint16(vaaSizeOffset, false); // Read 2 bytes for VAA size (big-endian)\n\tconst vaaOffset = vaaSizeOffset + 2; // VAA size is 2 bytes\n\n\treturn accumulatorMessage.subarray(vaaOffset, vaaOffset + vaaSize);\n}\n"],"mappings":";;;;;;;AASA,SAAgB,sCAAsC,oBAA4C;CACjG,MAAM,WAAW,IAAI,SACpB,mBAAmB,QACnB,mBAAmB,YACnB,mBAAmB,UACpB;CAGA,MAAM,gBAAgB,IADM,SAAS,SAAS,CACF,IAAI;CAChD,MAAM,UAAU,SAAS,UAAU,eAAe,KAAK;CACvD,MAAM,YAAY,gBAAgB;CAElC,OAAO,mBAAmB,SAAS,WAAW,YAAY,OAAO;AAClE"}
@@ -5,7 +5,6 @@ import { State as State$1 } from "../contracts/wormhole/state.mjs";
5
5
  import { fromBase64, fromHex, parseStructTag } from "@haneullabs/haneul/utils";
6
6
  import { bcs } from "@haneullabs/haneul/bcs";
7
7
  import { coinWithBalance } from "@haneullabs/haneul/transactions";
8
-
9
8
  //#region src/pyth/pyth.ts
10
9
  const MAX_ARGUMENT_SIZE = 16 * 1024;
11
10
  var HaneulPriceServiceConnection = class extends PriceServiceConnection {
@@ -132,10 +131,13 @@ var HaneulPythClient = class {
132
131
  * @returns Price table object ID and field type
133
132
  */
134
133
  getPriceTableInfo() {
135
- if (!this.#priceTableInfo) this.#priceTableInfo = this.#fetchPriceTableInfo().catch((err) => {
136
- this.#priceTableInfo = void 0;
137
- throw err;
138
- });
134
+ if (!this.#priceTableInfo) {
135
+ const promise = this.#fetchPriceTableInfo().catch((err) => {
136
+ this.#priceTableInfo = void 0;
137
+ throw err;
138
+ });
139
+ this.#priceTableInfo = promise;
140
+ }
139
141
  return this.#priceTableInfo;
140
142
  }
141
143
  /**
@@ -213,7 +215,7 @@ var HaneulPythClient = class {
213
215
  return Number(state.base_update_fee);
214
216
  }
215
217
  };
216
-
217
218
  //#endregion
218
219
  export { HaneulPriceServiceConnection, HaneulPythClient };
220
+
219
221
  //# sourceMappingURL=pyth.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"pyth.mjs","names":["#priceFeedObjectIdCache","#fetchPriceFeedObjectId","#priceTableInfo","#fetchPriceTableInfo","#wormholePackageId","#fetchWormholePackageId","WormholeState","#pythState","#fetchPythState","PythState","#getPythState"],"sources":["../../src/pyth/pyth.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport type { ClientWithCoreApi } from '@haneullabs/haneul/client';\nimport type { Transaction, TransactionObjectArgument } from '@haneullabs/haneul/transactions';\nimport { coinWithBalance } from '@haneullabs/haneul/transactions';\nimport { fromBase64, fromHex, parseStructTag } from '@haneullabs/haneul/utils';\n\nimport type { HexString } from './PriceServiceConnection.js';\nimport { PriceServiceConnection } from './PriceServiceConnection.js';\nimport { extractVaaBytesFromAccumulatorMessage } from './pyth-helpers.js';\nimport { State as PythState } from '../contracts/pyth/state.js';\nimport { State as WormholeState } from '../contracts/wormhole/state.js';\n\nconst MAX_ARGUMENT_SIZE = 16 * 1024;\nexport type ObjectId = string;\nexport class HaneulPriceServiceConnection extends PriceServiceConnection {\n\t/**\n\t * Fetch price feed update data.\n\t *\n\t * @param priceIds Array of hex-encoded price IDs.\n\t * @returns Array of buffers containing the price update data.\n\t */\n\tasync getPriceFeedsUpdateData(priceIds: HexString[]): Promise<Uint8Array[]> {\n\t\tconst latestVaas = await this.getLatestVaas(priceIds);\n\t\treturn latestVaas.map((vaa) => fromBase64(vaa));\n\t}\n}\n\ntype ParsedPythState = ReturnType<typeof PythState.parse>;\n\nexport class HaneulPythClient {\n\t#pythState?: Promise<ParsedPythState>;\n\t#wormholePackageId?: Promise<ObjectId>;\n\t#priceFeedObjectIdCache: Map<HexString, Promise<ObjectId>> = new Map();\n\t#priceTableInfo?: Promise<{ id: ObjectId; fieldType: ObjectId }>;\n\tprovider: ClientWithCoreApi;\n\tpythStateId: ObjectId;\n\twormholeStateId: ObjectId;\n\n\tconstructor(provider: ClientWithCoreApi, pythStateId: ObjectId, wormholeStateId: ObjectId) {\n\t\tthis.provider = provider;\n\t\tthis.pythStateId = pythStateId;\n\t\tthis.wormholeStateId = wormholeStateId;\n\t}\n\t/**\n\t * Verifies the VAAs using the Wormhole contract.\n\t *\n\t * @param vaas Array of VAA buffers to verify.\n\t * @param tx Transaction block to add commands to.\n\t * @returns Array of verified VAAs.\n\t */\n\tasync verifyVaas(vaas: Uint8Array[], tx: Transaction) {\n\t\tconst wormholePackageId = await this.getWormholePackageId();\n\t\tconst verifiedVaas = [];\n\t\tfor (const vaa of vaas) {\n\t\t\tconst [verifiedVaa] = tx.moveCall({\n\t\t\t\ttarget: `${wormholePackageId}::vaa::parse_and_verify`,\n\t\t\t\targuments: [tx.object(this.wormholeStateId), tx.pure.vector('u8', vaa), tx.object.clock()],\n\t\t\t});\n\t\t\tverifiedVaas.push(verifiedVaa);\n\t\t}\n\t\treturn verifiedVaas;\n\t}\n\t/**\n\t * Adds the necessary commands for updating the Pyth price feeds to the transaction block.\n\t *\n\t * @param tx Transaction block to add commands to.\n\t * @param updates Array of price feed updates received from the price service.\n\t * @param feedIds Array of feed IDs to update (in hex format).\n\t * @param feeCoin Optional custom HANEUL coin to use for Pyth oracle fees. If not provided, uses gas coin.\n\t */\n\tasync updatePriceFeeds(\n\t\ttx: Transaction,\n\t\tupdates: Uint8Array[],\n\t\tfeedIds: HexString[],\n\t\tfeeCoin?: TransactionObjectArgument,\n\t): Promise<ObjectId[]> {\n\t\tconst packageId = await this.getPythPackageId();\n\t\tlet priceUpdatesHotPotato;\n\t\tif (updates.length > 1) {\n\t\t\tthrow new Error(\n\t\t\t\t'SDK does not support sending multiple accumulator messages in a single transaction',\n\t\t\t);\n\t\t}\n\t\tconst vaa = extractVaaBytesFromAccumulatorMessage(updates[0]);\n\t\tconst verifiedVaas = await this.verifyVaas([vaa], tx);\n\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\ttarget: `${packageId}::pyth::create_authenticated_price_infos_using_accumulator`,\n\t\t\targuments: [\n\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\ttx.pure(\n\t\t\t\t\tbcs\n\t\t\t\t\t\t.vector(bcs.U8)\n\t\t\t\t\t\t.serialize(Array.from(updates[0]), {\n\t\t\t\t\t\t\tmaxSize: MAX_ARGUMENT_SIZE,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.toBytes(),\n\t\t\t\t),\n\t\t\t\tverifiedVaas[0],\n\t\t\t\ttx.object.clock(),\n\t\t\t],\n\t\t});\n\t\tconst priceInfoObjects: ObjectId[] = [];\n\t\tconst baseUpdateFee = await this.getBaseUpdateFee();\n\t\tfor (const feedId of feedIds) {\n\t\t\tconst priceInfoObjectId = await this.getPriceFeedObjectId(feedId);\n\t\t\tif (!priceInfoObjectId) {\n\t\t\t\tthrow new Error(`Price feed ${feedId} not found, please create it first`);\n\t\t\t}\n\t\t\tpriceInfoObjects.push(priceInfoObjectId);\n\n\t\t\tconst feePayment = feeCoin\n\t\t\t\t? tx.splitCoins(feeCoin, [tx.pure.u64(baseUpdateFee)])[0]\n\t\t\t\t: coinWithBalance({ balance: baseUpdateFee });\n\n\t\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\t\ttarget: `${packageId}::pyth::update_single_price_feed`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\t\tpriceUpdatesHotPotato,\n\t\t\t\t\ttx.object(priceInfoObjectId),\n\t\t\t\t\tfeePayment,\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\t\ttx.moveCall({\n\t\t\ttarget: `${packageId}::hot_potato_vector::destroy`,\n\t\t\targuments: [priceUpdatesHotPotato],\n\t\t\ttypeArguments: [`${packageId}::price_info::PriceInfo`],\n\t\t});\n\t\treturn priceInfoObjects;\n\t}\n\t/**\n\t * Get the price feed object ID for a given feed ID, caching the promise.\n\t * @param feedId\n\t */\n\tgetPriceFeedObjectId(feedId: HexString): Promise<ObjectId | undefined> {\n\t\tif (!this.#priceFeedObjectIdCache.has(feedId)) {\n\t\t\tthis.#priceFeedObjectIdCache.set(\n\t\t\t\tfeedId,\n\t\t\t\tthis.#fetchPriceFeedObjectId(feedId).catch((err) => {\n\t\t\t\t\t// Remove failed promises from the cache to allow retries\n\t\t\t\t\tthis.#priceFeedObjectIdCache.delete(feedId);\n\t\t\t\t\tthrow err;\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn this.#priceFeedObjectIdCache.get(feedId)!;\n\t}\n\n\t/**\n\t * Fetches the price feed object ID for a given feed ID (no caching).\n\t * Throws an error if the object is not found.\n\t */\n\tasync #fetchPriceFeedObjectId(feedId: HexString): Promise<ObjectId> {\n\t\tconst { id: tableId, fieldType } = await this.getPriceTableInfo();\n\n\t\tconst result = await this.provider.core.getDynamicField({\n\t\t\tparentId: tableId,\n\t\t\tname: {\n\t\t\t\ttype: `${fieldType}::price_identifier::PriceIdentifier`,\n\t\t\t\tbcs: bcs.byteVector().serialize(fromHex(feedId)).toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.dynamicField) {\n\t\t\tthrow new Error(`Price feed object ID for feed ID ${feedId} not found.`);\n\t\t}\n\n\t\treturn bcs.Address.parse(result.dynamicField.value.bcs);\n\t}\n\n\t/**\n\t * Fetches the price table object ID for the current state ID, caching the promise.\n\t * @returns Price table object ID and field type\n\t */\n\tgetPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tif (!this.#priceTableInfo) {\n\t\t\tconst promise = this.#fetchPriceTableInfo().catch((err) => {\n\t\t\t\t// Clear the cached promise on error\n\t\t\t\tthis.#priceTableInfo = undefined;\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tthis.#priceTableInfo = promise;\n\t\t}\n\n\t\treturn this.#priceTableInfo;\n\t}\n\n\t/**\n\t * Fetches the price table object ID and field type (no caching).\n\t * @returns Price table object ID and field type\n\t */\n\tasync #fetchPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tconst result = await this.provider.core.getDynamicObjectField({\n\t\t\tparentId: this.pythStateId,\n\t\t\tname: {\n\t\t\t\ttype: 'vector<u8>',\n\t\t\t\tbcs: bcs.string().serialize('price_info').toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.object) {\n\t\t\tthrow new Error('Price Table not found, contract may not be initialized');\n\t\t}\n\n\t\tconst tableType = parseStructTag(result.object.type);\n\t\tconst priceIdentifier = tableType.typeParams[0];\n\t\tif (\n\t\t\ttypeof priceIdentifier === 'object' &&\n\t\t\tpriceIdentifier !== null &&\n\t\t\tpriceIdentifier.name === 'PriceIdentifier' &&\n\t\t\t'address' in priceIdentifier\n\t\t) {\n\t\t\treturn { id: result.object.objectId, fieldType: priceIdentifier.address };\n\t\t} else {\n\t\t\tthrow new Error('fieldType not found');\n\t\t}\n\t}\n\t/**\n\t * Fetches the package ID for the Wormhole contract, with caching.\n\t */\n\tgetWormholePackageId(): Promise<ObjectId> {\n\t\tif (!this.#wormholePackageId) {\n\t\t\tthis.#wormholePackageId = this.#fetchWormholePackageId();\n\t\t}\n\t\treturn this.#wormholePackageId;\n\t}\n\n\t/**\n\t * Fetches the package ID for the Wormhole contract (no caching).\n\t */\n\tasync #fetchWormholePackageId(): Promise<ObjectId> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.wormholeStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Wormhole state object');\n\t\t}\n\n\t\tconst state = WormholeState.parse(result.object.content);\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Fetches and caches the parsed Pyth state object.\n\t * This is shared between getPythPackageId and getBaseUpdateFee to avoid redundant fetches.\n\t */\n\t#getPythState(): Promise<ParsedPythState> {\n\t\tif (!this.#pythState) {\n\t\t\tthis.#pythState = this.#fetchPythState();\n\t\t}\n\t\treturn this.#pythState;\n\t}\n\n\t/**\n\t * Fetches the Pyth state object (no caching).\n\t */\n\tasync #fetchPythState(): Promise<ParsedPythState> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.pythStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Pyth state object');\n\t\t}\n\n\t\treturn PythState.parse(result.object.content);\n\t}\n\n\t/**\n\t * Fetches the package ID for the Pyth contract, with caching.\n\t * Uses the shared Pyth state cache.\n\t */\n\tasync getPythPackageId(): Promise<ObjectId> {\n\t\tconst state = await this.#getPythState();\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Returns the cached base update fee, fetching it if necessary.\n\t * Uses the shared Pyth state cache.\n\t */\n\tasync getBaseUpdateFee(): Promise<number> {\n\t\tconst state = await this.#getPythState();\n\t\treturn Number(state.base_update_fee);\n\t}\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"pyth.mjs","names":["#priceFeedObjectIdCache","#fetchPriceFeedObjectId","#priceTableInfo","#fetchPriceTableInfo","#wormholePackageId","#fetchWormholePackageId","WormholeState","#pythState","#fetchPythState","PythState","#getPythState"],"sources":["../../src/pyth/pyth.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport type { ClientWithCoreApi } from '@haneullabs/haneul/client';\nimport type { Transaction, TransactionObjectArgument } from '@haneullabs/haneul/transactions';\nimport { coinWithBalance } from '@haneullabs/haneul/transactions';\nimport { fromBase64, fromHex, parseStructTag } from '@haneullabs/haneul/utils';\n\nimport type { HexString } from './PriceServiceConnection.js';\nimport { PriceServiceConnection } from './PriceServiceConnection.js';\nimport { extractVaaBytesFromAccumulatorMessage } from './pyth-helpers.js';\nimport { State as PythState } from '../contracts/pyth/state.js';\nimport { State as WormholeState } from '../contracts/wormhole/state.js';\n\nconst MAX_ARGUMENT_SIZE = 16 * 1024;\nexport type ObjectId = string;\nexport class HaneulPriceServiceConnection extends PriceServiceConnection {\n\t/**\n\t * Fetch price feed update data.\n\t *\n\t * @param priceIds Array of hex-encoded price IDs.\n\t * @returns Array of buffers containing the price update data.\n\t */\n\tasync getPriceFeedsUpdateData(priceIds: HexString[]): Promise<Uint8Array[]> {\n\t\tconst latestVaas = await this.getLatestVaas(priceIds);\n\t\treturn latestVaas.map((vaa) => fromBase64(vaa));\n\t}\n}\n\ntype ParsedPythState = ReturnType<typeof PythState.parse>;\n\nexport class HaneulPythClient {\n\t#pythState?: Promise<ParsedPythState>;\n\t#wormholePackageId?: Promise<ObjectId>;\n\t#priceFeedObjectIdCache: Map<HexString, Promise<ObjectId>> = new Map();\n\t#priceTableInfo?: Promise<{ id: ObjectId; fieldType: ObjectId }>;\n\tprovider: ClientWithCoreApi;\n\tpythStateId: ObjectId;\n\twormholeStateId: ObjectId;\n\n\tconstructor(provider: ClientWithCoreApi, pythStateId: ObjectId, wormholeStateId: ObjectId) {\n\t\tthis.provider = provider;\n\t\tthis.pythStateId = pythStateId;\n\t\tthis.wormholeStateId = wormholeStateId;\n\t}\n\t/**\n\t * Verifies the VAAs using the Wormhole contract.\n\t *\n\t * @param vaas Array of VAA buffers to verify.\n\t * @param tx Transaction block to add commands to.\n\t * @returns Array of verified VAAs.\n\t */\n\tasync verifyVaas(vaas: Uint8Array[], tx: Transaction) {\n\t\tconst wormholePackageId = await this.getWormholePackageId();\n\t\tconst verifiedVaas = [];\n\t\tfor (const vaa of vaas) {\n\t\t\tconst [verifiedVaa] = tx.moveCall({\n\t\t\t\ttarget: `${wormholePackageId}::vaa::parse_and_verify`,\n\t\t\t\targuments: [tx.object(this.wormholeStateId), tx.pure.vector('u8', vaa), tx.object.clock()],\n\t\t\t});\n\t\t\tverifiedVaas.push(verifiedVaa);\n\t\t}\n\t\treturn verifiedVaas;\n\t}\n\t/**\n\t * Adds the necessary commands for updating the Pyth price feeds to the transaction block.\n\t *\n\t * @param tx Transaction block to add commands to.\n\t * @param updates Array of price feed updates received from the price service.\n\t * @param feedIds Array of feed IDs to update (in hex format).\n\t * @param feeCoin Optional custom HANEUL coin to use for Pyth oracle fees. If not provided, uses gas coin.\n\t */\n\tasync updatePriceFeeds(\n\t\ttx: Transaction,\n\t\tupdates: Uint8Array[],\n\t\tfeedIds: HexString[],\n\t\tfeeCoin?: TransactionObjectArgument,\n\t): Promise<ObjectId[]> {\n\t\tconst packageId = await this.getPythPackageId();\n\t\tlet priceUpdatesHotPotato;\n\t\tif (updates.length > 1) {\n\t\t\tthrow new Error(\n\t\t\t\t'SDK does not support sending multiple accumulator messages in a single transaction',\n\t\t\t);\n\t\t}\n\t\tconst vaa = extractVaaBytesFromAccumulatorMessage(updates[0]);\n\t\tconst verifiedVaas = await this.verifyVaas([vaa], tx);\n\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\ttarget: `${packageId}::pyth::create_authenticated_price_infos_using_accumulator`,\n\t\t\targuments: [\n\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\ttx.pure(\n\t\t\t\t\tbcs\n\t\t\t\t\t\t.vector(bcs.U8)\n\t\t\t\t\t\t.serialize(Array.from(updates[0]), {\n\t\t\t\t\t\t\tmaxSize: MAX_ARGUMENT_SIZE,\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.toBytes(),\n\t\t\t\t),\n\t\t\t\tverifiedVaas[0],\n\t\t\t\ttx.object.clock(),\n\t\t\t],\n\t\t});\n\t\tconst priceInfoObjects: ObjectId[] = [];\n\t\tconst baseUpdateFee = await this.getBaseUpdateFee();\n\t\tfor (const feedId of feedIds) {\n\t\t\tconst priceInfoObjectId = await this.getPriceFeedObjectId(feedId);\n\t\t\tif (!priceInfoObjectId) {\n\t\t\t\tthrow new Error(`Price feed ${feedId} not found, please create it first`);\n\t\t\t}\n\t\t\tpriceInfoObjects.push(priceInfoObjectId);\n\n\t\t\tconst feePayment = feeCoin\n\t\t\t\t? tx.splitCoins(feeCoin, [tx.pure.u64(baseUpdateFee)])[0]\n\t\t\t\t: coinWithBalance({ balance: baseUpdateFee });\n\n\t\t\t[priceUpdatesHotPotato] = tx.moveCall({\n\t\t\t\ttarget: `${packageId}::pyth::update_single_price_feed`,\n\t\t\t\targuments: [\n\t\t\t\t\ttx.object(this.pythStateId),\n\t\t\t\t\tpriceUpdatesHotPotato,\n\t\t\t\t\ttx.object(priceInfoObjectId),\n\t\t\t\t\tfeePayment,\n\t\t\t\t\ttx.object.clock(),\n\t\t\t\t],\n\t\t\t});\n\t\t}\n\t\ttx.moveCall({\n\t\t\ttarget: `${packageId}::hot_potato_vector::destroy`,\n\t\t\targuments: [priceUpdatesHotPotato],\n\t\t\ttypeArguments: [`${packageId}::price_info::PriceInfo`],\n\t\t});\n\t\treturn priceInfoObjects;\n\t}\n\t/**\n\t * Get the price feed object ID for a given feed ID, caching the promise.\n\t * @param feedId\n\t */\n\tgetPriceFeedObjectId(feedId: HexString): Promise<ObjectId | undefined> {\n\t\tif (!this.#priceFeedObjectIdCache.has(feedId)) {\n\t\t\tthis.#priceFeedObjectIdCache.set(\n\t\t\t\tfeedId,\n\t\t\t\tthis.#fetchPriceFeedObjectId(feedId).catch((err) => {\n\t\t\t\t\t// Remove failed promises from the cache to allow retries\n\t\t\t\t\tthis.#priceFeedObjectIdCache.delete(feedId);\n\t\t\t\t\tthrow err;\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn this.#priceFeedObjectIdCache.get(feedId)!;\n\t}\n\n\t/**\n\t * Fetches the price feed object ID for a given feed ID (no caching).\n\t * Throws an error if the object is not found.\n\t */\n\tasync #fetchPriceFeedObjectId(feedId: HexString): Promise<ObjectId> {\n\t\tconst { id: tableId, fieldType } = await this.getPriceTableInfo();\n\n\t\tconst result = await this.provider.core.getDynamicField({\n\t\t\tparentId: tableId,\n\t\t\tname: {\n\t\t\t\ttype: `${fieldType}::price_identifier::PriceIdentifier`,\n\t\t\t\tbcs: bcs.byteVector().serialize(fromHex(feedId)).toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.dynamicField) {\n\t\t\tthrow new Error(`Price feed object ID for feed ID ${feedId} not found.`);\n\t\t}\n\n\t\treturn bcs.Address.parse(result.dynamicField.value.bcs);\n\t}\n\n\t/**\n\t * Fetches the price table object ID for the current state ID, caching the promise.\n\t * @returns Price table object ID and field type\n\t */\n\tgetPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tif (!this.#priceTableInfo) {\n\t\t\tconst promise = this.#fetchPriceTableInfo().catch((err) => {\n\t\t\t\t// Clear the cached promise on error\n\t\t\t\tthis.#priceTableInfo = undefined;\n\t\t\t\tthrow err;\n\t\t\t});\n\n\t\t\tthis.#priceTableInfo = promise;\n\t\t}\n\n\t\treturn this.#priceTableInfo;\n\t}\n\n\t/**\n\t * Fetches the price table object ID and field type (no caching).\n\t * @returns Price table object ID and field type\n\t */\n\tasync #fetchPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {\n\t\tconst result = await this.provider.core.getDynamicObjectField({\n\t\t\tparentId: this.pythStateId,\n\t\t\tname: {\n\t\t\t\ttype: 'vector<u8>',\n\t\t\t\tbcs: bcs.string().serialize('price_info').toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result.object) {\n\t\t\tthrow new Error('Price Table not found, contract may not be initialized');\n\t\t}\n\n\t\tconst tableType = parseStructTag(result.object.type);\n\t\tconst priceIdentifier = tableType.typeParams[0];\n\t\tif (\n\t\t\ttypeof priceIdentifier === 'object' &&\n\t\t\tpriceIdentifier !== null &&\n\t\t\tpriceIdentifier.name === 'PriceIdentifier' &&\n\t\t\t'address' in priceIdentifier\n\t\t) {\n\t\t\treturn { id: result.object.objectId, fieldType: priceIdentifier.address };\n\t\t} else {\n\t\t\tthrow new Error('fieldType not found');\n\t\t}\n\t}\n\t/**\n\t * Fetches the package ID for the Wormhole contract, with caching.\n\t */\n\tgetWormholePackageId(): Promise<ObjectId> {\n\t\tif (!this.#wormholePackageId) {\n\t\t\tthis.#wormholePackageId = this.#fetchWormholePackageId();\n\t\t}\n\t\treturn this.#wormholePackageId;\n\t}\n\n\t/**\n\t * Fetches the package ID for the Wormhole contract (no caching).\n\t */\n\tasync #fetchWormholePackageId(): Promise<ObjectId> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.wormholeStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Wormhole state object');\n\t\t}\n\n\t\tconst state = WormholeState.parse(result.object.content);\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Fetches and caches the parsed Pyth state object.\n\t * This is shared between getPythPackageId and getBaseUpdateFee to avoid redundant fetches.\n\t */\n\t#getPythState(): Promise<ParsedPythState> {\n\t\tif (!this.#pythState) {\n\t\t\tthis.#pythState = this.#fetchPythState();\n\t\t}\n\t\treturn this.#pythState;\n\t}\n\n\t/**\n\t * Fetches the Pyth state object (no caching).\n\t */\n\tasync #fetchPythState(): Promise<ParsedPythState> {\n\t\tconst result = await this.provider.core.getObject({\n\t\t\tobjectId: this.pythStateId,\n\t\t\tinclude: { content: true },\n\t\t});\n\n\t\tif (!result.object?.content) {\n\t\t\tthrow new Error('Unable to fetch Pyth state object');\n\t\t}\n\n\t\treturn PythState.parse(result.object.content);\n\t}\n\n\t/**\n\t * Fetches the package ID for the Pyth contract, with caching.\n\t * Uses the shared Pyth state cache.\n\t */\n\tasync getPythPackageId(): Promise<ObjectId> {\n\t\tconst state = await this.#getPythState();\n\t\treturn state.upgrade_cap.package;\n\t}\n\n\t/**\n\t * Returns the cached base update fee, fetching it if necessary.\n\t * Uses the shared Pyth state cache.\n\t */\n\tasync getBaseUpdateFee(): Promise<number> {\n\t\tconst state = await this.#getPythState();\n\t\treturn Number(state.base_update_fee);\n\t}\n}\n"],"mappings":";;;;;;;;AAeA,MAAM,oBAAoB,KAAK;AAE/B,IAAa,+BAAb,cAAkD,uBAAuB;;;;;;;CAOxE,MAAM,wBAAwB,UAA8C;EAE3E,QAAO,MADkB,KAAK,cAAc,QAAQ,EAAA,CAClC,KAAK,QAAQ,WAAW,GAAG,CAAC;CAC/C;AACD;AAIA,IAAa,mBAAb,MAA8B;CAC7B;CACA;CACA,0CAA6D,IAAI,IAAI;CACrE;CAKA,YAAY,UAA6B,aAAuB,iBAA2B;EAC1F,KAAK,WAAW;EAChB,KAAK,cAAc;EACnB,KAAK,kBAAkB;CACxB;;;;;;;;CAQA,MAAM,WAAW,MAAoB,IAAiB;EACrD,MAAM,oBAAoB,MAAM,KAAK,qBAAqB;EAC1D,MAAM,eAAe,CAAC;EACtB,KAAK,MAAM,OAAO,MAAM;GACvB,MAAM,CAAC,eAAe,GAAG,SAAS;IACjC,QAAQ,GAAG,kBAAkB;IAC7B,WAAW;KAAC,GAAG,OAAO,KAAK,eAAe;KAAG,GAAG,KAAK,OAAO,MAAM,GAAG;KAAG,GAAG,OAAO,MAAM;IAAC;GAC1F,CAAC;GACD,aAAa,KAAK,WAAW;EAC9B;EACA,OAAO;CACR;;;;;;;;;CASA,MAAM,iBACL,IACA,SACA,SACA,SACsB;EACtB,MAAM,YAAY,MAAM,KAAK,iBAAiB;EAC9C,IAAI;EACJ,IAAI,QAAQ,SAAS,GACpB,MAAM,IAAI,MACT,oFACD;EAED,MAAM,MAAM,sCAAsC,QAAQ,EAAE;EAC5D,MAAM,eAAe,MAAM,KAAK,WAAW,CAAC,GAAG,GAAG,EAAE;EACpD,CAAC,yBAAyB,GAAG,SAAS;GACrC,QAAQ,GAAG,UAAU;GACrB,WAAW;IACV,GAAG,OAAO,KAAK,WAAW;IAC1B,GAAG,KACF,IACE,OAAO,IAAI,EAAE,CAAC,CACd,UAAU,MAAM,KAAK,QAAQ,EAAE,GAAG,EAClC,SAAS,kBACV,CAAC,CAAC,CACD,QAAQ,CACX;IACA,aAAa;IACb,GAAG,OAAO,MAAM;GACjB;EACD,CAAC;EACD,MAAM,mBAA+B,CAAC;EACtC,MAAM,gBAAgB,MAAM,KAAK,iBAAiB;EAClD,KAAK,MAAM,UAAU,SAAS;GAC7B,MAAM,oBAAoB,MAAM,KAAK,qBAAqB,MAAM;GAChE,IAAI,CAAC,mBACJ,MAAM,IAAI,MAAM,cAAc,OAAO,mCAAmC;GAEzE,iBAAiB,KAAK,iBAAiB;GAEvC,MAAM,aAAa,UAChB,GAAG,WAAW,SAAS,CAAC,GAAG,KAAK,IAAI,aAAa,CAAC,CAAC,CAAC,CAAC,KACrD,gBAAgB,EAAE,SAAS,cAAc,CAAC;GAE7C,CAAC,yBAAyB,GAAG,SAAS;IACrC,QAAQ,GAAG,UAAU;IACrB,WAAW;KACV,GAAG,OAAO,KAAK,WAAW;KAC1B;KACA,GAAG,OAAO,iBAAiB;KAC3B;KACA,GAAG,OAAO,MAAM;IACjB;GACD,CAAC;EACF;EACA,GAAG,SAAS;GACX,QAAQ,GAAG,UAAU;GACrB,WAAW,CAAC,qBAAqB;GACjC,eAAe,CAAC,GAAG,UAAU,wBAAwB;EACtD,CAAC;EACD,OAAO;CACR;;;;;CAKA,qBAAqB,QAAkD;EACtE,IAAI,CAAC,KAAKA,wBAAwB,IAAI,MAAM,GAC3C,KAAKA,wBAAwB,IAC5B,QACA,KAAKC,wBAAwB,MAAM,CAAC,CAAC,OAAO,QAAQ;GAEnD,KAAKD,wBAAwB,OAAO,MAAM;GAC1C,MAAM;EACP,CAAC,CACF;EAGD,OAAO,KAAKA,wBAAwB,IAAI,MAAM;CAC/C;;;;;CAMA,MAAMC,wBAAwB,QAAsC;EACnE,MAAM,EAAE,IAAI,SAAS,cAAc,MAAM,KAAK,kBAAkB;EAEhE,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,gBAAgB;GACvD,UAAU;GACV,MAAM;IACL,MAAM,GAAG,UAAU;IACnB,KAAK,IAAI,WAAW,CAAC,CAAC,UAAU,QAAQ,MAAM,CAAC,CAAC,CAAC,QAAQ;GAC1D;EACD,CAAC;EAED,IAAI,CAAC,OAAO,cACX,MAAM,IAAI,MAAM,oCAAoC,OAAO,YAAY;EAGxE,OAAO,IAAI,QAAQ,MAAM,OAAO,aAAa,MAAM,GAAG;CACvD;;;;;CAMA,oBAAoE;EACnE,IAAI,CAAC,KAAKC,iBAAiB;GAC1B,MAAM,UAAU,KAAKC,qBAAqB,CAAC,CAAC,OAAO,QAAQ;IAE1D,KAAKD,kBAAkB,KAAA;IACvB,MAAM;GACP,CAAC;GAED,KAAKA,kBAAkB;EACxB;EAEA,OAAO,KAAKA;CACb;;;;;CAMA,MAAMC,uBAAuE;EAC5E,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,sBAAsB;GAC7D,UAAU,KAAK;GACf,MAAM;IACL,MAAM;IACN,KAAK,IAAI,OAAO,CAAC,CAAC,UAAU,YAAY,CAAC,CAAC,QAAQ;GACnD;EACD,CAAC;EAED,IAAI,CAAC,OAAO,QACX,MAAM,IAAI,MAAM,wDAAwD;EAIzE,MAAM,kBADY,eAAe,OAAO,OAAO,IACf,CAAC,CAAC,WAAW;EAC7C,IACC,OAAO,oBAAoB,YAC3B,oBAAoB,QACpB,gBAAgB,SAAS,qBACzB,aAAa,iBAEb,OAAO;GAAE,IAAI,OAAO,OAAO;GAAU,WAAW,gBAAgB;EAAQ;OAExE,MAAM,IAAI,MAAM,qBAAqB;CAEvC;;;;CAIA,uBAA0C;EACzC,IAAI,CAAC,KAAKC,oBACT,KAAKA,qBAAqB,KAAKC,wBAAwB;EAExD,OAAO,KAAKD;CACb;;;;CAKA,MAAMC,0BAA6C;;EAClD,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,UAAU;GACjD,UAAU,KAAK;GACf,SAAS,EAAE,SAAS,KAAK;EAC1B,CAAC;EAED,IAAI,GAAA,iBAAC,OAAO,YAAA,QAAA,mBAAA,KAAA,IAAA,KAAA,IAAA,eAAQ,UACnB,MAAM,IAAI,MAAM,uCAAuC;EAIxD,OADcC,QAAc,MAAM,OAAO,OAAO,OACrC,CAAC,CAAC,YAAY;CAC1B;;;;;CAMA,gBAA0C;EACzC,IAAI,CAAC,KAAKC,YACT,KAAKA,aAAa,KAAKC,gBAAgB;EAExC,OAAO,KAAKD;CACb;;;;CAKA,MAAMC,kBAA4C;;EACjD,MAAM,SAAS,MAAM,KAAK,SAAS,KAAK,UAAU;GACjD,UAAU,KAAK;GACf,SAAS,EAAE,SAAS,KAAK;EAC1B,CAAC;EAED,IAAI,GAAA,kBAAC,OAAO,YAAA,QAAA,oBAAA,KAAA,IAAA,KAAA,IAAA,gBAAQ,UACnB,MAAM,IAAI,MAAM,mCAAmC;EAGpD,OAAOC,MAAU,MAAM,OAAO,OAAO,OAAO;CAC7C;;;;;CAMA,MAAM,mBAAsC;EAE3C,QAAO,MADa,KAAKC,cAAc,EAAA,CAC1B,YAAY;CAC1B;;;;;CAMA,MAAM,mBAAoC;EACzC,MAAM,QAAQ,MAAM,KAAKA,cAAc;EACvC,OAAO,OAAO,MAAM,eAAe;CACpC;AACD"}
@@ -1 +1 @@
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"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;UAQiB,UAAA;EAChB,IAAA;EACA,IAAI;AAAA;AAAA,UAGY,YAAA;EAChB,WAAA,EAAa,sBAAsB;EACnC,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,MAAM,SAAS,UAAA;AAAA;AAAA,UAGN,UAAA;EAChB,IAAA;EACA,KAAA;EACA,aAAA;EACA,qBAAA;EACA,IAAA,EAAM,MAAM;EACZ,MAAA;EACA,WAAA;EACA,YAAA;AAAA;AAAA,KAYW,MAAA,GAAS,MAAM,wBAAwB,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,UAAU;EAC1C,MAAM;AAAA;AAAA,KAGK,aAAA,GAAgB,UAAA;EAC3B,GAAA,EAAK,sBAAsB;AAAA;AAAA,KAGhB,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,GAAG;AAAA,KAEvB,gBAAA,GAAmB,GAAG"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "@haneullabs/haneulns",
3
3
  "author": "Haneul Labs <build@haneul-labs.com>",
4
4
  "description": "HaneulNS SDK",
5
- "version": "1.0.3",
5
+ "version": "1.2.5",
6
6
  "license": "Apache-2.0",
7
7
  "private": false,
8
8
  "type": "module",
@@ -30,24 +30,23 @@
30
30
  "node": ">=16"
31
31
  },
32
32
  "dependencies": {
33
- "axios": "^1.13.5",
33
+ "axios": "^1.17.0",
34
34
  "axios-retry": "^4.5.0"
35
35
  },
36
36
  "devDependencies": {
37
37
  "@types/tmp": "^0.2.6",
38
38
  "ts-retry-promise": "^0.8.1",
39
- "typescript": "^5.9.3",
40
- "vite": "^7.3.1",
41
- "vitest": "^4.0.17",
42
- "@haneullabs/codegen": "^0.8.3",
43
- "@haneullabs/haneul": "^2.13.0"
39
+ "typescript": "^6.0.3",
40
+ "vite": "^8.0.16",
41
+ "vitest": "^4.1.8",
42
+ "@haneullabs/codegen": "^0.11.5"
44
43
  },
45
44
  "peerDependencies": {
46
- "@haneullabs/haneul": "^2.13.0"
45
+ "@haneullabs/haneul": "^2.20.3"
47
46
  },
48
47
  "repository": {
49
48
  "type": "git",
50
- "url": "git+https://github.com/GeunhwaJeong/ts-sdks.git"
49
+ "url": "git+https://github.com/GeunhwaJeong/haneul-ts-sdks.git"
51
50
  },
52
51
  "bugs": {
53
52
  "url": "https://github.com/GeunhwaJeong/haneulns-contracts/issues"
package/src/constants.ts CHANGED
@@ -16,46 +16,46 @@ export const ALLOWED_METADATA = {
16
16
 
17
17
  export const mainPackage: Config = {
18
18
  mainnet: {
19
- packageId: '0x71af035413ed499710980ed8adb010bbf2cc5cacf4ab37c7710a4bb87eb58ba5',
20
- packageIdV1: '0xd22b24490e0bae52676651b4f56660a5ff8022a2576e0089f79b3c88d44e08f0',
21
- packageIdPricing: '0x71af035413ed499710980ed8adb010bbf2cc5cacf4ab37c7710a4bb87eb58ba5',
22
- haneulns: '0x6e0ddefc0ad98889c04bab9639e512c21766c5e6366f89e696956d9be6952871',
19
+ packageId: '0x047dfbd82298ec1c2c70b5743a8c4a00614ff864a580069c635f2dad3a7c76fa',
20
+ packageIdV1: '0x047dfbd82298ec1c2c70b5743a8c4a00614ff864a580069c635f2dad3a7c76fa',
21
+ packageIdPricing: '0x047dfbd82298ec1c2c70b5743a8c4a00614ff864a580069c635f2dad3a7c76fa',
22
+ haneulns: '0x186ad0dd1d4d4bc84564b3c039a0d432ab4d4af851e07cc84f083cc5e850f6d0',
23
23
  discountsPackage: {
24
- packageId: '0x03f625d805339b1b0235ba8c503fa6ea62c88c02ddf14cd9d246d9e1febc0c76',
25
- discountHouseId: '0x4ce82dee11e6f4858509dcdba1a62985f12e5afb054df680a04f16790bfe1d04',
24
+ packageId: '0x0000000000000000000000000000000000000000000000000000000000000000',
25
+ discountHouseId: '0x0000000000000000000000000000000000000000000000000000000000000000',
26
26
  },
27
- subNamesPackageId: '0xe177697e191327901637f8d2c5ffbbde8b1aaac27ec1024c4b62d1ebd1cd7430',
27
+ subNamesPackageId: '0x3ebb0b633d4d56c2eaad2b1849fcc8cddbab832414e91b4159dd4a57c4a720d4',
28
28
  tempSubdomainsProxyPackageId:
29
- '0xf335dfbcb2020fc996250c0d6fd4655c5e2036b0606cac7408aa163f51340886',
29
+ '0x0000000000000000000000000000000000000000000000000000000000000000',
30
30
  coupons: {
31
- packageId: '0xb162340524e0697461c307b9dc530c17e837b0f2c6d7f787da40d29d29681e5e',
31
+ packageId: '0x0000000000000000000000000000000000000000000000000000000000000000',
32
32
  },
33
33
  payments: {
34
- packageId: '0xdd0a4a34152a80d7841710e916a407b2a62961eee5b2188dcfdaa24194f66286',
34
+ packageId: '0x0000000000000000000000000000000000000000000000000000000000000000',
35
35
  },
36
36
  bbb: {
37
- packageId: '0x6268d072063a311f6f0a1db516d06d97c06a3fa6d10e797cad578937a47b3992',
38
- vault: '0x869f5100c0ecc0b35c7edad87ba3d488fd291bdba4a7aae84b70d188f440f393',
37
+ packageId: '0x0000000000000000000000000000000000000000000000000000000000000000',
38
+ vault: '0x0000000000000000000000000000000000000000000000000000000000000000',
39
39
  },
40
40
  pyth: {
41
- pythStateId: '0x1f9310238ee9298fb703c3419030b35b22bb1cc37113e3bb5007c99aec79e5b8',
42
- wormholeStateId: '0xaeab97f96cf9877fee2883315d459552b2b921edc16d7ceac6eab944dd88919c',
41
+ pythStateId: '0x0000000000000000000000000000000000000000000000000000000000000000',
42
+ wormholeStateId: '0x0000000000000000000000000000000000000000000000000000000000000000',
43
43
  },
44
44
  coins: {
45
45
  HANEUL: {
46
46
  type: '0x0000000000000000000000000000000000000000000000000000000000000002::haneul::HANEUL',
47
- feed: '0x23d7315113f5b1d3ba7a83604c44b94d79f4fd69af77f804fc7f920a6dc65744',
47
+ feed: '0x0000000000000000000000000000000000000000000000000000000000000000',
48
48
  },
49
49
  NS: {
50
- type: '0x5145494a5f5100e645e4b0aa950fa6b68f614e8c59e17bc5ded3495123a79178::ns::NS',
51
- feed: '0xbb5ff26e47a3a6cc7ec2fce1db996c2a145300edc5acaabe43bf9ff7c5dd5d32',
50
+ type: '0x0000000000000000000000000000000000000000000000000000000000000000::ns::NS',
51
+ feed: '0x0000000000000000000000000000000000000000000000000000000000000000',
52
52
  },
53
53
  USDC: {
54
- type: '0xdba34672e30cb065b1f93e3ab55318768fd6fef66c15942c9f7cb846e2f900e7::usdc::USDC',
54
+ type: '0x6b7638d3d91245229f51f48d5c39bcb6ff7023ff022954a0bd94441d8ee20b4a::usdc::USDC',
55
55
  feed: '',
56
56
  },
57
57
  },
58
- registryTableId: '0xe64cd9db9f829c6cc405d9790bd71567ae07259855f4fba6f02c84f52298c106',
58
+ registryTableId: '0xf539703ae28a9f324729506626766909f800a7e40ec90c6f2c8e865103d96525',
59
59
  },
60
60
  testnet: {
61
61
  packageId: '0x40eee27b014a872f5c3330dcd5329aa55c7fe0fcc6e70c6498852e2e3727172e',