@haneullabs/payment-kit 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (96) hide show
  1. package/README.md +123 -0
  2. package/dist/cjs/calls.d.ts +71 -0
  3. package/dist/cjs/calls.js +207 -0
  4. package/dist/cjs/calls.js.map +7 -0
  5. package/dist/cjs/client.d.ts +36 -0
  6. package/dist/cjs/client.js +123 -0
  7. package/dist/cjs/client.js.map +7 -0
  8. package/dist/cjs/constants.d.ts +11 -0
  9. package/dist/cjs/constants.js +40 -0
  10. package/dist/cjs/constants.js.map +7 -0
  11. package/dist/cjs/contracts/payment_kit/config.d.ts +14 -0
  12. package/dist/cjs/contracts/payment_kit/config.js +50 -0
  13. package/dist/cjs/contracts/payment_kit/config.js.map +7 -0
  14. package/dist/cjs/contracts/payment_kit/deps/std/type_name.d.ts +14 -0
  15. package/dist/cjs/contracts/payment_kit/deps/std/type_name.js +42 -0
  16. package/dist/cjs/contracts/payment_kit/deps/std/type_name.js.map +7 -0
  17. package/dist/cjs/contracts/payment_kit/deps/sui/object.d.ts +5 -0
  18. package/dist/cjs/contracts/payment_kit/deps/sui/object.js +33 -0
  19. package/dist/cjs/contracts/payment_kit/deps/sui/object.js.map +7 -0
  20. package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.d.ts +27 -0
  21. package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.js +45 -0
  22. package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.js.map +7 -0
  23. package/dist/cjs/contracts/payment_kit/payment_kit.d.ts +233 -0
  24. package/dist/cjs/contracts/payment_kit/payment_kit.js +252 -0
  25. package/dist/cjs/contracts/payment_kit/payment_kit.js.map +7 -0
  26. package/dist/cjs/contracts/utils/index.d.ts +12 -0
  27. package/dist/cjs/contracts/utils/index.js +151 -0
  28. package/dist/cjs/contracts/utils/index.js.map +7 -0
  29. package/dist/cjs/error.d.ts +4 -0
  30. package/dist/cjs/error.js +29 -0
  31. package/dist/cjs/error.js.map +7 -0
  32. package/dist/cjs/index.d.ts +5 -0
  33. package/dist/cjs/index.js +35 -0
  34. package/dist/cjs/index.js.map +7 -0
  35. package/dist/cjs/package.json +5 -0
  36. package/dist/cjs/transactions.d.ts +73 -0
  37. package/dist/cjs/transactions.js +131 -0
  38. package/dist/cjs/transactions.js.map +7 -0
  39. package/dist/cjs/types.d.ts +62 -0
  40. package/dist/cjs/types.js +17 -0
  41. package/dist/cjs/types.js.map +7 -0
  42. package/dist/cjs/uri.d.ts +27 -0
  43. package/dist/cjs/uri.js +131 -0
  44. package/dist/cjs/uri.js.map +7 -0
  45. package/dist/cjs/utils.d.ts +1 -0
  46. package/dist/cjs/utils.js +34 -0
  47. package/dist/cjs/utils.js.map +7 -0
  48. package/dist/esm/calls.d.ts +71 -0
  49. package/dist/esm/calls.js +196 -0
  50. package/dist/esm/calls.js.map +7 -0
  51. package/dist/esm/client.d.ts +36 -0
  52. package/dist/esm/client.js +106 -0
  53. package/dist/esm/client.js.map +7 -0
  54. package/dist/esm/constants.d.ts +11 -0
  55. package/dist/esm/constants.js +20 -0
  56. package/dist/esm/constants.js.map +7 -0
  57. package/dist/esm/contracts/payment_kit/config.d.ts +14 -0
  58. package/dist/esm/contracts/payment_kit/config.js +20 -0
  59. package/dist/esm/contracts/payment_kit/config.js.map +7 -0
  60. package/dist/esm/contracts/payment_kit/deps/std/type_name.d.ts +14 -0
  61. package/dist/esm/contracts/payment_kit/deps/std/type_name.js +22 -0
  62. package/dist/esm/contracts/payment_kit/deps/std/type_name.js.map +7 -0
  63. package/dist/esm/contracts/payment_kit/deps/sui/object.d.ts +5 -0
  64. package/dist/esm/contracts/payment_kit/deps/sui/object.js +13 -0
  65. package/dist/esm/contracts/payment_kit/deps/sui/object.js.map +7 -0
  66. package/dist/esm/contracts/payment_kit/deps/sui/vec_map.d.ts +27 -0
  67. package/dist/esm/contracts/payment_kit/deps/sui/vec_map.js +25 -0
  68. package/dist/esm/contracts/payment_kit/deps/sui/vec_map.js.map +7 -0
  69. package/dist/esm/contracts/payment_kit/payment_kit.d.ts +233 -0
  70. package/dist/esm/contracts/payment_kit/payment_kit.js +222 -0
  71. package/dist/esm/contracts/payment_kit/payment_kit.js.map +7 -0
  72. package/dist/esm/contracts/utils/index.d.ts +12 -0
  73. package/dist/esm/contracts/utils/index.js +131 -0
  74. package/dist/esm/contracts/utils/index.js.map +7 -0
  75. package/dist/esm/error.d.ts +4 -0
  76. package/dist/esm/error.js +9 -0
  77. package/dist/esm/error.js.map +7 -0
  78. package/dist/esm/index.d.ts +5 -0
  79. package/dist/esm/index.js +15 -0
  80. package/dist/esm/index.js.map +7 -0
  81. package/dist/esm/package.json +5 -0
  82. package/dist/esm/transactions.d.ts +73 -0
  83. package/dist/esm/transactions.js +111 -0
  84. package/dist/esm/transactions.js.map +7 -0
  85. package/dist/esm/types.d.ts +62 -0
  86. package/dist/esm/types.js +1 -0
  87. package/dist/esm/types.js.map +7 -0
  88. package/dist/esm/uri.d.ts +27 -0
  89. package/dist/esm/uri.js +111 -0
  90. package/dist/esm/uri.js.map +7 -0
  91. package/dist/esm/utils.d.ts +1 -0
  92. package/dist/esm/utils.js +14 -0
  93. package/dist/esm/utils.js.map +7 -0
  94. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  95. package/dist/tsconfig.tsbuildinfo +1 -0
  96. package/package.json +49 -0
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/contracts/utils/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport type { BcsType, TypeTag } from '@haneullabs/haneul/bcs';\nimport { bcs, TypeTagSerializer, BcsStruct, BcsEnum, BcsTuple } from '@haneullabs/haneul/bcs';\nimport { normalizeHaneulAddress } from '@haneullabs/haneul/utils';\nimport type { TransactionArgument } from '@haneullabs/haneul/transactions';\nimport { isArgument } from '@haneullabs/haneul/transactions';\n\nconst MOVE_STDLIB_ADDRESS = normalizeHaneulAddress('0x1');\nconst HANEUL_FRAMEWORK_ADDRESS = normalizeHaneulAddress('0x2');\nconst HANEUL_SYSTEM_ADDRESS = normalizeHaneulAddress('0x3');\n\nexport type RawTransactionArgument<T> = T | TransactionArgument;\n\nexport function getPureBcsSchema(typeTag: string | TypeTag): BcsType<any> | null {\n\tconst parsedTag = typeof typeTag === 'string' ? TypeTagSerializer.parseFromStr(typeTag) : typeTag;\n\n\tif ('u8' in parsedTag) {\n\t\treturn bcs.U8;\n\t} else if ('u16' in parsedTag) {\n\t\treturn bcs.U16;\n\t} else if ('u32' in parsedTag) {\n\t\treturn bcs.U32;\n\t} else if ('u64' in parsedTag) {\n\t\treturn bcs.U64;\n\t} else if ('u128' in parsedTag) {\n\t\treturn bcs.U128;\n\t} else if ('u256' in parsedTag) {\n\t\treturn bcs.U256;\n\t} else if ('address' in parsedTag) {\n\t\treturn bcs.Address;\n\t} else if ('bool' in parsedTag) {\n\t\treturn bcs.Bool;\n\t} else if ('vector' in parsedTag) {\n\t\tconst type = getPureBcsSchema(parsedTag.vector);\n\t\treturn type ? bcs.vector(type) : null;\n\t} else if ('struct' in parsedTag) {\n\t\tconst structTag = parsedTag.struct;\n\t\tconst pkg = normalizeHaneulAddress(parsedTag.struct.address);\n\n\t\tif (pkg === MOVE_STDLIB_ADDRESS) {\n\t\t\tif (\n\t\t\t\t(structTag.module === 'ascii' || structTag.module === 'string') &&\n\t\t\t\tstructTag.name === 'String'\n\t\t\t) {\n\t\t\t\treturn bcs.String;\n\t\t\t}\n\n\t\t\tif (structTag.module === 'option' && structTag.name === 'Option') {\n\t\t\t\tconst type = getPureBcsSchema(structTag.typeParams[0]!);\n\t\t\t\treturn type ? bcs.option(type) : null;\n\t\t\t}\n\t\t}\n\n\t\tif (pkg === HANEUL_FRAMEWORK_ADDRESS && structTag.module === 'Object' && structTag.name === 'ID') {\n\t\t\treturn bcs.Address;\n\t\t}\n\t}\n\n\treturn null;\n}\n\nexport function normalizeMoveArguments(\n\targs: unknown[] | object,\n\targTypes: string[],\n\tparameterNames?: string[],\n) {\n\tconst argLen = Array.isArray(args) ? args.length : Object.keys(args).length;\n\tif (parameterNames && argLen !== parameterNames.length) {\n\t\tthrow new Error(\n\t\t\t`Invalid number of arguments, expected ${parameterNames.length}, got ${argLen}`,\n\t\t);\n\t}\n\n\tconst normalizedArgs: TransactionArgument[] = [];\n\n\tlet index = 0;\n\tfor (const [i, argType] of argTypes.entries()) {\n\t\tif (argType === `${HANEUL_FRAMEWORK_ADDRESS}::deny_list::DenyList`) {\n\t\t\tnormalizedArgs.push((tx) => tx.object.denyList());\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (argType === `${HANEUL_FRAMEWORK_ADDRESS}::random::Random`) {\n\t\t\tnormalizedArgs.push((tx) => tx.object.random());\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (argType === `${HANEUL_FRAMEWORK_ADDRESS}::clock::Clock`) {\n\t\t\tnormalizedArgs.push((tx) => tx.object.clock());\n\t\t\tcontinue;\n\t\t}\n\n\t\tif (argType === `${HANEUL_SYSTEM_ADDRESS}::haneul_system::HaneulSystemState`) {\n\t\t\tnormalizedArgs.push((tx) => tx.object.system());\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet arg;\n\t\tif (Array.isArray(args)) {\n\t\t\tif (index >= args.length) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Invalid number of arguments, expected at least ${index + 1}, got ${args.length}`,\n\t\t\t\t);\n\t\t\t}\n\t\t\targ = args[index];\n\t\t} else {\n\t\t\tif (!parameterNames) {\n\t\t\t\tthrow new Error(`Expected arguments to be passed as an array`);\n\t\t\t}\n\t\t\tconst name = parameterNames[index];\n\t\t\targ = args[name as keyof typeof args];\n\n\t\t\tif (arg == null) {\n\t\t\t\tthrow new Error(`Parameter ${name} is required`);\n\t\t\t}\n\t\t}\n\n\t\tindex += 1;\n\n\t\tif (typeof arg === 'function' || isArgument(arg)) {\n\t\t\tnormalizedArgs.push(arg as TransactionArgument);\n\t\t\tcontinue;\n\t\t}\n\n\t\tconst type = argTypes[i]!;\n\t\tconst bcsType = getPureBcsSchema(type);\n\n\t\tif (bcsType) {\n\t\t\tconst bytes = bcsType.serialize(arg as never);\n\t\t\tnormalizedArgs.push((tx) => tx.pure(bytes));\n\t\t\tcontinue;\n\t\t} else if (typeof arg === 'string') {\n\t\t\tnormalizedArgs.push((tx) => tx.object(arg));\n\t\t\tcontinue;\n\t\t}\n\n\t\tthrow new Error(`Invalid argument ${stringify(arg)} for type ${type}`);\n\t}\n\n\treturn normalizedArgs;\n}\n\nexport class MoveStruct<\n\tT extends Record<string, BcsType<any>>,\n\tconst Name extends string = string,\n> extends BcsStruct<T, Name> {}\n\nexport class MoveEnum<\n\tT extends Record<string, BcsType<any> | null>,\n\tconst Name extends string,\n> extends BcsEnum<T, Name> {}\n\nexport class MoveTuple<\n\tT extends readonly BcsType<any>[],\n\tconst Name extends string,\n> extends BcsTuple<T, Name> {}\n\nfunction stringify(val: unknown) {\n\tif (typeof val === 'object') {\n\t\treturn JSON.stringify(val, (val: unknown) => val);\n\t}\n\tif (typeof val === 'bigint') {\n\t\treturn val.toString();\n\t}\n\n\treturn val;\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["val"]
7
+ }
@@ -0,0 +1,4 @@
1
+ export declare class PaymentKitClientError extends Error {
2
+ }
3
+ export declare class PaymentKitUriError extends PaymentKitClientError {
4
+ }
@@ -0,0 +1,9 @@
1
+ class PaymentKitClientError extends Error {
2
+ }
3
+ class PaymentKitUriError extends PaymentKitClientError {
4
+ }
5
+ export {
6
+ PaymentKitClientError,
7
+ PaymentKitUriError
8
+ };
9
+ //# sourceMappingURL=error.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/error.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport class PaymentKitClientError extends Error {}\n\nexport class PaymentKitUriError extends PaymentKitClientError {}\n"],
5
+ "mappings": "AAGO,MAAM,8BAA8B,MAAM;AAAC;AAE3C,MAAM,2BAA2B,sBAAsB;AAAC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ export { PaymentKitClient, paymentKit } from './client.js';
2
+ export type { PaymentKitCompatibleClient, PaymentKitClientOptions, PaymentKitPackageConfig, GetPaymentRecordOptions, ProcessRegistryPaymentOptions, ProcessEphemeralPaymentOptions, GetPaymentRecordResponse, CreateRegistryOptions, SetEpochExpirationDurationOptions, SetRegistryManagedFundsOptions, WithdrawFromRegistryOptions, DeletePaymentRecordOptions, PaymentUriParams, } from './types.js';
3
+ export { PaymentKitClientError, PaymentKitUriError } from './error.js';
4
+ export { DEFAULT_REGISTRY_NAME, SUI_PAYMENT_KIT_PROTOCOL } from './constants.js';
5
+ export { createPaymentTransactionUri, parsePaymentTransactionUri } from './uri.js';
@@ -0,0 +1,15 @@
1
+ import { PaymentKitClient, paymentKit } from "./client.js";
2
+ import { PaymentKitClientError, PaymentKitUriError } from "./error.js";
3
+ import { DEFAULT_REGISTRY_NAME, SUI_PAYMENT_KIT_PROTOCOL } from "./constants.js";
4
+ import { createPaymentTransactionUri, parsePaymentTransactionUri } from "./uri.js";
5
+ export {
6
+ DEFAULT_REGISTRY_NAME,
7
+ PaymentKitClient,
8
+ PaymentKitClientError,
9
+ PaymentKitUriError,
10
+ SUI_PAYMENT_KIT_PROTOCOL,
11
+ createPaymentTransactionUri,
12
+ parsePaymentTransactionUri,
13
+ paymentKit
14
+ };
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nexport { PaymentKitClient, paymentKit } from './client.js';\nexport type {\n\tPaymentKitCompatibleClient,\n\tPaymentKitClientOptions,\n\tPaymentKitPackageConfig,\n\tGetPaymentRecordOptions,\n\tProcessRegistryPaymentOptions,\n\tProcessEphemeralPaymentOptions,\n\tGetPaymentRecordResponse,\n\tCreateRegistryOptions,\n\tSetEpochExpirationDurationOptions,\n\tSetRegistryManagedFundsOptions,\n\tWithdrawFromRegistryOptions,\n\tDeletePaymentRecordOptions,\n\tPaymentUriParams,\n} from './types.js';\nexport { PaymentKitClientError, PaymentKitUriError } from './error.js';\nexport { DEFAULT_REGISTRY_NAME, SUI_PAYMENT_KIT_PROTOCOL } from './constants.js';\nexport { createPaymentTransactionUri, parsePaymentTransactionUri } from './uri.js';\n"],
5
+ "mappings": "AAGA,SAAS,kBAAkB,kBAAkB;AAgB7C,SAAS,uBAAuB,0BAA0B;AAC1D,SAAS,uBAAuB,gCAAgC;AAChE,SAAS,6BAA6B,kCAAkC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,5 @@
1
+ {
2
+ "private": true,
3
+ "type": "module",
4
+ "sideEffects": false
5
+ }
@@ -0,0 +1,73 @@
1
+ import { Transaction } from '@haneullabs/haneul/transactions';
2
+ import type { CreateRegistryOptions, DeletePaymentRecordOptions, ProcessEphemeralPaymentOptions, ProcessRegistryPaymentOptions, SetEpochExpirationDurationOptions, SetRegistryManagedFundsOptions, WithdrawFromRegistryOptions } from './types.js';
3
+ import type { PaymentKitCalls } from './calls.js';
4
+ export interface PaymentKitTransactionsOptions {
5
+ calls: PaymentKitCalls;
6
+ }
7
+ export declare class PaymentKitTransactions {
8
+ #private;
9
+ constructor(options: PaymentKitTransactionsOptions);
10
+ /**
11
+ * Creates a `processRegistryPayment` transaction
12
+ *
13
+ * @example
14
+ * ```ts
15
+ * const tx = client.paymentKit.tx.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName });
16
+ * ```
17
+ */
18
+ processRegistryPayment(options: ProcessRegistryPaymentOptions): Transaction;
19
+ /**
20
+ * Creates a `processEphemeralPayment` transaction
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const tx = client.paymentKit.tx.processEphemeralPayment({ nonce, coinType, sender, amount, receiver });
25
+ * ```
26
+ */
27
+ processEphemeralPayment(options: ProcessEphemeralPaymentOptions): Transaction;
28
+ /**
29
+ * Creates a `createRegistry` transaction
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const tx = client.paymentKit.tx.createRegistry({ registryName });
34
+ * ```
35
+ */
36
+ createRegistry(options: CreateRegistryOptions): Transaction;
37
+ /**
38
+ * Creates a `setConfigEpochExpirationDuration` transaction
39
+ *
40
+ * @example
41
+ * ```ts
42
+ * const tx = client.paymentKit.tx.setConfigEpochExpirationDuration({ registryName, epochExpirationDuration, adminCapId });
43
+ * ```
44
+ */
45
+ setConfigEpochExpirationDuration(options: SetEpochExpirationDurationOptions): Transaction;
46
+ /**
47
+ * Creates a `setConfigRegistryManagedFunds` transaction
48
+ *
49
+ * @example
50
+ * ```ts
51
+ * const tx = client.paymentKit.tx.setConfigRegistryManagedFunds({ registryName, registryManagedFunds, adminCapId });
52
+ * ```
53
+ */
54
+ setConfigRegistryManagedFunds(options: SetRegistryManagedFundsOptions): Transaction;
55
+ /**
56
+ * Creates a `withdrawFromRegistry` transaction
57
+ *
58
+ * @example
59
+ * ```ts
60
+ * const tx = client.paymentKit.tx.withdrawFromRegistry({ coinType, registryName, adminCapId });
61
+ * ```
62
+ */
63
+ withdrawFromRegistry(options: WithdrawFromRegistryOptions): Transaction;
64
+ /**
65
+ * Creates a `deletePaymentRecord` transaction
66
+ *
67
+ * @example
68
+ * ```ts
69
+ * const tx = client.paymentKit.tx.deletePaymentRecord({ coinType, nonce, amount, receiver, registryName });
70
+ * ```
71
+ */
72
+ deletePaymentRecord(options: DeletePaymentRecordOptions): Transaction;
73
+ }
@@ -0,0 +1,111 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ var _calls;
9
+ import { Transaction } from "@haneullabs/haneul/transactions";
10
+ class PaymentKitTransactions {
11
+ constructor(options) {
12
+ __privateAdd(this, _calls);
13
+ __privateSet(this, _calls, options.calls);
14
+ }
15
+ /**
16
+ * Creates a `processRegistryPayment` transaction
17
+ *
18
+ * @example
19
+ * ```ts
20
+ * const tx = client.paymentKit.tx.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName });
21
+ * ```
22
+ */
23
+ processRegistryPayment(options) {
24
+ const tx = new Transaction();
25
+ tx.add(__privateGet(this, _calls).processRegistryPayment(options));
26
+ return tx;
27
+ }
28
+ /**
29
+ * Creates a `processEphemeralPayment` transaction
30
+ *
31
+ * @example
32
+ * ```ts
33
+ * const tx = client.paymentKit.tx.processEphemeralPayment({ nonce, coinType, sender, amount, receiver });
34
+ * ```
35
+ */
36
+ processEphemeralPayment(options) {
37
+ const tx = new Transaction();
38
+ tx.add(__privateGet(this, _calls).processEphemeralPayment(options));
39
+ return tx;
40
+ }
41
+ /**
42
+ * Creates a `createRegistry` transaction
43
+ *
44
+ * @example
45
+ * ```ts
46
+ * const tx = client.paymentKit.tx.createRegistry({ registryName });
47
+ * ```
48
+ */
49
+ createRegistry(options) {
50
+ const tx = new Transaction();
51
+ tx.add(__privateGet(this, _calls).createRegistry(options));
52
+ return tx;
53
+ }
54
+ /**
55
+ * Creates a `setConfigEpochExpirationDuration` transaction
56
+ *
57
+ * @example
58
+ * ```ts
59
+ * const tx = client.paymentKit.tx.setConfigEpochExpirationDuration({ registryName, epochExpirationDuration, adminCapId });
60
+ * ```
61
+ */
62
+ setConfigEpochExpirationDuration(options) {
63
+ const tx = new Transaction();
64
+ tx.add(__privateGet(this, _calls).setConfigEpochExpirationDuration(options));
65
+ return tx;
66
+ }
67
+ /**
68
+ * Creates a `setConfigRegistryManagedFunds` transaction
69
+ *
70
+ * @example
71
+ * ```ts
72
+ * const tx = client.paymentKit.tx.setConfigRegistryManagedFunds({ registryName, registryManagedFunds, adminCapId });
73
+ * ```
74
+ */
75
+ setConfigRegistryManagedFunds(options) {
76
+ const tx = new Transaction();
77
+ tx.add(__privateGet(this, _calls).setConfigRegistryManagedFunds(options));
78
+ return tx;
79
+ }
80
+ /**
81
+ * Creates a `withdrawFromRegistry` transaction
82
+ *
83
+ * @example
84
+ * ```ts
85
+ * const tx = client.paymentKit.tx.withdrawFromRegistry({ coinType, registryName, adminCapId });
86
+ * ```
87
+ */
88
+ withdrawFromRegistry(options) {
89
+ const tx = new Transaction();
90
+ tx.add(__privateGet(this, _calls).withdrawFromRegistry(options));
91
+ return tx;
92
+ }
93
+ /**
94
+ * Creates a `deletePaymentRecord` transaction
95
+ *
96
+ * @example
97
+ * ```ts
98
+ * const tx = client.paymentKit.tx.deletePaymentRecord({ coinType, nonce, amount, receiver, registryName });
99
+ * ```
100
+ */
101
+ deletePaymentRecord(options) {
102
+ const tx = new Transaction();
103
+ tx.add(__privateGet(this, _calls).deletePaymentRecord(options));
104
+ return tx;
105
+ }
106
+ }
107
+ _calls = new WeakMap();
108
+ export {
109
+ PaymentKitTransactions
110
+ };
111
+ //# sourceMappingURL=transactions.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/transactions.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Transaction } from '@haneullabs/haneul/transactions';\nimport type {\n\tCreateRegistryOptions,\n\tDeletePaymentRecordOptions,\n\tProcessEphemeralPaymentOptions,\n\tProcessRegistryPaymentOptions,\n\tSetEpochExpirationDurationOptions,\n\tSetRegistryManagedFundsOptions,\n\tWithdrawFromRegistryOptions,\n} from './types.js';\nimport type { PaymentKitCalls } from './calls.js';\n\nexport interface PaymentKitTransactionsOptions {\n\tcalls: PaymentKitCalls;\n}\n\nexport class PaymentKitTransactions {\n\t#calls: PaymentKitCalls;\n\n\tconstructor(options: PaymentKitTransactionsOptions) {\n\t\tthis.#calls = options.calls;\n\t}\n\n\t/**\n\t * Creates a `processRegistryPayment` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName });\n\t * ```\n\t */\n\tprocessRegistryPayment(options: ProcessRegistryPaymentOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.processRegistryPayment(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `processEphemeralPayment` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.processEphemeralPayment({ nonce, coinType, sender, amount, receiver });\n\t * ```\n\t */\n\tprocessEphemeralPayment(options: ProcessEphemeralPaymentOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.processEphemeralPayment(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `createRegistry` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.createRegistry({ registryName });\n\t * ```\n\t */\n\tcreateRegistry(options: CreateRegistryOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.createRegistry(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `setConfigEpochExpirationDuration` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.setConfigEpochExpirationDuration({ registryName, epochExpirationDuration, adminCapId });\n\t * ```\n\t */\n\tsetConfigEpochExpirationDuration(options: SetEpochExpirationDurationOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.setConfigEpochExpirationDuration(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `setConfigRegistryManagedFunds` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.setConfigRegistryManagedFunds({ registryName, registryManagedFunds, adminCapId });\n\t * ```\n\t */\n\tsetConfigRegistryManagedFunds(options: SetRegistryManagedFundsOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.setConfigRegistryManagedFunds(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `withdrawFromRegistry` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.withdrawFromRegistry({ coinType, registryName, adminCapId });\n\t * ```\n\t */\n\twithdrawFromRegistry(options: WithdrawFromRegistryOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.withdrawFromRegistry(options));\n\n\t\treturn tx;\n\t}\n\n\t/**\n\t * Creates a `deletePaymentRecord` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * const tx = client.paymentKit.tx.deletePaymentRecord({ coinType, nonce, amount, receiver, registryName });\n\t * ```\n\t */\n\tdeletePaymentRecord(options: DeletePaymentRecordOptions) {\n\t\tconst tx = new Transaction();\n\t\ttx.add(this.#calls.deletePaymentRecord(options));\n\n\t\treturn tx;\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;AAAA;AAGA,SAAS,mBAAmB;AAgBrB,MAAM,uBAAuB;AAAA,EAGnC,YAAY,SAAwC;AAFpD;AAGC,uBAAK,QAAS,QAAQ;AAAA,EACvB;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,uBAAuB,SAAwC;AAC9D,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,uBAAuB,OAAO,CAAC;AAElD,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,wBAAwB,SAAyC;AAChE,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,wBAAwB,OAAO,CAAC;AAEnD,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,eAAe,SAAgC;AAC9C,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,eAAe,OAAO,CAAC;AAE1C,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,iCAAiC,SAA4C;AAC5E,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,iCAAiC,OAAO,CAAC;AAE5D,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,8BAA8B,SAAyC;AACtE,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,8BAA8B,OAAO,CAAC;AAEzD,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,qBAAqB,SAAsC;AAC1D,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,qBAAqB,OAAO,CAAC;AAEhD,WAAO;AAAA,EACR;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAUA,oBAAoB,SAAqC;AACxD,UAAM,KAAK,IAAI,YAAY;AAC3B,OAAG,IAAI,mBAAK,QAAO,oBAAoB,OAAO,CAAC;AAE/C,WAAO;AAAA,EACR;AACD;AA9GC;",
6
+ "names": []
7
+ }
@@ -0,0 +1,62 @@
1
+ import type { TransactionResult } from '@haneullabs/haneul/transactions';
2
+ import type { ClientWithCoreApi } from '@haneullabs/haneul/experimental';
3
+ export type PaymentKitPackageConfig = {
4
+ packageId: string;
5
+ namespaceId: string;
6
+ };
7
+ export interface PaymentKitCompatibleClient extends ClientWithCoreApi {
8
+ }
9
+ export interface PaymentKitClientOptions {
10
+ client: PaymentKitCompatibleClient;
11
+ }
12
+ export type Registry = {
13
+ registryName?: string;
14
+ registryId?: never;
15
+ } | {
16
+ registryName?: never;
17
+ registryId: string;
18
+ };
19
+ export type RegistryAndAdminCap = {
20
+ adminCapId: string;
21
+ } & Registry;
22
+ export type PaymentKeyArgs = {
23
+ coinType: string;
24
+ nonce: string;
25
+ amount: number | bigint;
26
+ receiver: string;
27
+ };
28
+ export type GetPaymentRecordOptions = PaymentKeyArgs & Registry;
29
+ export interface GetPaymentRecordResponse {
30
+ key: string;
31
+ paymentTransactionDigest: string | null;
32
+ epochAtTimeOfRecord: string;
33
+ }
34
+ export type ProcessEphemeralPaymentOptions = {
35
+ sender: string;
36
+ sourceCoin?: TransactionResult;
37
+ } & PaymentKeyArgs;
38
+ export type ProcessRegistryPaymentOptions = ProcessEphemeralPaymentOptions & Registry;
39
+ export type CreateRegistryOptions = {
40
+ registryName: string;
41
+ };
42
+ export type SetEpochExpirationDurationOptions = {
43
+ epochExpirationDuration: number | bigint;
44
+ } & RegistryAndAdminCap;
45
+ export type SetRegistryManagedFundsOptions = {
46
+ registryManagedFunds: boolean;
47
+ } & RegistryAndAdminCap;
48
+ export type WithdrawFromRegistryOptions = {
49
+ coinType: string;
50
+ } & RegistryAndAdminCap;
51
+ export type DeletePaymentRecordOptions = {
52
+ coinType: string;
53
+ } & PaymentKeyArgs & Registry;
54
+ export type PaymentUriParams = {
55
+ receiverAddress: string;
56
+ amount: bigint;
57
+ coinType: string;
58
+ nonce: string;
59
+ label?: string;
60
+ message?: string;
61
+ iconUrl?: string;
62
+ } & Partial<Registry>;
@@ -0,0 +1 @@
1
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": [],
4
+ "sourcesContent": [],
5
+ "mappings": "",
6
+ "names": []
7
+ }
@@ -0,0 +1,27 @@
1
+ import type { PaymentUriParams } from './types.js';
2
+ /**
3
+ * Create a payment transaction URI from the given parameters.
4
+ * Returns the constructed URI string.
5
+ *
6
+ * @example
7
+ * ```ts
8
+ * const uri = createPaymentTransactionUri({
9
+ * receiverAddress: "0x...",
10
+ * amount: "10000000", (0.01 SUI)
11
+ * coinType: "0x2::haneul::HANEUL",
12
+ * nonce: <nonce>,
13
+ * registryName: "my-registry"
14
+ * });
15
+ * ```
16
+ */
17
+ export declare const createPaymentTransactionUri: (params: PaymentUriParams) => string;
18
+ /**
19
+ * Parse a payment transaction URI into its components.
20
+ * Returns the parsed payment URI parameters.
21
+ *
22
+ * @example
23
+ * ```ts
24
+ * const params = parsePaymentTransactionUri("sui:0x...?amount=1000000&coinType=0x...&nonce=...");
25
+ * ```
26
+ */
27
+ export declare const parsePaymentTransactionUri: (uri: string) => PaymentUriParams;
@@ -0,0 +1,111 @@
1
+ import { isValidNamedType, isValidHaneulAddress, isValidHaneulObjectId } from "@haneullabs/haneul/utils";
2
+ import { PaymentKitUriError } from "./error.js";
3
+ import { SUI_PAYMENT_KIT_PROTOCOL } from "./constants.js";
4
+ const isValidNonce = (nonce) => {
5
+ return nonce.length <= 36;
6
+ };
7
+ const isValidAmount = (amount) => {
8
+ return amount > 0n;
9
+ };
10
+ const isValidCoinType = (coinType) => {
11
+ return isValidNamedType(coinType);
12
+ };
13
+ const createPaymentTransactionUri = (params) => {
14
+ const { receiverAddress, amount, coinType, nonce, registryId, registryName } = params;
15
+ const uri = new URL(SUI_PAYMENT_KIT_PROTOCOL);
16
+ if (isValidHaneulAddress(receiverAddress)) {
17
+ uri.searchParams.append("receiver", receiverAddress);
18
+ } else {
19
+ throw new PaymentKitUriError("Invalid Haneul address");
20
+ }
21
+ if (isValidAmount(amount)) {
22
+ uri.searchParams.append("amount", amount.toString());
23
+ } else {
24
+ throw new PaymentKitUriError("Amount must be a positive numeric string");
25
+ }
26
+ if (isValidCoinType(coinType)) {
27
+ uri.searchParams.append("coinType", coinType);
28
+ } else {
29
+ throw new PaymentKitUriError("Invalid Coin Type");
30
+ }
31
+ if (isValidNonce(nonce)) {
32
+ uri.searchParams.append("nonce", nonce);
33
+ } else {
34
+ throw new PaymentKitUriError("Nonce length exceeds maximum of 36 characters");
35
+ }
36
+ if (registryId) {
37
+ if (isValidHaneulObjectId(registryId)) {
38
+ uri.searchParams.append("registry", registryId);
39
+ } else {
40
+ throw new PaymentKitUriError("Invalid Haneul Object Id for Registry Id");
41
+ }
42
+ }
43
+ if (registryName) {
44
+ uri.searchParams.append("registry", registryName);
45
+ }
46
+ if (params.label) {
47
+ uri.searchParams.append("label", params.label);
48
+ }
49
+ if (params.message) {
50
+ uri.searchParams.append("message", params.message);
51
+ }
52
+ if (params.iconUrl) {
53
+ uri.searchParams.append("iconUrl", params.iconUrl);
54
+ }
55
+ return uri.toString();
56
+ };
57
+ const parsePaymentTransactionUri = (uri) => {
58
+ if (!uri.startsWith(SUI_PAYMENT_KIT_PROTOCOL + "?")) {
59
+ throw new PaymentKitUriError("Invalid URI: Must start with sui:pay?");
60
+ }
61
+ const url = new URL(uri);
62
+ const params = url.searchParams;
63
+ const receiver = params.get("receiver");
64
+ const amount = params.get("amount");
65
+ const coinType = params.get("coinType");
66
+ const nonce = params.get("nonce");
67
+ if (!receiver || !amount || !coinType || !nonce) {
68
+ throw new PaymentKitUriError("Invalid URI: Missing required parameters");
69
+ }
70
+ if (!isValidHaneulAddress(receiver)) {
71
+ throw new PaymentKitUriError("Invalid URI: Receiver address is not valid");
72
+ }
73
+ if (!isValidCoinType(coinType)) {
74
+ throw new PaymentKitUriError("Invalid URI: Coin Type is not valid");
75
+ }
76
+ if (!isValidNonce(nonce)) {
77
+ throw new PaymentKitUriError("Invalid URI: Nonce length exceeds maximum of 36 characters");
78
+ }
79
+ const bigIntAmount = BigInt(amount);
80
+ if (!isValidAmount(bigIntAmount)) {
81
+ throw new PaymentKitUriError("Invalid URI: Amount must be a positive number");
82
+ }
83
+ const registry = params.get("registry") ?? void 0;
84
+ let registryId;
85
+ let registryName;
86
+ if (registry) {
87
+ if (isValidHaneulObjectId(registry)) {
88
+ registryId = registry;
89
+ } else {
90
+ registryName = registry;
91
+ }
92
+ }
93
+ const baseParams = {
94
+ receiverAddress: receiver,
95
+ amount: bigIntAmount,
96
+ coinType,
97
+ nonce,
98
+ label: params.get("label") ?? void 0,
99
+ message: params.get("message") ?? void 0,
100
+ iconUrl: params.get("icon") ?? void 0
101
+ };
102
+ if (registryId) {
103
+ return { ...baseParams, registryId };
104
+ }
105
+ return { ...baseParams, registryName };
106
+ };
107
+ export {
108
+ createPaymentTransactionUri,
109
+ parsePaymentTransactionUri
110
+ };
111
+ //# sourceMappingURL=uri.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/uri.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { isValidNamedType, isValidHaneulAddress, isValidHaneulObjectId } from '@haneullabs/haneul/utils';\nimport type { PaymentUriParams } from './types.js';\nimport { PaymentKitUriError } from './error.js';\nimport { SUI_PAYMENT_KIT_PROTOCOL } from './constants.js';\n\nconst isValidNonce = (nonce: string) => {\n\treturn nonce.length <= 36;\n};\n\nconst isValidAmount = (amount: bigint) => {\n\treturn amount > 0n;\n};\n\nconst isValidCoinType = (coinType: string) => {\n\treturn isValidNamedType(coinType);\n};\n\n/**\n * Create a payment transaction URI from the given parameters.\n * Returns the constructed URI string.\n *\n * @example\n * ```ts\n * const uri = createPaymentTransactionUri({\n * receiverAddress: \"0x...\",\n * amount: \"10000000\", (0.01 SUI)\n * coinType: \"0x2::haneul::HANEUL\",\n * nonce: <nonce>,\n * registryName: \"my-registry\"\n * });\n * ```\n */\nexport const createPaymentTransactionUri = (params: PaymentUriParams): string => {\n\tconst { receiverAddress, amount, coinType, nonce, registryId, registryName } = params;\n\n\tconst uri = new URL(SUI_PAYMENT_KIT_PROTOCOL);\n\n\tif (isValidHaneulAddress(receiverAddress)) {\n\t\turi.searchParams.append('receiver', receiverAddress);\n\t} else {\n\t\tthrow new PaymentKitUriError('Invalid Haneul address');\n\t}\n\n\tif (isValidAmount(amount)) {\n\t\turi.searchParams.append('amount', amount.toString());\n\t} else {\n\t\tthrow new PaymentKitUriError('Amount must be a positive numeric string');\n\t}\n\n\tif (isValidCoinType(coinType)) {\n\t\turi.searchParams.append('coinType', coinType);\n\t} else {\n\t\tthrow new PaymentKitUriError('Invalid Coin Type');\n\t}\n\n\tif (isValidNonce(nonce)) {\n\t\turi.searchParams.append('nonce', nonce);\n\t} else {\n\t\tthrow new PaymentKitUriError('Nonce length exceeds maximum of 36 characters');\n\t}\n\n\tif (registryId) {\n\t\tif (isValidHaneulObjectId(registryId)) {\n\t\t\turi.searchParams.append('registry', registryId);\n\t\t} else {\n\t\t\tthrow new PaymentKitUriError('Invalid Haneul Object Id for Registry Id');\n\t\t}\n\t}\n\n\tif (registryName) {\n\t\turi.searchParams.append('registry', registryName);\n\t}\n\n\tif (params.label) {\n\t\turi.searchParams.append('label', params.label);\n\t}\n\n\tif (params.message) {\n\t\turi.searchParams.append('message', params.message);\n\t}\n\n\tif (params.iconUrl) {\n\t\turi.searchParams.append('iconUrl', params.iconUrl);\n\t}\n\n\treturn uri.toString();\n};\n\n/**\n * Parse a payment transaction URI into its components.\n * Returns the parsed payment URI parameters.\n *\n * @example\n * ```ts\n * const params = parsePaymentTransactionUri(\"sui:0x...?amount=1000000&coinType=0x...&nonce=...\");\n * ```\n */\nexport const parsePaymentTransactionUri = (uri: string): PaymentUriParams => {\n\tif (!uri.startsWith(SUI_PAYMENT_KIT_PROTOCOL + '?')) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Must start with sui:pay?');\n\t}\n\n\tconst url = new URL(uri);\n\n\t// Extract query parameters\n\tconst params = url.searchParams;\n\tconst receiver = params.get('receiver');\n\tconst amount = params.get('amount');\n\tconst coinType = params.get('coinType');\n\tconst nonce = params.get('nonce');\n\n\t// Amount and CoinType are required\n\tif (!receiver || !amount || !coinType || !nonce) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Missing required parameters');\n\t}\n\n\t// Validate the receiver address\n\tif (!isValidHaneulAddress(receiver)) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Receiver address is not valid');\n\t}\n\n\tif (!isValidCoinType(coinType)) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Coin Type is not valid');\n\t}\n\n\tif (!isValidNonce(nonce)) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Nonce length exceeds maximum of 36 characters');\n\t}\n\n\t// Validate amount is a valid numeric string (int or float) and positive\n\tconst bigIntAmount = BigInt(amount);\n\tif (!isValidAmount(bigIntAmount)) {\n\t\tthrow new PaymentKitUriError('Invalid URI: Amount must be a positive number');\n\t}\n\n\t// Extract optional registry parameter\n\tconst registry = params.get('registry') ?? undefined;\n\n\t// Determine if registry is an ID or name\n\tlet registryId: string | undefined;\n\tlet registryName: string | undefined;\n\n\tif (registry) {\n\t\tif (isValidHaneulObjectId(registry)) {\n\t\t\tregistryId = registry;\n\t\t} else {\n\t\t\tregistryName = registry;\n\t\t}\n\t}\n\n\tconst baseParams = {\n\t\treceiverAddress: receiver,\n\t\tamount: bigIntAmount,\n\t\tcoinType,\n\t\tnonce: nonce,\n\t\tlabel: params.get('label') ?? undefined,\n\t\tmessage: params.get('message') ?? undefined,\n\t\ticonUrl: params.get('icon') ?? undefined,\n\t};\n\n\tif (registryId) {\n\t\treturn { ...baseParams, registryId };\n\t}\n\n\treturn { ...baseParams, registryName };\n};\n"],
5
+ "mappings": "AAGA,SAAS,kBAAkB,sBAAsB,6BAA6B;AAE9E,SAAS,0BAA0B;AACnC,SAAS,gCAAgC;AAEzC,MAAM,eAAe,CAAC,UAAkB;AACvC,SAAO,MAAM,UAAU;AACxB;AAEA,MAAM,gBAAgB,CAAC,WAAmB;AACzC,SAAO,SAAS;AACjB;AAEA,MAAM,kBAAkB,CAAC,aAAqB;AAC7C,SAAO,iBAAiB,QAAQ;AACjC;AAiBO,MAAM,8BAA8B,CAAC,WAAqC;AAChF,QAAM,EAAE,iBAAiB,QAAQ,UAAU,OAAO,YAAY,aAAa,IAAI;AAE/E,QAAM,MAAM,IAAI,IAAI,wBAAwB;AAE5C,MAAI,qBAAqB,eAAe,GAAG;AAC1C,QAAI,aAAa,OAAO,YAAY,eAAe;AAAA,EACpD,OAAO;AACN,UAAM,IAAI,mBAAmB,wBAAwB;AAAA,EACtD;AAEA,MAAI,cAAc,MAAM,GAAG;AAC1B,QAAI,aAAa,OAAO,UAAU,OAAO,SAAS,CAAC;AAAA,EACpD,OAAO;AACN,UAAM,IAAI,mBAAmB,0CAA0C;AAAA,EACxE;AAEA,MAAI,gBAAgB,QAAQ,GAAG;AAC9B,QAAI,aAAa,OAAO,YAAY,QAAQ;AAAA,EAC7C,OAAO;AACN,UAAM,IAAI,mBAAmB,mBAAmB;AAAA,EACjD;AAEA,MAAI,aAAa,KAAK,GAAG;AACxB,QAAI,aAAa,OAAO,SAAS,KAAK;AAAA,EACvC,OAAO;AACN,UAAM,IAAI,mBAAmB,+CAA+C;AAAA,EAC7E;AAEA,MAAI,YAAY;AACf,QAAI,sBAAsB,UAAU,GAAG;AACtC,UAAI,aAAa,OAAO,YAAY,UAAU;AAAA,IAC/C,OAAO;AACN,YAAM,IAAI,mBAAmB,0CAA0C;AAAA,IACxE;AAAA,EACD;AAEA,MAAI,cAAc;AACjB,QAAI,aAAa,OAAO,YAAY,YAAY;AAAA,EACjD;AAEA,MAAI,OAAO,OAAO;AACjB,QAAI,aAAa,OAAO,SAAS,OAAO,KAAK;AAAA,EAC9C;AAEA,MAAI,OAAO,SAAS;AACnB,QAAI,aAAa,OAAO,WAAW,OAAO,OAAO;AAAA,EAClD;AAEA,MAAI,OAAO,SAAS;AACnB,QAAI,aAAa,OAAO,WAAW,OAAO,OAAO;AAAA,EAClD;AAEA,SAAO,IAAI,SAAS;AACrB;AAWO,MAAM,6BAA6B,CAAC,QAAkC;AAC5E,MAAI,CAAC,IAAI,WAAW,2BAA2B,GAAG,GAAG;AACpD,UAAM,IAAI,mBAAmB,uCAAuC;AAAA,EACrE;AAEA,QAAM,MAAM,IAAI,IAAI,GAAG;AAGvB,QAAM,SAAS,IAAI;AACnB,QAAM,WAAW,OAAO,IAAI,UAAU;AACtC,QAAM,SAAS,OAAO,IAAI,QAAQ;AAClC,QAAM,WAAW,OAAO,IAAI,UAAU;AACtC,QAAM,QAAQ,OAAO,IAAI,OAAO;AAGhC,MAAI,CAAC,YAAY,CAAC,UAAU,CAAC,YAAY,CAAC,OAAO;AAChD,UAAM,IAAI,mBAAmB,0CAA0C;AAAA,EACxE;AAGA,MAAI,CAAC,qBAAqB,QAAQ,GAAG;AACpC,UAAM,IAAI,mBAAmB,4CAA4C;AAAA,EAC1E;AAEA,MAAI,CAAC,gBAAgB,QAAQ,GAAG;AAC/B,UAAM,IAAI,mBAAmB,qCAAqC;AAAA,EACnE;AAEA,MAAI,CAAC,aAAa,KAAK,GAAG;AACzB,UAAM,IAAI,mBAAmB,4DAA4D;AAAA,EAC1F;AAGA,QAAM,eAAe,OAAO,MAAM;AAClC,MAAI,CAAC,cAAc,YAAY,GAAG;AACjC,UAAM,IAAI,mBAAmB,+CAA+C;AAAA,EAC7E;AAGA,QAAM,WAAW,OAAO,IAAI,UAAU,KAAK;AAG3C,MAAI;AACJ,MAAI;AAEJ,MAAI,UAAU;AACb,QAAI,sBAAsB,QAAQ,GAAG;AACpC,mBAAa;AAAA,IACd,OAAO;AACN,qBAAe;AAAA,IAChB;AAAA,EACD;AAEA,QAAM,aAAa;AAAA,IAClB,iBAAiB;AAAA,IACjB,QAAQ;AAAA,IACR;AAAA,IACA;AAAA,IACA,OAAO,OAAO,IAAI,OAAO,KAAK;AAAA,IAC9B,SAAS,OAAO,IAAI,SAAS,KAAK;AAAA,IAClC,SAAS,OAAO,IAAI,MAAM,KAAK;AAAA,EAChC;AAEA,MAAI,YAAY;AACf,WAAO,EAAE,GAAG,YAAY,WAAW;AAAA,EACpC;AAEA,SAAO,EAAE,GAAG,YAAY,aAAa;AACtC;",
6
+ "names": []
7
+ }
@@ -0,0 +1 @@
1
+ export declare const getRegistryIdFromName: (registryName: string | undefined, namespaceId: string) => string;
@@ -0,0 +1,14 @@
1
+ import { bcs } from "@haneullabs/haneul/bcs";
2
+ import { deriveObjectID } from "@haneullabs/haneul/utils";
3
+ import { DEFAULT_REGISTRY_NAME } from "./constants.js";
4
+ const getRegistryIdFromName = (registryName = DEFAULT_REGISTRY_NAME, namespaceId) => {
5
+ return deriveObjectID(
6
+ namespaceId,
7
+ "0x1::ascii::String",
8
+ bcs.String.serialize(registryName).toBytes()
9
+ );
10
+ };
11
+ export {
12
+ getRegistryIdFromName
13
+ };
14
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/utils.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport { deriveObjectID } from '@haneullabs/haneul/utils';\nimport { DEFAULT_REGISTRY_NAME } from './constants.js';\n\nexport const getRegistryIdFromName = (\n\tregistryName: string = DEFAULT_REGISTRY_NAME,\n\tnamespaceId: string,\n) => {\n\treturn deriveObjectID(\n\t\tnamespaceId,\n\t\t'0x1::ascii::String',\n\t\tbcs.String.serialize(registryName).toBytes(),\n\t);\n};\n"],
5
+ "mappings": "AAGA,SAAS,WAAW;AACpB,SAAS,sBAAsB;AAC/B,SAAS,6BAA6B;AAE/B,MAAM,wBAAwB,CACpC,eAAuB,uBACvB,gBACI;AACJ,SAAO;AAAA,IACN;AAAA,IACA;AAAA,IACA,IAAI,OAAO,UAAU,YAAY,EAAE,QAAQ;AAAA,EAC5C;AACD;",
6
+ "names": []
7
+ }