@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.
- package/README.md +123 -0
- package/dist/cjs/calls.d.ts +71 -0
- package/dist/cjs/calls.js +207 -0
- package/dist/cjs/calls.js.map +7 -0
- package/dist/cjs/client.d.ts +36 -0
- package/dist/cjs/client.js +123 -0
- package/dist/cjs/client.js.map +7 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.js +40 -0
- package/dist/cjs/constants.js.map +7 -0
- package/dist/cjs/contracts/payment_kit/config.d.ts +14 -0
- package/dist/cjs/contracts/payment_kit/config.js +50 -0
- package/dist/cjs/contracts/payment_kit/config.js.map +7 -0
- package/dist/cjs/contracts/payment_kit/deps/std/type_name.d.ts +14 -0
- package/dist/cjs/contracts/payment_kit/deps/std/type_name.js +42 -0
- package/dist/cjs/contracts/payment_kit/deps/std/type_name.js.map +7 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/object.d.ts +5 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/object.js +33 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/object.js.map +7 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.d.ts +27 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.js +45 -0
- package/dist/cjs/contracts/payment_kit/deps/sui/vec_map.js.map +7 -0
- package/dist/cjs/contracts/payment_kit/payment_kit.d.ts +233 -0
- package/dist/cjs/contracts/payment_kit/payment_kit.js +252 -0
- package/dist/cjs/contracts/payment_kit/payment_kit.js.map +7 -0
- package/dist/cjs/contracts/utils/index.d.ts +12 -0
- package/dist/cjs/contracts/utils/index.js +151 -0
- package/dist/cjs/contracts/utils/index.js.map +7 -0
- package/dist/cjs/error.d.ts +4 -0
- package/dist/cjs/error.js +29 -0
- package/dist/cjs/error.js.map +7 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.js +35 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/transactions.d.ts +73 -0
- package/dist/cjs/transactions.js +131 -0
- package/dist/cjs/transactions.js.map +7 -0
- package/dist/cjs/types.d.ts +62 -0
- package/dist/cjs/types.js +17 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/cjs/uri.d.ts +27 -0
- package/dist/cjs/uri.js +131 -0
- package/dist/cjs/uri.js.map +7 -0
- package/dist/cjs/utils.d.ts +1 -0
- package/dist/cjs/utils.js +34 -0
- package/dist/cjs/utils.js.map +7 -0
- package/dist/esm/calls.d.ts +71 -0
- package/dist/esm/calls.js +196 -0
- package/dist/esm/calls.js.map +7 -0
- package/dist/esm/client.d.ts +36 -0
- package/dist/esm/client.js +106 -0
- package/dist/esm/client.js.map +7 -0
- package/dist/esm/constants.d.ts +11 -0
- package/dist/esm/constants.js +20 -0
- package/dist/esm/constants.js.map +7 -0
- package/dist/esm/contracts/payment_kit/config.d.ts +14 -0
- package/dist/esm/contracts/payment_kit/config.js +20 -0
- package/dist/esm/contracts/payment_kit/config.js.map +7 -0
- package/dist/esm/contracts/payment_kit/deps/std/type_name.d.ts +14 -0
- package/dist/esm/contracts/payment_kit/deps/std/type_name.js +22 -0
- package/dist/esm/contracts/payment_kit/deps/std/type_name.js.map +7 -0
- package/dist/esm/contracts/payment_kit/deps/sui/object.d.ts +5 -0
- package/dist/esm/contracts/payment_kit/deps/sui/object.js +13 -0
- package/dist/esm/contracts/payment_kit/deps/sui/object.js.map +7 -0
- package/dist/esm/contracts/payment_kit/deps/sui/vec_map.d.ts +27 -0
- package/dist/esm/contracts/payment_kit/deps/sui/vec_map.js +25 -0
- package/dist/esm/contracts/payment_kit/deps/sui/vec_map.js.map +7 -0
- package/dist/esm/contracts/payment_kit/payment_kit.d.ts +233 -0
- package/dist/esm/contracts/payment_kit/payment_kit.js +222 -0
- package/dist/esm/contracts/payment_kit/payment_kit.js.map +7 -0
- package/dist/esm/contracts/utils/index.d.ts +12 -0
- package/dist/esm/contracts/utils/index.js +131 -0
- package/dist/esm/contracts/utils/index.js.map +7 -0
- package/dist/esm/error.d.ts +4 -0
- package/dist/esm/error.js +9 -0
- package/dist/esm/error.js.map +7 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +15 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +5 -0
- package/dist/esm/transactions.d.ts +73 -0
- package/dist/esm/transactions.js +111 -0
- package/dist/esm/transactions.js.map +7 -0
- package/dist/esm/types.d.ts +62 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +7 -0
- package/dist/esm/uri.d.ts +27 -0
- package/dist/esm/uri.js +111 -0
- package/dist/esm/uri.js.map +7 -0
- package/dist/esm/utils.d.ts +1 -0
- package/dist/esm/utils.js +14 -0
- package/dist/esm/utils.js.map +7 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- 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
|
+
}
|