@haneullabs/haneulns 0.1.0 → 1.0.2

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 (222) hide show
  1. package/CHANGELOG.md +125 -53
  2. package/README.md +3 -3
  3. package/dist/constants.d.mts +16 -0
  4. package/dist/constants.d.mts.map +1 -0
  5. package/dist/constants.mjs +90 -0
  6. package/dist/constants.mjs.map +1 -0
  7. package/dist/contracts/haneulns/controller.mjs +62 -0
  8. package/dist/contracts/haneulns/controller.mjs.map +1 -0
  9. package/dist/contracts/haneulns/deps/haneul/balance.mjs +21 -0
  10. package/dist/contracts/haneulns/deps/haneul/balance.mjs.map +1 -0
  11. package/dist/contracts/haneulns/deps/haneul/vec_map.mjs +37 -0
  12. package/dist/contracts/haneulns/deps/haneul/vec_map.mjs.map +1 -0
  13. package/dist/contracts/haneulns/deps/std/type_name.mjs +17 -0
  14. package/dist/contracts/haneulns/deps/std/type_name.mjs.map +1 -0
  15. package/dist/contracts/haneulns/domain.mjs +23 -0
  16. package/dist/contracts/haneulns/domain.mjs.map +1 -0
  17. package/dist/contracts/haneulns/haneulns.mjs +68 -0
  18. package/dist/contracts/haneulns/haneulns.mjs.map +1 -0
  19. package/dist/contracts/haneulns/name_record.mjs +27 -0
  20. package/dist/contracts/haneulns/name_record.mjs.map +1 -0
  21. package/dist/contracts/haneulns/payment.mjs +162 -0
  22. package/dist/contracts/haneulns/payment.mjs.map +1 -0
  23. package/dist/contracts/haneulns/pricing_config.mjs +25 -0
  24. package/dist/contracts/haneulns/pricing_config.mjs.map +1 -0
  25. package/dist/contracts/haneulns_coupons/coupon_house.mjs +59 -0
  26. package/dist/contracts/haneulns_coupons/coupon_house.mjs.map +1 -0
  27. package/dist/contracts/haneulns_coupons/data.mjs +16 -0
  28. package/dist/contracts/haneulns_coupons/data.mjs.map +1 -0
  29. package/dist/contracts/haneulns_coupons/deps/haneul/bag.mjs +43 -0
  30. package/dist/contracts/haneulns_coupons/deps/haneul/bag.mjs.map +1 -0
  31. package/dist/contracts/haneulns_discounts/deps/haneul/linked_table.mjs +27 -0
  32. package/dist/contracts/haneulns_discounts/deps/haneul/linked_table.mjs.map +1 -0
  33. package/dist/contracts/haneulns_discounts/deps/haneulns/pricing_config.mjs +16 -0
  34. package/dist/contracts/haneulns_discounts/deps/haneulns/pricing_config.mjs.map +1 -0
  35. package/dist/contracts/haneulns_discounts/discounts.mjs +51 -0
  36. package/dist/contracts/haneulns_discounts/discounts.mjs.map +1 -0
  37. package/dist/contracts/haneulns_discounts/free_claims.mjs +60 -0
  38. package/dist/contracts/haneulns_discounts/free_claims.mjs.map +1 -0
  39. package/dist/contracts/haneulns_payments/deps/haneul/vec_map.mjs +37 -0
  40. package/dist/contracts/haneulns_payments/deps/haneul/vec_map.mjs.map +1 -0
  41. package/dist/contracts/haneulns_payments/deps/std/type_name.mjs +17 -0
  42. package/dist/contracts/haneulns_payments/deps/std/type_name.mjs.map +1 -0
  43. package/dist/contracts/haneulns_payments/payments.mjs +145 -0
  44. package/dist/contracts/haneulns_payments/payments.mjs.map +1 -0
  45. package/dist/contracts/pyth/data_source.mjs +20 -0
  46. package/dist/contracts/pyth/data_source.mjs.map +1 -0
  47. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
  48. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
  49. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
  50. package/dist/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
  51. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs +16 -0
  52. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.mjs.map +1 -0
  53. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs +16 -0
  54. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.mjs.map +1 -0
  55. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs +16 -0
  56. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.mjs.map +1 -0
  57. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs +16 -0
  58. package/dist/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.mjs.map +1 -0
  59. package/dist/contracts/pyth/state.mjs +28 -0
  60. package/dist/contracts/pyth/state.mjs.map +1 -0
  61. package/dist/contracts/utils/index.mjs +120 -0
  62. package/dist/contracts/utils/index.mjs.map +1 -0
  63. package/dist/contracts/wormhole/bytes32.mjs +16 -0
  64. package/dist/contracts/wormhole/bytes32.mjs.map +1 -0
  65. package/dist/contracts/wormhole/consumed_vaas.mjs +16 -0
  66. package/dist/contracts/wormhole/consumed_vaas.mjs.map +1 -0
  67. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs +16 -0
  68. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.mjs.map +1 -0
  69. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs +21 -0
  70. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.mjs.map +1 -0
  71. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs +19 -0
  72. package/dist/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.mjs.map +1 -0
  73. package/dist/contracts/wormhole/external_address.mjs +16 -0
  74. package/dist/contracts/wormhole/external_address.mjs.map +1 -0
  75. package/dist/contracts/wormhole/fee_collector.mjs +20 -0
  76. package/dist/contracts/wormhole/fee_collector.mjs.map +1 -0
  77. package/dist/contracts/wormhole/set.mjs +16 -0
  78. package/dist/contracts/wormhole/set.mjs.map +1 -0
  79. package/dist/contracts/wormhole/state.mjs +31 -0
  80. package/dist/contracts/wormhole/state.mjs.map +1 -0
  81. package/dist/haneulns-client.d.mts +76 -0
  82. package/dist/haneulns-client.d.mts.map +1 -0
  83. package/dist/haneulns-client.mjs +205 -0
  84. package/dist/haneulns-client.mjs.map +1 -0
  85. package/dist/haneulns-transaction.d.mts +144 -0
  86. package/dist/haneulns-transaction.d.mts.map +1 -0
  87. package/dist/haneulns-transaction.mjs +384 -0
  88. package/dist/haneulns-transaction.mjs.map +1 -0
  89. package/dist/helpers.d.mts +22 -0
  90. package/dist/helpers.d.mts.map +1 -0
  91. package/dist/helpers.mjs +45 -0
  92. package/dist/helpers.mjs.map +1 -0
  93. package/dist/index.d.mts +6 -0
  94. package/dist/index.mjs +6 -0
  95. package/dist/pyth/PriceServiceConnection.mjs +35 -0
  96. package/dist/pyth/PriceServiceConnection.mjs.map +1 -0
  97. package/dist/pyth/pyth-helpers.mjs +18 -0
  98. package/dist/pyth/pyth-helpers.mjs.map +1 -0
  99. package/dist/pyth/pyth.mjs +219 -0
  100. package/dist/pyth/pyth.mjs.map +1 -0
  101. package/dist/types.d.mts +88 -0
  102. package/dist/types.d.mts.map +1 -0
  103. package/package.json +27 -23
  104. package/src/contracts/haneulns/admin.ts +114 -0
  105. package/src/contracts/haneulns/auction.ts +341 -0
  106. package/src/contracts/haneulns/config.ts +225 -0
  107. package/src/contracts/haneulns/constants.ts +167 -0
  108. package/src/contracts/haneulns/controller.ts +269 -0
  109. package/src/contracts/haneulns/core_config.ts +208 -0
  110. package/src/contracts/haneulns/deps/haneul/balance.ts +19 -0
  111. package/src/contracts/haneulns/deps/haneul/coin.ts +20 -0
  112. package/src/contracts/haneulns/deps/haneul/linked_table.ts +27 -0
  113. package/src/contracts/haneulns/deps/haneul/table.ts +36 -0
  114. package/src/contracts/haneulns/deps/haneul/vec_map.ts +33 -0
  115. package/src/contracts/haneulns/deps/haneul/vec_set.ts +22 -0
  116. package/src/contracts/haneulns/deps/std/type_name.ts +24 -0
  117. package/src/contracts/haneulns/domain.ts +230 -0
  118. package/src/contracts/haneulns/haneulns.ts +456 -0
  119. package/src/contracts/haneulns/haneulns_registration.ts +200 -0
  120. package/src/contracts/haneulns/name_record.ts +315 -0
  121. package/src/contracts/haneulns/payment.ts +444 -0
  122. package/src/contracts/haneulns/pricing_config.ts +190 -0
  123. package/src/contracts/haneulns/registry.ts +514 -0
  124. package/src/contracts/haneulns/subdomain_registration.ts +63 -0
  125. package/src/contracts/haneulns/update_image.ts +15 -0
  126. package/src/contracts/haneulns_coupons/constants.ts +45 -0
  127. package/src/contracts/haneulns_coupons/coupon.ts +15 -0
  128. package/src/contracts/haneulns_coupons/coupon_house.ts +412 -0
  129. package/src/contracts/haneulns_coupons/data.ts +12 -0
  130. package/src/contracts/haneulns_coupons/deps/haneul/bag.ts +41 -0
  131. package/src/contracts/haneulns_coupons/range.ts +101 -0
  132. package/src/contracts/haneulns_coupons/rules.ts +342 -0
  133. package/src/contracts/haneulns_discounts/deps/haneul/linked_table.ts +27 -0
  134. package/src/contracts/haneulns_discounts/deps/haneulns/pricing_config.ts +10 -0
  135. package/src/contracts/haneulns_discounts/discounts.ts +156 -0
  136. package/src/contracts/haneulns_discounts/free_claims.ts +161 -0
  137. package/src/contracts/haneulns_discounts/house.ts +47 -0
  138. package/src/contracts/haneulns_payments/deps/haneul/vec_map.ts +33 -0
  139. package/src/contracts/haneulns_payments/deps/std/type_name.ts +24 -0
  140. package/src/contracts/haneulns_payments/payments.ts +257 -0
  141. package/src/contracts/haneulns_temp_subdomain_proxy/subdomain_proxy.ts +343 -0
  142. package/src/contracts/pyth/data_source.ts +15 -0
  143. package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
  144. package/src/contracts/pyth/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
  145. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/bytes32.ts +12 -0
  146. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/consumed_vaas.ts +13 -0
  147. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/external_address.ts +13 -0
  148. package/src/contracts/pyth/deps/0xf47329f4344f3bf0f8e436e2f7b485466cff300f12a166563995d3888c296a94/set.ts +12 -0
  149. package/src/contracts/pyth/state.ts +22 -0
  150. package/src/contracts/utils/index.ts +234 -0
  151. package/src/contracts/wormhole/bytes32.ts +12 -0
  152. package/src/contracts/wormhole/consumed_vaas.ts +13 -0
  153. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/balance.ts +12 -0
  154. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/package.ts +15 -0
  155. package/src/contracts/wormhole/deps/0x0000000000000000000000000000000000000000000000000000000000000002/table.ts +13 -0
  156. package/src/contracts/wormhole/external_address.ts +13 -0
  157. package/src/contracts/wormhole/fee_collector.ts +15 -0
  158. package/src/contracts/wormhole/set.ts +12 -0
  159. package/src/contracts/wormhole/state.ts +25 -0
  160. package/src/haneulns-client.ts +115 -160
  161. package/src/haneulns-transaction.ts +142 -116
  162. package/src/index.ts +3 -3
  163. package/src/pyth/pyth.ts +55 -71
  164. package/src/types.ts +5 -7
  165. package/dist/cjs/constants.d.ts +0 -11
  166. package/dist/cjs/constants.js +0 -120
  167. package/dist/cjs/constants.js.map +0 -7
  168. package/dist/cjs/haneulns-client.d.ts +0 -40
  169. package/dist/cjs/haneulns-client.js +0 -261
  170. package/dist/cjs/haneulns-client.js.map +0 -7
  171. package/dist/cjs/haneulns-transaction.d.ts +0 -105
  172. package/dist/cjs/haneulns-transaction.js +0 -465
  173. package/dist/cjs/haneulns-transaction.js.map +0 -7
  174. package/dist/cjs/helpers.d.ts +0 -18
  175. package/dist/cjs/helpers.js +0 -63
  176. package/dist/cjs/helpers.js.map +0 -7
  177. package/dist/cjs/index.d.ts +0 -5
  178. package/dist/cjs/index.js +0 -39
  179. package/dist/cjs/index.js.map +0 -7
  180. package/dist/cjs/package.json +0 -5
  181. package/dist/cjs/pyth/PriceServiceConnection.d.ts +0 -26
  182. package/dist/cjs/pyth/PriceServiceConnection.js +0 -68
  183. package/dist/cjs/pyth/PriceServiceConnection.js.map +0 -7
  184. package/dist/cjs/pyth/pyth-helpers.d.ts +0 -7
  185. package/dist/cjs/pyth/pyth-helpers.js +0 -36
  186. package/dist/cjs/pyth/pyth-helpers.js.map +0 -7
  187. package/dist/cjs/pyth/pyth.d.ts +0 -66
  188. package/dist/cjs/pyth/pyth.js +0 -270
  189. package/dist/cjs/pyth/pyth.js.map +0 -7
  190. package/dist/cjs/types.d.ts +0 -89
  191. package/dist/cjs/types.js +0 -17
  192. package/dist/cjs/types.js.map +0 -7
  193. package/dist/esm/constants.d.ts +0 -11
  194. package/dist/esm/constants.js +0 -100
  195. package/dist/esm/constants.js.map +0 -7
  196. package/dist/esm/haneulns-client.d.ts +0 -40
  197. package/dist/esm/haneulns-client.js +0 -249
  198. package/dist/esm/haneulns-client.js.map +0 -7
  199. package/dist/esm/haneulns-transaction.d.ts +0 -105
  200. package/dist/esm/haneulns-transaction.js +0 -445
  201. package/dist/esm/haneulns-transaction.js.map +0 -7
  202. package/dist/esm/helpers.d.ts +0 -18
  203. package/dist/esm/helpers.js +0 -43
  204. package/dist/esm/helpers.js.map +0 -7
  205. package/dist/esm/index.d.ts +0 -5
  206. package/dist/esm/index.js +0 -28
  207. package/dist/esm/index.js.map +0 -7
  208. package/dist/esm/package.json +0 -5
  209. package/dist/esm/pyth/PriceServiceConnection.d.ts +0 -26
  210. package/dist/esm/pyth/PriceServiceConnection.js +0 -38
  211. package/dist/esm/pyth/PriceServiceConnection.js.map +0 -7
  212. package/dist/esm/pyth/pyth-helpers.d.ts +0 -7
  213. package/dist/esm/pyth/pyth-helpers.js +0 -16
  214. package/dist/esm/pyth/pyth-helpers.js.map +0 -7
  215. package/dist/esm/pyth/pyth.d.ts +0 -66
  216. package/dist/esm/pyth/pyth.js +0 -250
  217. package/dist/esm/pyth/pyth.js.map +0 -7
  218. package/dist/esm/types.d.ts +0 -89
  219. package/dist/esm/types.js +0 -1
  220. package/dist/esm/types.js.map +0 -7
  221. package/dist/tsconfig.esm.tsbuildinfo +0 -1
  222. package/dist/tsconfig.tsbuildinfo +0 -1
