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