@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
package/README.md ADDED
@@ -0,0 +1,123 @@
1
+ # `@haneullabs/payment-kit`
2
+
3
+ > ⚠️ **Warning** - This package is in active development. APIs are experimental and subject to
4
+ > breaking changes without notice. We recommend thoroughly testing any implementation before using
5
+ > in production environments.
6
+
7
+ ## Installation
8
+
9
+ ```bash
10
+ npm install --save @haneullabs/payment-kit @haneullabs/haneul
11
+ ```
12
+
13
+ ## Setup
14
+
15
+ In order to use the Payment Kit SDK you will first need to create an instance of HaneulClient from the
16
+ Typescript SDK, and a client instance of the Payment Kit SDK.
17
+
18
+ ```ts
19
+ import { getFullnodeUrl, HaneulClient } from '@haneullabs/haneul/client';
20
+ import { paymentKit } from '@haneullabs/payment-kit';
21
+
22
+ // Create a Haneul client with a Payment Kit extension
23
+ const client = new HaneulClient({
24
+ url: getFullnodeUrl('testnet'),
25
+ network: 'testnet',
26
+ }).$extend(paymentKit());
27
+ ```
28
+
29
+ The Payment Kit SDK already includes all relevant package and object IDs to operate against
30
+ `mainnet` and `testnet`. No other environments are currently supported. By default, all registry
31
+ based payments are routed through a default payment registry, but more on that later.
32
+
33
+ ## SDK Overview
34
+
35
+ The Payment Kit SDK is designed to allow for direct interactions with the
36
+ [sui-payment-kit](https://github.com/GeunhwaJeong/haneul-payment-kit) Move Package. This includes:
37
+
38
+ - Processing payments
39
+ - Creating and managing `PaymentRegistry` instances
40
+ - Claiming `PaymentRecord` storage fees
41
+ - Querying the state of a `PaymentRecord`
42
+ - Constructing relevant Object IDs
43
+
44
+ These operations are exposed via a `PaymentKitClient` which provides relevant APIs so an application
45
+ doesn't need to know how payments are processed, receipts are created and registry configurations
46
+ are stored.
47
+
48
+ ### Payment Processing
49
+
50
+ There are two distinct ways in which payments are processed. Registry based payments and Ephemeral
51
+ payments.
52
+
53
+ #### Registry Processed Payments
54
+
55
+ When using a `PaymentRegistry` to process a payment a registry must always be specified. A registry
56
+ has the ability to specify where funds must be sent and how long a `PaymentRecord` can live before
57
+ being eligible for deletion. In addition to registry configurations, a `PaymentRecord` is always
58
+ created when using a registry to process a payment. A `PaymentRecord` enforces that a payment
59
+ request cannot be fulfilled more than once. The existence of a `PaymentRecord` also guarantees that
60
+ a payment has been made. Once a payment has been fulfilled a `PaymentReceipt` is emitted that can be
61
+ used as you please.
62
+
63
+ #### Ephemeral Payments
64
+
65
+ Unlike Registry processed payments, an ephemeral payment does not leverage a registry and does not
66
+ write a `PaymentRecord`. This means duplicate payments are not implicitly prevented. Although, a
67
+ `PaymentReceipt` is still emitted once completed, similar to registry based payments.
68
+
69
+ ### Payment Registries
70
+
71
+ At the core of Payment Kit is the `PaymentRegistry`. Currently, a registry is used to process
72
+ one-time payments, manage how funds are collected and specify the expiration of a `PaymentRecord`.
73
+ While there is a default registry to leverage, entities are encouraged to create and manage their
74
+ own registries. This enables easier indexing of relevant payments and reduces the potential for
75
+ object congestion. Registries are created via personalized name. This name is then used to derive an
76
+ Object ID. This means registry names must be unique.
77
+
78
+ #### Registry Configuration
79
+
80
+ Configurations are applied to an instance of a `PaymentRegistry`. There are currently two
81
+ configurations offered:
82
+
83
+ 1. Receipt Epoch Expiration: The number of epochs that must elapse before a `PaymentReceipt` is
84
+ eligible to be deleted. Deleting expired receipts is a permissionless operation that anyone can
85
+ perform and will result in a small storage rebate for each deleted record, incentivizing
86
+ automatic cleanup up of registries.
87
+
88
+ 2. Registry Managed Funds: A configuration that specifies if payment funds must be sent to the
89
+ registry itself. If a `PaymentRegistry` has set this configuration, the `receiver` must be the
90
+ registry itself. Funds can later be claimed by the registry admin. An added benefit to this
91
+ configuration is avoiding complicated coin merging, when dealing with high thoroughput payments.
92
+ This is because the destination is always the same coin object when the registry is set as the
93
+ fund manager.
94
+
95
+ ### Payment Records
96
+
97
+ As mentioned above, a `PaymentRecord` is only written when using a registry to process a payment.
98
+ This payment record is used to guarantee a payment has been made. But note records can be deleted
99
+ based on a registries epoch expiration duration (the default expiration is 30 epochs after
100
+ creation).
101
+
102
+ #### Payment Keys
103
+
104
+ A `PaymentRecord` is a Dynamic Field owned by the `PaymentRegistry`. This record is derived via a
105
+ `PaymentKey`. A `PaymentKey` is a hash of request payment. This includes the `nonce`,
106
+ `PaymentAmount`, `CoinType`, and `ReceiverAddress`.
107
+
108
+ ### Payment Receipts
109
+
110
+ When processing an ephemeral, or registry based, payment a `PaymentReceipt` is always emitted and
111
+ returned. This payment receipt can be stored, off-chain, for whateve purpose it may serve to your
112
+ application.
113
+
114
+ ```ts
115
+ type PaymentReceipt = {
116
+ paymentType: PaymentType;
117
+ nonce: string;
118
+ amount: number;
119
+ receiver: string;
120
+ coinType: string;
121
+ timestampMs: number;
122
+ };
123
+ ```
@@ -0,0 +1,71 @@
1
+ import type { CreateRegistryOptions, DeletePaymentRecordOptions, PaymentKitPackageConfig, ProcessEphemeralPaymentOptions, ProcessRegistryPaymentOptions, SetEpochExpirationDurationOptions, SetRegistryManagedFundsOptions, WithdrawFromRegistryOptions } from './types.js';
2
+ export interface PaymentKitCallOptions {
3
+ packageConfig: PaymentKitPackageConfig;
4
+ }
5
+ export declare class PaymentKitCalls {
6
+ #private;
7
+ constructor(options: PaymentKitCallOptions);
8
+ /**
9
+ * Creates a `processRegistryPayment` transaction
10
+ *
11
+ * @example
12
+ * ```ts
13
+ * tx.add(lient.paymentKit.call.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName }));
14
+ * ```
15
+ */
16
+ processRegistryPayment: (options: ProcessRegistryPaymentOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
17
+ /**
18
+ * Creates a `processRegistryPayment` transaction
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * tx.add(client.paymentKit.call.processEphemeralPayment({ nonce, coinType, sender, amount, receiver }));
23
+ * ```
24
+ */
25
+ processEphemeralPayment: (options: ProcessEphemeralPaymentOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
26
+ /**
27
+ * Creates a `createRegistry` transaction
28
+ *
29
+ * @example
30
+ * ```ts
31
+ * tx.add(client.paymentKit.call.createRegistry(registryName));
32
+ * ```
33
+ */
34
+ createRegistry: ({ registryName }: CreateRegistryOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
35
+ /**
36
+ * Creates a `setConfigEpochExpirationDuration` transaction
37
+ *
38
+ * @example
39
+ * ```ts
40
+ * tx.add(client.paymentKit.call.setConfigEpochExpirationDuration({registryName, epochExpirationDuration, adminCapId}));
41
+ * ```
42
+ */
43
+ setConfigEpochExpirationDuration: ({ registryName, registryId, epochExpirationDuration, adminCapId, }: SetEpochExpirationDurationOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
44
+ /**
45
+ * Creates a `setConfigRegistryManagedFunds` transaction
46
+ *
47
+ * @example
48
+ * ```ts
49
+ * tx.add(client.paymentKit.call.setConfigRegistryManagedFunds({registryName, registryManagedFunds, adminCapId}));
50
+ * ```
51
+ */
52
+ setConfigRegistryManagedFunds: ({ registryName, registryId, registryManagedFunds, adminCapId, }: SetRegistryManagedFundsOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
53
+ /**
54
+ * Creates a `withdrawFromRegistry` transaction
55
+ *
56
+ * @example
57
+ * ```ts
58
+ * tx.add(client.paymentKit.call.withdrawFromRegistry({coinType, registryName, adminCapId}));
59
+ * ```
60
+ */
61
+ withdrawFromRegistry: ({ coinType, registryName, registryId, adminCapId, }: WithdrawFromRegistryOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
62
+ /**
63
+ * Creates a `deletePaymentRecord` transaction
64
+ *
65
+ * @example
66
+ * ```ts
67
+ * tx.add(client.paymentKit.call.deletePaymentRecord({coinType, nonce, amount, receiver, registryName}));
68
+ * ```
69
+ */
70
+ deletePaymentRecord: ({ coinType, nonce, amount, receiver, registryName, registryId, }: DeletePaymentRecordOptions) => (tx: import("@haneullabs/haneul/transactions").Transaction) => import("@haneullabs/haneul/transactions").TransactionResult;
71
+ }
@@ -0,0 +1,207 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
+ 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);
25
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
26
+ var calls_exports = {};
27
+ __export(calls_exports, {
28
+ PaymentKitCalls: () => PaymentKitCalls
29
+ });
30
+ module.exports = __toCommonJS(calls_exports);
31
+ var import_transactions = require("@haneullabs/haneul/transactions");
32
+ var import_payment_kit = require("./contracts/payment_kit/payment_kit.js");
33
+ var import_utils = require("./utils.js");
34
+ var _packageConfig;
35
+ class PaymentKitCalls {
36
+ constructor(options) {
37
+ __privateAdd(this, _packageConfig);
38
+ /**
39
+ * Creates a `processRegistryPayment` transaction
40
+ *
41
+ * @example
42
+ * ```ts
43
+ * tx.add(lient.paymentKit.call.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName }));
44
+ * ```
45
+ */
46
+ this.processRegistryPayment = (options) => {
47
+ const { nonce, coinType, amount, receiver, sourceCoin, registryName, registryId } = options;
48
+ const registryIdToUse = registryId ?? (0, import_utils.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
49
+ return (0, import_payment_kit.processRegistryPayment)({
50
+ arguments: {
51
+ registry: registryIdToUse,
52
+ nonce,
53
+ paymentAmount: amount,
54
+ coin: sourceCoin ?? (0, import_transactions.coinWithBalance)({
55
+ type: coinType,
56
+ balance: amount
57
+ }),
58
+ receiver
59
+ },
60
+ typeArguments: [coinType]
61
+ });
62
+ };
63
+ /**
64
+ * Creates a `processRegistryPayment` transaction
65
+ *
66
+ * @example
67
+ * ```ts
68
+ * tx.add(client.paymentKit.call.processEphemeralPayment({ nonce, coinType, sender, amount, receiver }));
69
+ * ```
70
+ */
71
+ this.processEphemeralPayment = (options) => {
72
+ const { nonce, coinType, amount, receiver, sourceCoin } = options;
73
+ return (0, import_payment_kit.processEphemeralPayment)({
74
+ arguments: {
75
+ nonce,
76
+ paymentAmount: amount,
77
+ coin: sourceCoin ?? (0, import_transactions.coinWithBalance)({
78
+ type: coinType,
79
+ balance: amount
80
+ }),
81
+ receiver
82
+ },
83
+ typeArguments: [coinType]
84
+ });
85
+ };
86
+ /**
87
+ * Creates a `createRegistry` transaction
88
+ *
89
+ * @example
90
+ * ```ts
91
+ * tx.add(client.paymentKit.call.createRegistry(registryName));
92
+ * ```
93
+ */
94
+ this.createRegistry = ({ registryName }) => {
95
+ return (0, import_payment_kit.createRegistry)({
96
+ arguments: {
97
+ namespace: __privateGet(this, _packageConfig).namespaceId,
98
+ name: registryName
99
+ }
100
+ });
101
+ };
102
+ /**
103
+ * Creates a `setConfigEpochExpirationDuration` transaction
104
+ *
105
+ * @example
106
+ * ```ts
107
+ * tx.add(client.paymentKit.call.setConfigEpochExpirationDuration({registryName, epochExpirationDuration, adminCapId}));
108
+ * ```
109
+ */
110
+ this.setConfigEpochExpirationDuration = ({
111
+ registryName,
112
+ registryId,
113
+ epochExpirationDuration,
114
+ adminCapId
115
+ }) => {
116
+ const registryIdToUse = registryId ?? (0, import_utils.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
117
+ return (0, import_payment_kit.setConfigEpochExpirationDuration)({
118
+ arguments: {
119
+ registry: registryIdToUse,
120
+ epochExpirationDuration,
121
+ cap: adminCapId
122
+ }
123
+ });
124
+ };
125
+ /**
126
+ * Creates a `setConfigRegistryManagedFunds` transaction
127
+ *
128
+ * @example
129
+ * ```ts
130
+ * tx.add(client.paymentKit.call.setConfigRegistryManagedFunds({registryName, registryManagedFunds, adminCapId}));
131
+ * ```
132
+ */
133
+ this.setConfigRegistryManagedFunds = ({
134
+ registryName,
135
+ registryId,
136
+ registryManagedFunds,
137
+ adminCapId
138
+ }) => {
139
+ const registryIdToUse = registryId ?? (0, import_utils.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
140
+ return (0, import_payment_kit.setConfigRegistryManagedFunds)({
141
+ arguments: {
142
+ registry: registryIdToUse,
143
+ registryManagedFunds,
144
+ cap: adminCapId
145
+ }
146
+ });
147
+ };
148
+ /**
149
+ * Creates a `withdrawFromRegistry` transaction
150
+ *
151
+ * @example
152
+ * ```ts
153
+ * tx.add(client.paymentKit.call.withdrawFromRegistry({coinType, registryName, adminCapId}));
154
+ * ```
155
+ */
156
+ this.withdrawFromRegistry = ({
157
+ coinType,
158
+ registryName,
159
+ registryId,
160
+ adminCapId
161
+ }) => {
162
+ const registryIdToUse = registryId ?? (0, import_utils.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
163
+ return (0, import_payment_kit.withdrawFromRegistry)({
164
+ arguments: {
165
+ registry: registryIdToUse,
166
+ cap: adminCapId
167
+ },
168
+ typeArguments: [coinType]
169
+ });
170
+ };
171
+ /**
172
+ * Creates a `deletePaymentRecord` transaction
173
+ *
174
+ * @example
175
+ * ```ts
176
+ * tx.add(client.paymentKit.call.deletePaymentRecord({coinType, nonce, amount, receiver, registryName}));
177
+ * ```
178
+ */
179
+ this.deletePaymentRecord = ({
180
+ coinType,
181
+ nonce,
182
+ amount,
183
+ receiver,
184
+ registryName,
185
+ registryId
186
+ }) => {
187
+ const registryIdToUse = registryId ?? (0, import_utils.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
188
+ return (0, import_payment_kit.deletePaymentRecord)({
189
+ arguments: {
190
+ registry: registryIdToUse,
191
+ paymentKey: (0, import_payment_kit.createPaymentKey)({
192
+ arguments: {
193
+ nonce,
194
+ paymentAmount: amount,
195
+ receiver
196
+ },
197
+ typeArguments: [coinType]
198
+ })
199
+ },
200
+ typeArguments: [coinType]
201
+ });
202
+ };
203
+ __privateSet(this, _packageConfig, options.packageConfig);
204
+ }
205
+ }
206
+ _packageConfig = new WeakMap();
207
+ //# sourceMappingURL=calls.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/calls.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { coinWithBalance } from '@haneullabs/haneul/transactions';\nimport type {\n\tCreateRegistryOptions,\n\tDeletePaymentRecordOptions,\n\tPaymentKitPackageConfig,\n\tProcessEphemeralPaymentOptions,\n\tProcessRegistryPaymentOptions,\n\tSetEpochExpirationDurationOptions,\n\tSetRegistryManagedFundsOptions,\n\tWithdrawFromRegistryOptions,\n} from './types.js';\nimport {\n\tcreatePaymentKey,\n\tcreateRegistry,\n\tdeletePaymentRecord,\n\tprocessEphemeralPayment,\n\tprocessRegistryPayment,\n\tsetConfigEpochExpirationDuration,\n\tsetConfigRegistryManagedFunds,\n\twithdrawFromRegistry,\n} from './contracts/payment_kit/payment_kit.js';\nimport { getRegistryIdFromName } from './utils.js';\n\nexport interface PaymentKitCallOptions {\n\tpackageConfig: PaymentKitPackageConfig;\n}\n\nexport class PaymentKitCalls {\n\t#packageConfig: PaymentKitPackageConfig;\n\n\tconstructor(options: PaymentKitCallOptions) {\n\t\tthis.#packageConfig = options.packageConfig;\n\t}\n\n\t/**\n\t * Creates a `processRegistryPayment` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(lient.paymentKit.call.processRegistryPayment({ nonce, coinType, sender, amount, receiver, registryName }));\n\t * ```\n\t */\n\tprocessRegistryPayment = (options: ProcessRegistryPaymentOptions) => {\n\t\tconst { nonce, coinType, amount, receiver, sourceCoin, registryName, registryId } = options;\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\n\t\treturn processRegistryPayment({\n\t\t\targuments: {\n\t\t\t\tregistry: registryIdToUse,\n\t\t\t\tnonce,\n\t\t\t\tpaymentAmount: amount,\n\t\t\t\tcoin:\n\t\t\t\t\tsourceCoin ??\n\t\t\t\t\tcoinWithBalance({\n\t\t\t\t\t\ttype: coinType,\n\t\t\t\t\t\tbalance: amount,\n\t\t\t\t\t}),\n\t\t\t\treceiver,\n\t\t\t},\n\t\t\ttypeArguments: [coinType],\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `processRegistryPayment` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.processEphemeralPayment({ nonce, coinType, sender, amount, receiver }));\n\t * ```\n\t */\n\tprocessEphemeralPayment = (options: ProcessEphemeralPaymentOptions) => {\n\t\tconst { nonce, coinType, amount, receiver, sourceCoin } = options;\n\n\t\treturn processEphemeralPayment({\n\t\t\targuments: {\n\t\t\t\tnonce: nonce,\n\t\t\t\tpaymentAmount: amount,\n\t\t\t\tcoin:\n\t\t\t\t\tsourceCoin ??\n\t\t\t\t\tcoinWithBalance({\n\t\t\t\t\t\ttype: coinType,\n\t\t\t\t\t\tbalance: amount,\n\t\t\t\t\t}),\n\t\t\t\treceiver,\n\t\t\t},\n\t\t\ttypeArguments: [coinType],\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `createRegistry` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.createRegistry(registryName));\n\t * ```\n\t */\n\tcreateRegistry = ({ registryName }: CreateRegistryOptions) => {\n\t\treturn createRegistry({\n\t\t\targuments: {\n\t\t\t\tnamespace: this.#packageConfig.namespaceId,\n\t\t\t\tname: registryName,\n\t\t\t},\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `setConfigEpochExpirationDuration` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.setConfigEpochExpirationDuration({registryName, epochExpirationDuration, adminCapId}));\n\t * ```\n\t */\n\tsetConfigEpochExpirationDuration = ({\n\t\tregistryName,\n\t\tregistryId,\n\t\tepochExpirationDuration,\n\t\tadminCapId,\n\t}: SetEpochExpirationDurationOptions) => {\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\n\t\treturn setConfigEpochExpirationDuration({\n\t\t\targuments: {\n\t\t\t\tregistry: registryIdToUse,\n\t\t\t\tepochExpirationDuration,\n\t\t\t\tcap: adminCapId,\n\t\t\t},\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `setConfigRegistryManagedFunds` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.setConfigRegistryManagedFunds({registryName, registryManagedFunds, adminCapId}));\n\t * ```\n\t */\n\tsetConfigRegistryManagedFunds = ({\n\t\tregistryName,\n\t\tregistryId,\n\t\tregistryManagedFunds,\n\t\tadminCapId,\n\t}: SetRegistryManagedFundsOptions) => {\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\n\t\treturn setConfigRegistryManagedFunds({\n\t\t\targuments: {\n\t\t\t\tregistry: registryIdToUse,\n\t\t\t\tregistryManagedFunds,\n\t\t\t\tcap: adminCapId,\n\t\t\t},\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `withdrawFromRegistry` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.withdrawFromRegistry({coinType, registryName, adminCapId}));\n\t * ```\n\t */\n\twithdrawFromRegistry = ({\n\t\tcoinType,\n\t\tregistryName,\n\t\tregistryId,\n\t\tadminCapId,\n\t}: WithdrawFromRegistryOptions) => {\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\n\t\treturn withdrawFromRegistry({\n\t\t\targuments: {\n\t\t\t\tregistry: registryIdToUse,\n\t\t\t\tcap: adminCapId,\n\t\t\t},\n\t\t\ttypeArguments: [coinType],\n\t\t});\n\t};\n\n\t/**\n\t * Creates a `deletePaymentRecord` transaction\n\t *\n\t * @example\n\t * ```ts\n\t * tx.add(client.paymentKit.call.deletePaymentRecord({coinType, nonce, amount, receiver, registryName}));\n\t * ```\n\t */\n\tdeletePaymentRecord = ({\n\t\tcoinType,\n\t\tnonce,\n\t\tamount,\n\t\treceiver,\n\t\tregistryName,\n\t\tregistryId,\n\t}: DeletePaymentRecordOptions) => {\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\n\t\treturn deletePaymentRecord({\n\t\t\targuments: {\n\t\t\t\tregistry: registryIdToUse,\n\t\t\t\tpaymentKey: createPaymentKey({\n\t\t\t\t\targuments: {\n\t\t\t\t\t\tnonce,\n\t\t\t\t\t\tpaymentAmount: amount,\n\t\t\t\t\t\treceiver,\n\t\t\t\t\t},\n\t\t\t\t\ttypeArguments: [coinType],\n\t\t\t\t}),\n\t\t\t},\n\t\t\ttypeArguments: [coinType],\n\t\t});\n\t};\n}\n"],
5
+ "mappings": "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",
6
+ "names": []
7
+ }
@@ -0,0 +1,36 @@
1
+ import type { PaymentKitClientOptions, GetPaymentRecordOptions, GetPaymentRecordResponse } from './types.js';
2
+ import type { ClientWithCoreApi } from '@haneullabs/haneul/experimental';
3
+ import { PaymentKitTransactions } from './transactions.js';
4
+ import { PaymentKitCalls } from './calls.js';
5
+ export declare function paymentKit<const Name = 'paymentKit'>({ name }?: {
6
+ name?: Name | undefined;
7
+ }): {
8
+ name: Name;
9
+ register: (client: ClientWithCoreApi) => PaymentKitClient;
10
+ };
11
+ export declare class PaymentKitClient {
12
+ #private;
13
+ calls: PaymentKitCalls;
14
+ tx: PaymentKitTransactions;
15
+ constructor(options: PaymentKitClientOptions);
16
+ /**
17
+ * Query for a payment record in a registry.
18
+ * Returns the payment record data if it exists, null otherwise.
19
+ *
20
+ * @example
21
+ * ```ts
22
+ * const paymentRecord = await client.getPaymentRecord({ registry, nonce, amount, receiver, coinType });
23
+ * ```
24
+ */
25
+ getPaymentRecord(options: GetPaymentRecordOptions): Promise<GetPaymentRecordResponse | null>;
26
+ /**
27
+ * Get the registry object id from a registry name.
28
+ * Returns the derived registry id.
29
+ *
30
+ * @example
31
+ * ```ts
32
+ * const registryId = await client.getRegistryIdFromName("my-registry");
33
+ * ```
34
+ */
35
+ getRegistryIdFromName(registryName: string): string;
36
+ }
@@ -0,0 +1,123 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __typeError = (msg) => {
7
+ throw TypeError(msg);
8
+ };
9
+ var __export = (target, all) => {
10
+ for (var name in all)
11
+ __defProp(target, name, { get: all[name], enumerable: true });
12
+ };
13
+ var __copyProps = (to, from, except, desc) => {
14
+ if (from && typeof from === "object" || typeof from === "function") {
15
+ for (let key of __getOwnPropNames(from))
16
+ if (!__hasOwnProp.call(to, key) && key !== except)
17
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
18
+ }
19
+ return to;
20
+ };
21
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
22
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
23
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
24
+ 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);
25
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
26
+ var client_exports = {};
27
+ __export(client_exports, {
28
+ PaymentKitClient: () => PaymentKitClient,
29
+ paymentKit: () => paymentKit
30
+ });
31
+ module.exports = __toCommonJS(client_exports);
32
+ var import_error = require("./error.js");
33
+ var import_constants = require("./constants.js");
34
+ var import_payment_kit = require("./contracts/payment_kit/payment_kit.js");
35
+ var import_utils = require("@haneullabs/haneul/utils");
36
+ var import_transactions = require("./transactions.js");
37
+ var import_calls = require("./calls.js");
38
+ var import_utils2 = require("./utils.js");
39
+ var _packageConfig, _client;
40
+ function paymentKit({ name = "paymentKit" } = {}) {
41
+ return {
42
+ name,
43
+ register: (client) => {
44
+ return new PaymentKitClient({ client });
45
+ }
46
+ };
47
+ }
48
+ class PaymentKitClient {
49
+ constructor(options) {
50
+ __privateAdd(this, _packageConfig);
51
+ __privateAdd(this, _client);
52
+ if (options.client) {
53
+ __privateSet(this, _client, options.client);
54
+ } else {
55
+ throw new import_error.PaymentKitClientError("haneulClient must be provided");
56
+ }
57
+ const network = options.client.network;
58
+ switch (network) {
59
+ case "testnet":
60
+ __privateSet(this, _packageConfig, import_constants.TESTNET_PAYMENT_KIT_PACKAGE_CONFIG);
61
+ break;
62
+ case "mainnet":
63
+ __privateSet(this, _packageConfig, import_constants.MAINNET_PAYMENT_KIT_PACKAGE_CONFIG);
64
+ break;
65
+ default:
66
+ throw new import_error.PaymentKitClientError(`Unsupported network: ${network}`);
67
+ }
68
+ this.calls = new import_calls.PaymentKitCalls({ packageConfig: __privateGet(this, _packageConfig) });
69
+ this.tx = new import_transactions.PaymentKitTransactions({
70
+ calls: this.calls
71
+ });
72
+ }
73
+ /**
74
+ * Query for a payment record in a registry.
75
+ * Returns the payment record data if it exists, null otherwise.
76
+ *
77
+ * @example
78
+ * ```ts
79
+ * const paymentRecord = await client.getPaymentRecord({ registry, nonce, amount, receiver, coinType });
80
+ * ```
81
+ */
82
+ async getPaymentRecord(options) {
83
+ const { coinType, registryId, registryName, nonce, amount, receiver } = options;
84
+ const normalizedCoinType = (0, import_utils.normalizeStructTag)(coinType);
85
+ const paymentKeyType = `${import_payment_kit.PaymentKey.name}<${normalizedCoinType}>`;
86
+ const registryIdToUse = registryId ?? (0, import_utils2.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
87
+ const result = await __privateGet(this, _client).core.getDynamicField({
88
+ parentId: registryIdToUse,
89
+ name: {
90
+ type: paymentKeyType,
91
+ bcs: import_payment_kit.PaymentKey.serialize({
92
+ nonce,
93
+ payment_amount: amount,
94
+ receiver
95
+ }).toBytes()
96
+ }
97
+ });
98
+ if (!result?.dynamicField) {
99
+ return null;
100
+ }
101
+ const decoded = import_payment_kit.PaymentRecord.parse(result.dynamicField.value.bcs);
102
+ return {
103
+ key: result.dynamicField.id,
104
+ paymentTransactionDigest: result.dynamicField.previousTransaction,
105
+ epochAtTimeOfRecord: decoded.epoch_at_time_of_record
106
+ };
107
+ }
108
+ /**
109
+ * Get the registry object id from a registry name.
110
+ * Returns the derived registry id.
111
+ *
112
+ * @example
113
+ * ```ts
114
+ * const registryId = await client.getRegistryIdFromName("my-registry");
115
+ * ```
116
+ */
117
+ getRegistryIdFromName(registryName) {
118
+ return (0, import_utils2.getRegistryIdFromName)(registryName, __privateGet(this, _packageConfig).namespaceId);
119
+ }
120
+ }
121
+ _packageConfig = new WeakMap();
122
+ _client = new WeakMap();
123
+ //# sourceMappingURL=client.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/client.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { PaymentKitClientError } from './error.js';\nimport {\n\tMAINNET_PAYMENT_KIT_PACKAGE_CONFIG,\n\tTESTNET_PAYMENT_KIT_PACKAGE_CONFIG,\n} from './constants.js';\nimport { PaymentKey, PaymentRecord } from './contracts/payment_kit/payment_kit.js';\nimport type {\n\tPaymentKitCompatibleClient,\n\tPaymentKitPackageConfig,\n\tPaymentKitClientOptions,\n\tGetPaymentRecordOptions,\n\tGetPaymentRecordResponse,\n} from './types.js';\nimport type { ClientWithCoreApi } from '@haneullabs/haneul/experimental';\nimport { normalizeStructTag } from '@haneullabs/haneul/utils';\nimport { PaymentKitTransactions } from './transactions.js';\nimport { PaymentKitCalls } from './calls.js';\nimport { getRegistryIdFromName } from './utils.js';\n\nexport function paymentKit<const Name = 'paymentKit'>({ name = 'paymentKit' as Name } = {}) {\n\treturn {\n\t\tname,\n\t\tregister: (client: ClientWithCoreApi) => {\n\t\t\treturn new PaymentKitClient({ client });\n\t\t},\n\t};\n}\n\nexport class PaymentKitClient {\n\t#packageConfig: PaymentKitPackageConfig;\n\t#client: PaymentKitCompatibleClient;\n\n\tcalls: PaymentKitCalls;\n\ttx: PaymentKitTransactions;\n\n\tconstructor(options: PaymentKitClientOptions) {\n\t\tif (options.client) {\n\t\t\tthis.#client = options.client;\n\t\t} else {\n\t\t\tthrow new PaymentKitClientError('haneulClient must be provided');\n\t\t}\n\n\t\tconst network = options.client.network;\n\t\tswitch (network) {\n\t\t\tcase 'testnet':\n\t\t\t\tthis.#packageConfig = TESTNET_PAYMENT_KIT_PACKAGE_CONFIG;\n\t\t\t\tbreak;\n\t\t\tcase 'mainnet':\n\t\t\t\tthis.#packageConfig = MAINNET_PAYMENT_KIT_PACKAGE_CONFIG;\n\t\t\t\tbreak;\n\t\t\tdefault:\n\t\t\t\tthrow new PaymentKitClientError(`Unsupported network: ${network}`);\n\t\t}\n\n\t\tthis.calls = new PaymentKitCalls({ packageConfig: this.#packageConfig });\n\t\tthis.tx = new PaymentKitTransactions({\n\t\t\tcalls: this.calls,\n\t\t});\n\t}\n\n\t/**\n\t * Query for a payment record in a registry.\n\t * Returns the payment record data if it exists, null otherwise.\n\t *\n\t * @example\n\t * ```ts\n\t * const paymentRecord = await client.getPaymentRecord({ registry, nonce, amount, receiver, coinType });\n\t * ```\n\t */\n\tasync getPaymentRecord(\n\t\toptions: GetPaymentRecordOptions,\n\t): Promise<GetPaymentRecordResponse | null> {\n\t\tconst { coinType, registryId, registryName, nonce, amount, receiver } = options;\n\t\tconst normalizedCoinType = normalizeStructTag(coinType);\n\t\tconst paymentKeyType = `${PaymentKey.name}<${normalizedCoinType}>`;\n\n\t\tconst registryIdToUse =\n\t\t\tregistryId ?? getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\t\tconst result = await this.#client.core.getDynamicField({\n\t\t\tparentId: registryIdToUse,\n\t\t\tname: {\n\t\t\t\ttype: paymentKeyType,\n\t\t\t\tbcs: PaymentKey.serialize({\n\t\t\t\t\tnonce,\n\t\t\t\t\tpayment_amount: amount,\n\t\t\t\t\treceiver,\n\t\t\t\t}).toBytes(),\n\t\t\t},\n\t\t});\n\n\t\tif (!result?.dynamicField) {\n\t\t\treturn null;\n\t\t}\n\n\t\tconst decoded = PaymentRecord.parse(result.dynamicField.value.bcs);\n\n\t\treturn {\n\t\t\tkey: result.dynamicField.id,\n\t\t\tpaymentTransactionDigest: result.dynamicField.previousTransaction,\n\t\t\tepochAtTimeOfRecord: decoded.epoch_at_time_of_record,\n\t\t};\n\t}\n\n\t/**\n\t * Get the registry object id from a registry name.\n\t * Returns the derived registry id.\n\t *\n\t * @example\n\t * ```ts\n\t * const registryId = await client.getRegistryIdFromName(\"my-registry\");\n\t * ```\n\t */\n\tgetRegistryIdFromName(registryName: string): string {\n\t\treturn getRegistryIdFromName(registryName, this.#packageConfig.namespaceId);\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,mBAAsC;AACtC,uBAGO;AACP,yBAA0C;AAS1C,mBAAmC;AACnC,0BAAuC;AACvC,mBAAgC;AAChC,IAAAA,gBAAsC;AApBtC;AAsBO,SAAS,WAAsC,EAAE,OAAO,aAAqB,IAAI,CAAC,GAAG;AAC3F,SAAO;AAAA,IACN;AAAA,IACA,UAAU,CAAC,WAA8B;AACxC,aAAO,IAAI,iBAAiB,EAAE,OAAO,CAAC;AAAA,IACvC;AAAA,EACD;AACD;AAEO,MAAM,iBAAiB;AAAA,EAO7B,YAAY,SAAkC;AAN9C;AACA;AAMC,QAAI,QAAQ,QAAQ;AACnB,yBAAK,SAAU,QAAQ;AAAA,IACxB,OAAO;AACN,YAAM,IAAI,mCAAsB,+BAA+B;AAAA,IAChE;AAEA,UAAM,UAAU,QAAQ,OAAO;AAC/B,YAAQ,SAAS;AAAA,MAChB,KAAK;AACJ,2BAAK,gBAAiB;AACtB;AAAA,MACD,KAAK;AACJ,2BAAK,gBAAiB;AACtB;AAAA,MACD;AACC,cAAM,IAAI,mCAAsB,wBAAwB,OAAO,EAAE;AAAA,IACnE;AAEA,SAAK,QAAQ,IAAI,6BAAgB,EAAE,eAAe,mBAAK,gBAAe,CAAC;AACvE,SAAK,KAAK,IAAI,2CAAuB;AAAA,MACpC,OAAO,KAAK;AAAA,IACb,CAAC;AAAA,EACF;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,MAAM,iBACL,SAC2C;AAC3C,UAAM,EAAE,UAAU,YAAY,cAAc,OAAO,QAAQ,SAAS,IAAI;AACxE,UAAM,yBAAqB,iCAAmB,QAAQ;AACtD,UAAM,iBAAiB,GAAG,8BAAW,IAAI,IAAI,kBAAkB;AAE/D,UAAM,kBACL,kBAAc,qCAAsB,cAAc,mBAAK,gBAAe,WAAW;AAClF,UAAM,SAAS,MAAM,mBAAK,SAAQ,KAAK,gBAAgB;AAAA,MACtD,UAAU;AAAA,MACV,MAAM;AAAA,QACL,MAAM;AAAA,QACN,KAAK,8BAAW,UAAU;AAAA,UACzB;AAAA,UACA,gBAAgB;AAAA,UAChB;AAAA,QACD,CAAC,EAAE,QAAQ;AAAA,MACZ;AAAA,IACD,CAAC;AAED,QAAI,CAAC,QAAQ,cAAc;AAC1B,aAAO;AAAA,IACR;AAEA,UAAM,UAAU,iCAAc,MAAM,OAAO,aAAa,MAAM,GAAG;AAEjE,WAAO;AAAA,MACN,KAAK,OAAO,aAAa;AAAA,MACzB,0BAA0B,OAAO,aAAa;AAAA,MAC9C,qBAAqB,QAAQ;AAAA,IAC9B;AAAA,EACD;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA,EAWA,sBAAsB,cAA8B;AACnD,eAAO,qCAAsB,cAAc,mBAAK,gBAAe,WAAW;AAAA,EAC3E;AACD;AAtFC;AACA;",
6
+ "names": ["import_utils"]
7
+ }
@@ -0,0 +1,11 @@
1
+ export declare const TESTNET_PAYMENT_KIT_PACKAGE_CONFIG: {
2
+ packageId: string;
3
+ namespaceId: string;
4
+ };
5
+ export declare const MAINNET_PAYMENT_KIT_PACKAGE_CONFIG: {
6
+ packageId: string;
7
+ namespaceId: string;
8
+ };
9
+ export declare const HANEUL_COIN_TYPE: string;
10
+ export declare const DEFAULT_REGISTRY_NAME = "default-payment-registry";
11
+ export declare const SUI_PAYMENT_KIT_PROTOCOL = "sui:pay";
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var constants_exports = {};
20
+ __export(constants_exports, {
21
+ DEFAULT_REGISTRY_NAME: () => DEFAULT_REGISTRY_NAME,
22
+ HANEUL_COIN_TYPE: () => HANEUL_COIN_TYPE,
23
+ MAINNET_PAYMENT_KIT_PACKAGE_CONFIG: () => MAINNET_PAYMENT_KIT_PACKAGE_CONFIG,
24
+ SUI_PAYMENT_KIT_PROTOCOL: () => SUI_PAYMENT_KIT_PROTOCOL,
25
+ TESTNET_PAYMENT_KIT_PACKAGE_CONFIG: () => TESTNET_PAYMENT_KIT_PACKAGE_CONFIG
26
+ });
27
+ module.exports = __toCommonJS(constants_exports);
28
+ var import_utils = require("@haneullabs/haneul/utils");
29
+ const TESTNET_PAYMENT_KIT_PACKAGE_CONFIG = {
30
+ packageId: "0x7e069abe383e80d32f2aec17b3793da82aabc8c2edf84abbf68dd7b719e71497",
31
+ namespaceId: "0xa5016862fdccba7cc576b56cc5a391eda6775200aaa03a6b3c97d512312878db"
32
+ };
33
+ const MAINNET_PAYMENT_KIT_PACKAGE_CONFIG = {
34
+ packageId: "0xbc126f1535fba7d641cb9150ad9eae93b104972586ba20f3c60bfe0e53b69bc6",
35
+ namespaceId: "0xccd3e4c7802921991cd9ce488c4ca0b51334ba75483702744242284ccf3ae7c2"
36
+ };
37
+ const HANEUL_COIN_TYPE = (0, import_utils.normalizeStructTag)(import_utils.HANEUL_TYPE_ARG);
38
+ const DEFAULT_REGISTRY_NAME = "default-payment-registry";
39
+ const SUI_PAYMENT_KIT_PROTOCOL = "sui:pay";
40
+ //# sourceMappingURL=constants.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../src/constants.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { PaymentKitPackageConfig } from './types.js';\nimport { HANEUL_TYPE_ARG, normalizeStructTag } from '@haneullabs/haneul/utils';\n\nexport const TESTNET_PAYMENT_KIT_PACKAGE_CONFIG = {\n\tpackageId: '0x7e069abe383e80d32f2aec17b3793da82aabc8c2edf84abbf68dd7b719e71497',\n\tnamespaceId: '0xa5016862fdccba7cc576b56cc5a391eda6775200aaa03a6b3c97d512312878db',\n} satisfies PaymentKitPackageConfig;\n\nexport const MAINNET_PAYMENT_KIT_PACKAGE_CONFIG = {\n\tpackageId: '0xbc126f1535fba7d641cb9150ad9eae93b104972586ba20f3c60bfe0e53b69bc6',\n\tnamespaceId: '0xccd3e4c7802921991cd9ce488c4ca0b51334ba75483702744242284ccf3ae7c2',\n} satisfies PaymentKitPackageConfig;\n\nexport const HANEUL_COIN_TYPE = normalizeStructTag(HANEUL_TYPE_ARG);\nexport const DEFAULT_REGISTRY_NAME = 'default-payment-registry';\n\nexport const SUI_PAYMENT_KIT_PROTOCOL = 'sui:pay';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAAoD;AAE7C,MAAM,qCAAqC;AAAA,EACjD,WAAW;AAAA,EACX,aAAa;AACd;AAEO,MAAM,qCAAqC;AAAA,EACjD,WAAW;AAAA,EACX,aAAa;AACd;AAEO,MAAM,uBAAmB,iCAAmB,4BAAe;AAC3D,MAAM,wBAAwB;AAE9B,MAAM,2BAA2B;",
6
+ "names": []
7
+ }