@@ -0,0 +1,47 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+ /**
6
+ * A base module that holds a shared object for the configuration of the package
7
+ * and exports some package utilities for the 2 systems to use.
8
+ */
9
+
10
+ import { MoveStruct, normalizeMoveArguments, type RawTransactionArgument } from '../utils/index.js';
11
+ import { bcs } from '@haneullabs/haneul/bcs';
12
+ import { type Transaction } from '@haneullabs/haneul/transactions';
13
+ const $moduleName = '@haneulns/discounts::house';
14
+ export const DiscountHouse = new MoveStruct({
15
+ name: `${$moduleName}::DiscountHouse`,
16
+ fields: {
17
+ id: bcs.Address,
18
+ version: bcs.u8(),
19
+ },
20
+ });
21
+ export interface SetVersionArguments {
22
+ self: RawTransactionArgument<string>;
23
+ _: RawTransactionArgument<string>;
24
+ version: RawTransactionArgument<number>;
25
+ }
26
+ export interface SetVersionOptions {
27
+ package?: string;
28
+ arguments:
29
+ | SetVersionArguments
30
+ | [
31
+ self: RawTransactionArgument<string>,
32
+ _: RawTransactionArgument<string>,
33
+ version: RawTransactionArgument<number>,
34
+ ];
35
+ }
36
+ export function setVersion(options: SetVersionOptions) {
37
+ const packageAddress = options.package ?? '@haneulns/discounts';
38
+ const argumentsTypes = [null, null, 'u8'] satisfies (string | null)[];
39
+ const parameterNames = ['self', '_', 'version'];
40
+ return (tx: Transaction) =>
41
+ tx.moveCall({
42
+ package: packageAddress,
43
+ module: 'house',
44
+ function: 'set_version',
45
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
46
+ });
47
+ }
@@ -0,0 +1,33 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+ import { type BcsType, bcs } from '@haneullabs/haneul/bcs';
5
+ import { MoveStruct } from '../../../utils/index.js';
6
+ const $moduleName = '0x2::vec_map';
7
+ /** An entry in the map */
8
+ export function Entry<K extends BcsType<any>, V extends BcsType<any>>(...typeParameters: [K, V]) {
9
+ return new MoveStruct({
10
+ name: `${$moduleName}::Entry<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`,
11
+ fields: {
12
+ key: typeParameters[0],
13
+ value: typeParameters[1],
14
+ },
15
+ });
16
+ }
17
+ /**
18
+ * A map data structure backed by a vector. The map is guaranteed not to contain
19
+ * duplicate keys, but entries are _not_ sorted by key--entries are included in
20
+ * insertion order. All operations are O(N) in the size of the map--the intention
21
+ * of this data structure is only to provide the convenience of programming against
22
+ * a map API. Large maps should use handwritten parent/child relationships instead.
23
+ * Maps that need sorted iteration rather than insertion order iteration should
24
+ * also be handwritten.
25
+ */
26
+ export function VecMap<K extends BcsType<any>, V extends BcsType<any>>(...typeParameters: [K, V]) {
27
+ return new MoveStruct({
28
+ name: `${$moduleName}::VecMap<${typeParameters[0].name as K['name']}, ${typeParameters[1].name as V['name']}>`,
29
+ fields: {
30
+ contents: bcs.vector(Entry(typeParameters[0], typeParameters[1])),
31
+ },
32
+ });
33
+ }
@@ -0,0 +1,24 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+
5
+ /** Functionality for converting Move types into values. Use with care! */
6
+
7
+ import { MoveStruct } from '../../../utils/index.js';
8
+ import { bcs } from '@haneullabs/haneul/bcs';
9
+ const $moduleName = 'std::type_name';
10
+ export const TypeName = new MoveStruct({
11
+ name: `${$moduleName}::TypeName`,
12
+ fields: {
13
+ /**
14
+ * String representation of the type. All types are represented using their source
15
+ * syntax: "u8", "u64", "bool", "address", "vector", and so on for primitive types.
16
+ * Struct types are represented as fully qualified type names; e.g.
17
+ * `00000000000000000000000000000001::string::String` or
18
+ * `0000000000000000000000000000000a::module_name1::type_name1<0000000000000000000000000000000a::module_name2::type_name2<u64>>`
19
+ * Addresses are hex-encoded lowercase values of length ADDRESS_LENGTH (16, 20, or
20
+ * 32 depending on the Move platform)
21
+ */
22
+ name: bcs.string(),
23
+ },
24
+ });
@@ -0,0 +1,257 @@
1
+ /**************************************************************
2
+ * THIS FILE IS GENERATED AND SHOULD NOT BE MANUALLY MODIFIED *
3
+ **************************************************************/
4
+ import {
5
+ MoveTuple,
6
+ MoveStruct,
7
+ normalizeMoveArguments,
8
+ type RawTransactionArgument,
9
+ } from '../utils/index.js';
10
+ import { bcs } from '@haneullabs/haneul/bcs';
11
+ import { type Transaction } from '@haneullabs/haneul/transactions';
12
+ import * as type_name from './deps/std/type_name.js';
13
+ import * as vec_map from './deps/haneul/vec_map.js';
14
+ const $moduleName = '@haneulns/payments::payments';
15
+ export const PaymentsApp = new MoveTuple({
16
+ name: `${$moduleName}::PaymentsApp`,
17
+ fields: [bcs.bool()],
18
+ });
19
+ export const CoinTypeData = new MoveStruct({
20
+ name: `${$moduleName}::CoinTypeData`,
21
+ fields: {
22
+ /** The coin's decimals. */
23
+ decimals: bcs.u8(),
24
+ discount_percentage: bcs.u8(),
25
+ price_feed_id: bcs.vector(bcs.u8()),
26
+ type_name: type_name.TypeName,
27
+ },
28
+ });
29
+ export const PaymentsConfig = new MoveStruct({
30
+ name: `${$moduleName}::PaymentsConfig`,
31
+ fields: {
32
+ currencies: vec_map.VecMap(type_name.TypeName, CoinTypeData),
33
+ base_currency: type_name.TypeName,
34
+ max_age: bcs.u64(),
35
+ /** The percentage of the payment that gets burned, in basis points. */
36
+ burn_bps: bcs.u64(),
37
+ },
38
+ });
39
+ export interface HandleBasePaymentArguments {
40
+ haneulns: RawTransactionArgument<string>;
41
+ bbbVault: RawTransactionArgument<string>;
42
+ intent: RawTransactionArgument<string>;
43
+ payment: RawTransactionArgument<string>;
44
+ }
45
+ export interface HandleBasePaymentOptions {
46
+ package?: string;
47
+ arguments:
48
+ | HandleBasePaymentArguments
49
+ | [
50
+ haneulns: RawTransactionArgument<string>,
51
+ bbbVault: RawTransactionArgument<string>,
52
+ intent: RawTransactionArgument<string>,
53
+ payment: RawTransactionArgument<string>,
54
+ ];
55
+ typeArguments: [string];
56
+ }
57
+ /**
58
+ * This has to be called with our base payment currency. The payment has to be
59
+ * equal to the base price of the domain. We do not need to check the price feed
60
+ * for the base currency.
61
+ */
62
+ export function handleBasePayment(options: HandleBasePaymentOptions) {
63
+ const packageAddress = options.package ?? '@haneulns/payments';
64
+ const argumentsTypes = [null, null, null, null] satisfies (string | null)[];
65
+ const parameterNames = ['haneulns', 'bbbVault', 'intent', 'payment'];
66
+ return (tx: Transaction) =>
67
+ tx.moveCall({
68
+ package: packageAddress,
69
+ module: 'payments',
70
+ function: 'handle_base_payment',
71
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
72
+ typeArguments: options.typeArguments,
73
+ });
74
+ }
75
+ export interface HandlePaymentArguments {
76
+ haneulns: RawTransactionArgument<string>;
77
+ bbbVault: RawTransactionArgument<string>;
78
+ intent: RawTransactionArgument<string>;
79
+ payment: RawTransactionArgument<string>;
80
+ priceInfoObject: RawTransactionArgument<string>;
81
+ userPriceGuard: RawTransactionArgument<number | bigint>;
82
+ }
83
+ export interface HandlePaymentOptions {
84
+ package?: string;
85
+ arguments:
86
+ | HandlePaymentArguments
87
+ | [
88
+ haneulns: RawTransactionArgument<string>,
89
+ bbbVault: RawTransactionArgument<string>,
90
+ intent: RawTransactionArgument<string>,
91
+ payment: RawTransactionArgument<string>,
92
+ priceInfoObject: RawTransactionArgument<string>,
93
+ userPriceGuard: RawTransactionArgument<number | bigint>,
94
+ ];
95
+ typeArguments: [string];
96
+ }
97
+ /**
98
+ * Handles a payment done for a non-base currency payment. E.g. HANEUL, NS.
99
+ *
100
+ * The payment amount is derived from the base currency price and the Pyth price
101
+ * feed.
102
+ *
103
+ * The `user_price_guard` is a value that the user expects to pay. If the payment
104
+ * amount is higher than this value, the payment will be rejected. This is to
105
+ * protect the user from paying more than they expected on their FEs. Ideally, this
106
+ * number should be calculated on the FE based on the price that is being displayed
107
+ * to the user (with a buffer determined by the FE).
108
+ */
109
+ export function handlePayment(options: HandlePaymentOptions) {
110
+ const packageAddress = options.package ?? '@haneulns/payments';
111
+ const argumentsTypes = [null, null, null, null, '0x2::clock::Clock', null, 'u64'] satisfies (
112
+ | string
113
+ | null
114
+ )[];
115
+ const parameterNames = [
116
+ 'haneulns',
117
+ 'bbbVault',
118
+ 'intent',
119
+ 'payment',
120
+ 'priceInfoObject',
121
+ 'userPriceGuard',
122
+ ];
123
+ return (tx: Transaction) =>
124
+ tx.moveCall({
125
+ package: packageAddress,
126
+ module: 'payments',
127
+ function: 'handle_payment',
128
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
129
+ typeArguments: options.typeArguments,
130
+ });
131
+ }
132
+ export interface CalculatePriceArguments {
133
+ haneulns: RawTransactionArgument<string>;
134
+ baseAmount: RawTransactionArgument<number | bigint>;
135
+ priceInfoObject: RawTransactionArgument<string>;
136
+ }
137
+ export interface CalculatePriceOptions {
138
+ package?: string;
139
+ arguments:
140
+ | CalculatePriceArguments
141
+ | [
142
+ haneulns: RawTransactionArgument<string>,
143
+ baseAmount: RawTransactionArgument<number | bigint>,
144
+ priceInfoObject: RawTransactionArgument<string>,
145
+ ];
146
+ typeArguments: [string];
147
+ }
148
+ /**
149
+ * Calculates the amount that has to be paid in the target currency.
150
+ *
151
+ * Can be used to split the payment amount in a single PTB.
152
+ *
153
+ * 1. const intent = function_to_get_intent();
154
+ * 2. const price = calculate_price<HANEUL>(haneulns, intent, ...);
155
+ * 3. const coin = txb.splitCoins(baseCoin, [price])
156
+ * 4. handle_payment<HANEUL>(haneulns, intent, coin, ...);
157
+ */
158
+ export function calculatePrice(options: CalculatePriceOptions) {
159
+ const packageAddress = options.package ?? '@haneulns/payments';
160
+ const argumentsTypes = [null, 'u64', '0x2::clock::Clock', null] satisfies (string | null)[];
161
+ const parameterNames = ['haneulns', 'baseAmount', 'priceInfoObject'];
162
+ return (tx: Transaction) =>
163
+ tx.moveCall({
164
+ package: packageAddress,
165
+ module: 'payments',
166
+ function: 'calculate_price',
167
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
168
+ typeArguments: options.typeArguments,
169
+ });
170
+ }
171
+ export interface CalculatePriceAfterDiscountArguments {
172
+ haneulns: RawTransactionArgument<string>;
173
+ intent: RawTransactionArgument<string>;
174
+ }
175
+ export interface CalculatePriceAfterDiscountOptions {
176
+ package?: string;
177
+ arguments:
178
+ | CalculatePriceAfterDiscountArguments
179
+ | [haneulns: RawTransactionArgument<string>, intent: RawTransactionArgument<string>];
180
+ typeArguments: [string];
181
+ }
182
+ export function calculatePriceAfterDiscount(options: CalculatePriceAfterDiscountOptions) {
183
+ const packageAddress = options.package ?? '@haneulns/payments';
184
+ const argumentsTypes = [null, null] satisfies (string | null)[];
185
+ const parameterNames = ['haneulns', 'intent'];
186
+ return (tx: Transaction) =>
187
+ tx.moveCall({
188
+ package: packageAddress,
189
+ module: 'payments',
190
+ function: 'calculate_price_after_discount',
191
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
192
+ typeArguments: options.typeArguments,
193
+ });
194
+ }
195
+ export interface NewCoinTypeDataArguments {
196
+ coinMetadata: RawTransactionArgument<string>;
197
+ discountPercentage: RawTransactionArgument<number>;
198
+ priceFeedId: RawTransactionArgument<number[]>;
199
+ }
200
+ export interface NewCoinTypeDataOptions {
201
+ package?: string;
202
+ arguments:
203
+ | NewCoinTypeDataArguments
204
+ | [
205
+ coinMetadata: RawTransactionArgument<string>,
206
+ discountPercentage: RawTransactionArgument<number>,
207
+ priceFeedId: RawTransactionArgument<number[]>,
208
+ ];
209
+ typeArguments: [string];
210
+ }
211
+ /** Creates a new CoinTypeData struct. Leave price_feed_id empty for base currency. */
212
+ export function newCoinTypeData(options: NewCoinTypeDataOptions) {
213
+ const packageAddress = options.package ?? '@haneulns/payments';
214
+ const argumentsTypes = [null, 'u8', 'vector<u8>'] satisfies (string | null)[];
215
+ const parameterNames = ['coinMetadata', 'discountPercentage', 'priceFeedId'];
216
+ return (tx: Transaction) =>
217
+ tx.moveCall({
218
+ package: packageAddress,
219
+ module: 'payments',
220
+ function: 'new_coin_type_data',
221
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
222
+ typeArguments: options.typeArguments,
223
+ });
224
+ }
225
+ export interface NewPaymentsConfigArguments {
226
+ setups: RawTransactionArgument<string[]>;
227
+ baseCurrency: RawTransactionArgument<string>;
228
+ maxAge: RawTransactionArgument<number | bigint>;
229
+ burnBps: RawTransactionArgument<number | bigint>;
230
+ }
231
+ export interface NewPaymentsConfigOptions {
232
+ package?: string;
233
+ arguments:
234
+ | NewPaymentsConfigArguments
235
+ | [
236
+ setups: RawTransactionArgument<string[]>,
237
+ baseCurrency: RawTransactionArgument<string>,
238
+ maxAge: RawTransactionArgument<number | bigint>,
239
+ burnBps: RawTransactionArgument<number | bigint>,
240
+ ];
241
+ }
242
+ /**
243
+ * Creates a new PaymentsConfig struct. Can be attached by the Admin to HaneulNS to
244
+ * allow the payments module to work.
245
+ */
246
+ export function newPaymentsConfig(options: NewPaymentsConfigOptions) {
247
+ const packageAddress = options.package ?? '@haneulns/payments';
248
+ const argumentsTypes = ['vector<null>', null, 'u64', 'u64'] satisfies (string | null)[];
249
+ const parameterNames = ['setups', 'baseCurrency', 'maxAge', 'burnBps'];
250
+ return (tx: Transaction) =>
251
+ tx.moveCall({
252
+ package: packageAddress,
253
+ module: 'payments',
254
+ function: 'new_payments_config',
255
+ arguments: normalizeMoveArguments(options.arguments, argumentsTypes, parameterNames),
256
+ });
257
+ }