@haneullabs/haneulns 0.1.0 → 1.0.3
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 +15 -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 +24 -20
- 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 +120 -165
- package/src/haneulns-transaction.ts +137 -111
- package/src/index.ts +2 -2
- 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
|
@@ -14,6 +14,13 @@ import { isNestedSubName, isSubName, zeroCoin } from './helpers.js';
|
|
|
14
14
|
import type { HaneulnsClient } from './haneulns-client.js';
|
|
15
15
|
import type { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from './types.js';
|
|
16
16
|
|
|
17
|
+
import * as payment from './contracts/haneulns/payment.js';
|
|
18
|
+
import * as controller from './contracts/haneulns/controller.js';
|
|
19
|
+
import * as paymentsModule from './contracts/haneulns_payments/payments.js';
|
|
20
|
+
import * as couponHouse from './contracts/haneulns_coupons/coupon_house.js';
|
|
21
|
+
import * as discounts from './contracts/haneulns_discounts/discounts.js';
|
|
22
|
+
import * as freeClaims from './contracts/haneulns_discounts/free_claims.js';
|
|
23
|
+
|
|
17
24
|
export class HaneulnsTransaction {
|
|
18
25
|
haneulnsClient: HaneulnsClient;
|
|
19
26
|
transaction: Transaction;
|
|
@@ -100,22 +107,22 @@ export class HaneulnsTransaction {
|
|
|
100
107
|
|
|
101
108
|
initRegistration(domain: string): TransactionObjectArgument {
|
|
102
109
|
const config = this.haneulnsClient.config;
|
|
103
|
-
return this.transaction.
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
110
|
+
return this.transaction.add(
|
|
111
|
+
payment.initRegistration({
|
|
112
|
+
package: config.packageId,
|
|
113
|
+
arguments: { haneulns: config.haneulns, domain },
|
|
114
|
+
}),
|
|
115
|
+
);
|
|
107
116
|
}
|
|
108
117
|
|
|
109
118
|
initRenewal(nft: TransactionObjectInput, years: number): TransactionObjectArgument {
|
|
110
119
|
const config = this.haneulnsClient.config;
|
|
111
|
-
return this.transaction.
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
this.transaction.object(
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
],
|
|
118
|
-
});
|
|
120
|
+
return this.transaction.add(
|
|
121
|
+
payment.initRenewal({
|
|
122
|
+
package: config.packageId,
|
|
123
|
+
arguments: { haneulns: config.haneulns, nft: this.transaction.object(nft), years },
|
|
124
|
+
}),
|
|
125
|
+
);
|
|
119
126
|
}
|
|
120
127
|
|
|
121
128
|
calculatePrice(
|
|
@@ -124,65 +131,71 @@ export class HaneulnsTransaction {
|
|
|
124
131
|
priceInfoObjectId: string,
|
|
125
132
|
): TransactionObjectArgument {
|
|
126
133
|
const config = this.haneulnsClient.config;
|
|
127
|
-
return this.transaction.
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
134
|
+
return this.transaction.add(
|
|
135
|
+
paymentsModule.calculatePrice({
|
|
136
|
+
package: config.payments.packageId,
|
|
137
|
+
arguments: {
|
|
138
|
+
haneulns: config.haneulns,
|
|
139
|
+
baseAmount,
|
|
140
|
+
priceInfoObject: priceInfoObjectId,
|
|
141
|
+
},
|
|
142
|
+
typeArguments: [paymentType],
|
|
143
|
+
}),
|
|
144
|
+
);
|
|
137
145
|
}
|
|
138
146
|
|
|
139
147
|
handleBasePayment(
|
|
140
148
|
paymentIntent: TransactionObjectArgument,
|
|
141
|
-
|
|
149
|
+
paymentArg: TransactionObjectArgument,
|
|
142
150
|
paymentType: string,
|
|
143
151
|
): TransactionObjectArgument {
|
|
144
152
|
const config = this.haneulnsClient.config;
|
|
145
|
-
return this.transaction.
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
153
|
+
return this.transaction.add(
|
|
154
|
+
paymentsModule.handleBasePayment({
|
|
155
|
+
package: config.payments.packageId,
|
|
156
|
+
arguments: {
|
|
157
|
+
haneulns: config.haneulns,
|
|
158
|
+
bbbVault: config.bbb.vault,
|
|
159
|
+
intent: paymentIntent,
|
|
160
|
+
payment: paymentArg,
|
|
161
|
+
},
|
|
162
|
+
typeArguments: [paymentType],
|
|
163
|
+
}),
|
|
164
|
+
);
|
|
155
165
|
}
|
|
156
166
|
|
|
157
167
|
handlePayment(
|
|
158
168
|
paymentIntent: TransactionObjectArgument,
|
|
159
|
-
|
|
169
|
+
paymentArg: TransactionObjectArgument,
|
|
160
170
|
paymentType: string,
|
|
161
171
|
priceInfoObjectId: string,
|
|
162
172
|
maxAmount: bigint = MAX_U64,
|
|
163
173
|
): TransactionObjectArgument {
|
|
164
174
|
const config = this.haneulnsClient.config;
|
|
165
|
-
return this.transaction.
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
175
|
+
return this.transaction.add(
|
|
176
|
+
paymentsModule.handlePayment({
|
|
177
|
+
package: config.payments.packageId,
|
|
178
|
+
arguments: {
|
|
179
|
+
haneulns: config.haneulns,
|
|
180
|
+
bbbVault: config.bbb.vault,
|
|
181
|
+
intent: paymentIntent,
|
|
182
|
+
payment: paymentArg,
|
|
183
|
+
priceInfoObject: priceInfoObjectId,
|
|
184
|
+
userPriceGuard: maxAmount,
|
|
185
|
+
},
|
|
186
|
+
typeArguments: [paymentType],
|
|
187
|
+
}),
|
|
188
|
+
);
|
|
178
189
|
}
|
|
179
190
|
|
|
180
191
|
finalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument {
|
|
181
192
|
const config = this.haneulnsClient.config;
|
|
182
|
-
return this.transaction.
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
193
|
+
return this.transaction.add(
|
|
194
|
+
payment.register({
|
|
195
|
+
package: config.packageId,
|
|
196
|
+
arguments: { receipt, haneulns: config.haneulns },
|
|
197
|
+
}),
|
|
198
|
+
);
|
|
186
199
|
}
|
|
187
200
|
|
|
188
201
|
finalizeRenew(
|
|
@@ -190,15 +203,12 @@ export class HaneulnsTransaction {
|
|
|
190
203
|
nft: TransactionObjectInput,
|
|
191
204
|
): TransactionObjectArgument {
|
|
192
205
|
const config = this.haneulnsClient.config;
|
|
193
|
-
return this.transaction.
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
receipt,
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
this.transaction.object.clock(),
|
|
200
|
-
],
|
|
201
|
-
});
|
|
206
|
+
return this.transaction.add(
|
|
207
|
+
payment.renew({
|
|
208
|
+
package: config.packageId,
|
|
209
|
+
arguments: { receipt, haneulns: config.haneulns, nft: this.transaction.object(nft) },
|
|
210
|
+
}),
|
|
211
|
+
);
|
|
202
212
|
}
|
|
203
213
|
|
|
204
214
|
calculatePriceAfterDiscount(
|
|
@@ -206,11 +216,13 @@ export class HaneulnsTransaction {
|
|
|
206
216
|
paymentType: string,
|
|
207
217
|
): TransactionObjectArgument {
|
|
208
218
|
const config = this.haneulnsClient.config;
|
|
209
|
-
return this.transaction.
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
219
|
+
return this.transaction.add(
|
|
220
|
+
paymentsModule.calculatePriceAfterDiscount({
|
|
221
|
+
package: config.payments.packageId,
|
|
222
|
+
arguments: { haneulns: config.haneulns, intent: paymentIntent },
|
|
223
|
+
typeArguments: [paymentType],
|
|
224
|
+
}),
|
|
225
|
+
);
|
|
214
226
|
}
|
|
215
227
|
|
|
216
228
|
generateReceipt(params: ReceiptParams): TransactionObjectArgument {
|
|
@@ -250,15 +262,12 @@ export class HaneulnsTransaction {
|
|
|
250
262
|
*/
|
|
251
263
|
applyCoupon(intent: TransactionObjectArgument, couponCode: string): TransactionObjectArgument {
|
|
252
264
|
const config = this.haneulnsClient.config;
|
|
253
|
-
return this.transaction.
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
|
|
258
|
-
|
|
259
|
-
this.transaction.object.clock(),
|
|
260
|
-
],
|
|
261
|
-
});
|
|
265
|
+
return this.transaction.add(
|
|
266
|
+
couponHouse.applyCoupon({
|
|
267
|
+
package: config.coupons.packageId,
|
|
268
|
+
arguments: { haneulns: config.haneulns, intent, couponCode },
|
|
269
|
+
}),
|
|
270
|
+
);
|
|
262
271
|
}
|
|
263
272
|
|
|
264
273
|
/**
|
|
@@ -268,27 +277,31 @@ export class HaneulnsTransaction {
|
|
|
268
277
|
const config = this.haneulnsClient.config;
|
|
269
278
|
|
|
270
279
|
if (discountInfo.isFreeClaim) {
|
|
271
|
-
this.transaction.
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
280
|
+
this.transaction.add(
|
|
281
|
+
freeClaims.freeClaim({
|
|
282
|
+
package: config.discountsPackage.packageId,
|
|
283
|
+
arguments: {
|
|
284
|
+
self: config.discountsPackage.discountHouseId,
|
|
285
|
+
haneulns: config.haneulns,
|
|
286
|
+
intent,
|
|
287
|
+
object: this.transaction.object(discountInfo.discountNft),
|
|
288
|
+
},
|
|
289
|
+
typeArguments: [discountInfo.type],
|
|
290
|
+
}),
|
|
291
|
+
);
|
|
281
292
|
} else {
|
|
282
|
-
this.transaction.
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
293
|
+
this.transaction.add(
|
|
294
|
+
discounts.applyPercentageDiscount({
|
|
295
|
+
package: config.discountsPackage.packageId,
|
|
296
|
+
arguments: {
|
|
297
|
+
self: config.discountsPackage.discountHouseId,
|
|
298
|
+
intent,
|
|
299
|
+
haneulns: config.haneulns,
|
|
300
|
+
_: this.transaction.object(discountInfo.discountNft),
|
|
301
|
+
},
|
|
302
|
+
typeArguments: [discountInfo.type],
|
|
303
|
+
}),
|
|
304
|
+
);
|
|
292
305
|
}
|
|
293
306
|
}
|
|
294
307
|
|
|
@@ -431,13 +444,15 @@ export class HaneulnsTransaction {
|
|
|
431
444
|
if (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');
|
|
432
445
|
if (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');
|
|
433
446
|
|
|
434
|
-
this.transaction.
|
|
435
|
-
|
|
436
|
-
|
|
437
|
-
|
|
438
|
-
|
|
439
|
-
|
|
440
|
-
|
|
447
|
+
this.transaction.add(
|
|
448
|
+
controller.setReverseLookup({
|
|
449
|
+
package: this.haneulnsClient.config.packageId,
|
|
450
|
+
arguments: {
|
|
451
|
+
haneulns: this.haneulnsClient.config.haneulns,
|
|
452
|
+
domainName: normalizeHaneulNSName(name, 'dot'),
|
|
453
|
+
},
|
|
454
|
+
}),
|
|
455
|
+
);
|
|
441
456
|
}
|
|
442
457
|
|
|
443
458
|
/**
|
|
@@ -541,15 +556,26 @@ export class HaneulnsTransaction {
|
|
|
541
556
|
burnExpired({ nft, isSubname }: { nft: TransactionObjectInput; isSubname?: boolean }) {
|
|
542
557
|
if (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');
|
|
543
558
|
|
|
544
|
-
|
|
545
|
-
|
|
546
|
-
|
|
547
|
-
|
|
548
|
-
|
|
549
|
-
|
|
550
|
-
|
|
551
|
-
|
|
552
|
-
|
|
553
|
-
|
|
559
|
+
if (isSubname) {
|
|
560
|
+
this.transaction.add(
|
|
561
|
+
controller.burnExpiredSubname({
|
|
562
|
+
package: this.haneulnsClient.config.packageId,
|
|
563
|
+
arguments: {
|
|
564
|
+
haneulns: this.haneulnsClient.config.haneulns,
|
|
565
|
+
nft: this.transaction.object(nft),
|
|
566
|
+
},
|
|
567
|
+
}),
|
|
568
|
+
);
|
|
569
|
+
} else {
|
|
570
|
+
this.transaction.add(
|
|
571
|
+
controller.burnExpired({
|
|
572
|
+
package: this.haneulnsClient.config.packageId,
|
|
573
|
+
arguments: {
|
|
574
|
+
haneulns: this.haneulnsClient.config.haneulns,
|
|
575
|
+
nft: this.transaction.object(nft),
|
|
576
|
+
},
|
|
577
|
+
}),
|
|
578
|
+
);
|
|
579
|
+
}
|
|
554
580
|
}
|
|
555
581
|
}
|
package/src/index.ts
CHANGED
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
export { HaneulnsClient } from './haneulns-client.js';
|
|
3
|
+
export { haneulns, HaneulnsClient, type HaneulnsExtensionOptions } from './haneulns-client.js';
|
|
4
4
|
export { HaneulnsTransaction } from './haneulns-transaction.js';
|
|
5
|
-
export type {
|
|
5
|
+
export type { HaneulnsClientConfig, PackageInfo } from './types.js';
|
|
6
6
|
export { ALLOWED_METADATA, mainPackage } from './constants.js';
|
|
7
7
|
export {
|
|
8
8
|
isSubName,
|
package/src/pyth/pyth.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
3
|
|
|
4
4
|
import { bcs } from '@haneullabs/haneul/bcs';
|
|
5
|
-
import type {
|
|
5
|
+
import type { ClientWithCoreApi } from '@haneullabs/haneul/client';
|
|
6
6
|
import type { Transaction, TransactionObjectArgument } from '@haneullabs/haneul/transactions';
|
|
7
7
|
import { coinWithBalance } from '@haneullabs/haneul/transactions';
|
|
8
8
|
import { fromBase64, fromHex, parseStructTag } from '@haneullabs/haneul/utils';
|
|
@@ -10,6 +10,8 @@ import { fromBase64, fromHex, parseStructTag } from '@haneullabs/haneul/utils';
|
|
|
10
10
|
import type { HexString } from './PriceServiceConnection.js';
|
|
11
11
|
import { PriceServiceConnection } from './PriceServiceConnection.js';
|
|
12
12
|
import { extractVaaBytesFromAccumulatorMessage } from './pyth-helpers.js';
|
|
13
|
+
import { State as PythState } from '../contracts/pyth/state.js';
|
|
14
|
+
import { State as WormholeState } from '../contracts/wormhole/state.js';
|
|
13
15
|
|
|
14
16
|
const MAX_ARGUMENT_SIZE = 16 * 1024;
|
|
15
17
|
export type ObjectId = string;
|
|
@@ -25,17 +27,19 @@ export class HaneulPriceServiceConnection extends PriceServiceConnection {
|
|
|
25
27
|
return latestVaas.map((vaa) => fromBase64(vaa));
|
|
26
28
|
}
|
|
27
29
|
}
|
|
30
|
+
|
|
31
|
+
type ParsedPythState = ReturnType<typeof PythState.parse>;
|
|
32
|
+
|
|
28
33
|
export class HaneulPythClient {
|
|
29
|
-
#
|
|
34
|
+
#pythState?: Promise<ParsedPythState>;
|
|
30
35
|
#wormholePackageId?: Promise<ObjectId>;
|
|
31
36
|
#priceFeedObjectIdCache: Map<HexString, Promise<ObjectId>> = new Map();
|
|
32
37
|
#priceTableInfo?: Promise<{ id: ObjectId; fieldType: ObjectId }>;
|
|
33
|
-
|
|
34
|
-
provider: HaneulClient;
|
|
38
|
+
provider: ClientWithCoreApi;
|
|
35
39
|
pythStateId: ObjectId;
|
|
36
40
|
wormholeStateId: ObjectId;
|
|
37
41
|
|
|
38
|
-
constructor(provider:
|
|
42
|
+
constructor(provider: ClientWithCoreApi, pythStateId: ObjectId, wormholeStateId: ObjectId) {
|
|
39
43
|
this.provider = provider;
|
|
40
44
|
this.pythStateId = pythStateId;
|
|
41
45
|
this.wormholeStateId = wormholeStateId;
|
|
@@ -65,7 +69,7 @@ export class HaneulPythClient {
|
|
|
65
69
|
* @param tx Transaction block to add commands to.
|
|
66
70
|
* @param updates Array of price feed updates received from the price service.
|
|
67
71
|
* @param feedIds Array of feed IDs to update (in hex format).
|
|
68
|
-
* @param feeCoin Optional custom
|
|
72
|
+
* @param feeCoin Optional custom HANEUL coin to use for Pyth oracle fees. If not provided, uses gas coin.
|
|
69
73
|
*/
|
|
70
74
|
async updatePriceFeeds(
|
|
71
75
|
tx: Transaction,
|
|
@@ -154,25 +158,20 @@ export class HaneulPythClient {
|
|
|
154
158
|
*/
|
|
155
159
|
async #fetchPriceFeedObjectId(feedId: HexString): Promise<ObjectId> {
|
|
156
160
|
const { id: tableId, fieldType } = await this.getPriceTableInfo();
|
|
157
|
-
|
|
161
|
+
|
|
162
|
+
const result = await this.provider.core.getDynamicField({
|
|
158
163
|
parentId: tableId,
|
|
159
164
|
name: {
|
|
160
165
|
type: `${fieldType}::price_identifier::PriceIdentifier`,
|
|
161
|
-
|
|
162
|
-
bytes: Array.from(fromHex(feedId)),
|
|
163
|
-
},
|
|
166
|
+
bcs: bcs.byteVector().serialize(fromHex(feedId)).toBytes(),
|
|
164
167
|
},
|
|
165
168
|
});
|
|
166
169
|
|
|
167
|
-
if (!result.
|
|
170
|
+
if (!result.dynamicField) {
|
|
168
171
|
throw new Error(`Price feed object ID for feed ID ${feedId} not found.`);
|
|
169
172
|
}
|
|
170
|
-
if (result.data.content.dataType !== 'moveObject') {
|
|
171
|
-
throw new Error('Price feed type mismatch');
|
|
172
|
-
}
|
|
173
173
|
|
|
174
|
-
|
|
175
|
-
return result.data.content.fields.value;
|
|
174
|
+
return bcs.Address.parse(result.dynamicField.value.bcs);
|
|
176
175
|
}
|
|
177
176
|
|
|
178
177
|
/**
|
|
@@ -198,26 +197,27 @@ export class HaneulPythClient {
|
|
|
198
197
|
* @returns Price table object ID and field type
|
|
199
198
|
*/
|
|
200
199
|
async #fetchPriceTableInfo(): Promise<{ id: ObjectId; fieldType: ObjectId }> {
|
|
201
|
-
const result = await this.provider.
|
|
200
|
+
const result = await this.provider.core.getDynamicObjectField({
|
|
202
201
|
parentId: this.pythStateId,
|
|
203
202
|
name: {
|
|
204
203
|
type: 'vector<u8>',
|
|
205
|
-
|
|
204
|
+
bcs: bcs.string().serialize('price_info').toBytes(),
|
|
206
205
|
},
|
|
207
206
|
});
|
|
208
207
|
|
|
209
|
-
if (!result.
|
|
208
|
+
if (!result.object) {
|
|
210
209
|
throw new Error('Price Table not found, contract may not be initialized');
|
|
211
210
|
}
|
|
212
211
|
|
|
213
|
-
const
|
|
212
|
+
const tableType = parseStructTag(result.object.type);
|
|
213
|
+
const priceIdentifier = tableType.typeParams[0];
|
|
214
214
|
if (
|
|
215
215
|
typeof priceIdentifier === 'object' &&
|
|
216
216
|
priceIdentifier !== null &&
|
|
217
217
|
priceIdentifier.name === 'PriceIdentifier' &&
|
|
218
218
|
'address' in priceIdentifier
|
|
219
219
|
) {
|
|
220
|
-
return { id: result.
|
|
220
|
+
return { id: result.object.objectId, fieldType: priceIdentifier.address };
|
|
221
221
|
} else {
|
|
222
222
|
throw new Error('fieldType not found');
|
|
223
223
|
}
|
|
@@ -236,77 +236,61 @@ export class HaneulPythClient {
|
|
|
236
236
|
* Fetches the package ID for the Wormhole contract (no caching).
|
|
237
237
|
*/
|
|
238
238
|
async #fetchWormholePackageId(): Promise<ObjectId> {
|
|
239
|
-
|
|
240
|
-
|
|
239
|
+
const result = await this.provider.core.getObject({
|
|
240
|
+
objectId: this.wormholeStateId,
|
|
241
|
+
include: { content: true },
|
|
242
|
+
});
|
|
241
243
|
|
|
242
|
-
|
|
243
|
-
|
|
244
|
-
*/
|
|
245
|
-
getPythPackageId(): Promise<ObjectId> {
|
|
246
|
-
if (!this.#pythPackageId) {
|
|
247
|
-
this.#pythPackageId = this.#fetchPythPackageId();
|
|
244
|
+
if (!result.object?.content) {
|
|
245
|
+
throw new Error('Unable to fetch Wormhole state object');
|
|
248
246
|
}
|
|
249
|
-
|
|
247
|
+
|
|
248
|
+
const state = WormholeState.parse(result.object.content);
|
|
249
|
+
return state.upgrade_cap.package;
|
|
250
250
|
}
|
|
251
251
|
|
|
252
252
|
/**
|
|
253
|
-
* Fetches
|
|
253
|
+
* Fetches and caches the parsed Pyth state object.
|
|
254
|
+
* This is shared between getPythPackageId and getBaseUpdateFee to avoid redundant fetches.
|
|
254
255
|
*/
|
|
255
|
-
|
|
256
|
-
|
|
256
|
+
#getPythState(): Promise<ParsedPythState> {
|
|
257
|
+
if (!this.#pythState) {
|
|
258
|
+
this.#pythState = this.#fetchPythState();
|
|
259
|
+
}
|
|
260
|
+
return this.#pythState;
|
|
257
261
|
}
|
|
258
262
|
|
|
259
263
|
/**
|
|
260
|
-
* Fetches the
|
|
261
|
-
*
|
|
262
|
-
* @param objectId Object ID to fetch the package ID for.
|
|
264
|
+
* Fetches the Pyth state object (no caching).
|
|
263
265
|
*/
|
|
264
|
-
async #
|
|
265
|
-
const result = await this.provider.getObject({
|
|
266
|
-
|
|
267
|
-
|
|
266
|
+
async #fetchPythState(): Promise<ParsedPythState> {
|
|
267
|
+
const result = await this.provider.core.getObject({
|
|
268
|
+
objectId: this.pythStateId,
|
|
269
|
+
include: { content: true },
|
|
268
270
|
});
|
|
269
271
|
|
|
270
|
-
if (
|
|
271
|
-
|
|
272
|
-
'upgrade_cap' in result.data.content.fields
|
|
273
|
-
) {
|
|
274
|
-
const fields = result.data.content.fields as {
|
|
275
|
-
upgrade_cap: {
|
|
276
|
-
fields: {
|
|
277
|
-
package: ObjectId;
|
|
278
|
-
};
|
|
279
|
-
};
|
|
280
|
-
};
|
|
281
|
-
return fields.upgrade_cap.fields.package;
|
|
272
|
+
if (!result.object?.content) {
|
|
273
|
+
throw new Error('Unable to fetch Pyth state object');
|
|
282
274
|
}
|
|
283
275
|
|
|
284
|
-
|
|
276
|
+
return PythState.parse(result.object.content);
|
|
285
277
|
}
|
|
278
|
+
|
|
286
279
|
/**
|
|
287
|
-
*
|
|
280
|
+
* Fetches the package ID for the Pyth contract, with caching.
|
|
281
|
+
* Uses the shared Pyth state cache.
|
|
288
282
|
*/
|
|
289
|
-
async
|
|
290
|
-
const
|
|
291
|
-
|
|
292
|
-
options: { showContent: true },
|
|
293
|
-
});
|
|
294
|
-
|
|
295
|
-
if (!result.data || result.data.content?.dataType !== 'moveObject') {
|
|
296
|
-
throw new Error('Unable to fetch Pyth state object');
|
|
297
|
-
}
|
|
298
|
-
|
|
299
|
-
const fields = result.data.content.fields as { base_update_fee: number };
|
|
300
|
-
return fields.base_update_fee;
|
|
283
|
+
async getPythPackageId(): Promise<ObjectId> {
|
|
284
|
+
const state = await this.#getPythState();
|
|
285
|
+
return state.upgrade_cap.package;
|
|
301
286
|
}
|
|
302
287
|
|
|
303
288
|
/**
|
|
304
289
|
* Returns the cached base update fee, fetching it if necessary.
|
|
290
|
+
* Uses the shared Pyth state cache.
|
|
305
291
|
*/
|
|
306
|
-
getBaseUpdateFee(): Promise<number> {
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
}
|
|
310
|
-
return this.#baseUpdateFee;
|
|
292
|
+
async getBaseUpdateFee(): Promise<number> {
|
|
293
|
+
const state = await this.#getPythState();
|
|
294
|
+
return Number(state.base_update_fee);
|
|
311
295
|
}
|
|
312
296
|
}
|
package/src/types.ts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
// Copyright (c) Mysten Labs, Inc.
|
|
2
2
|
// SPDX-License-Identifier: Apache-2.0
|
|
3
|
-
import type {
|
|
3
|
+
import type { ClientWithCoreApi, HaneulClientTypes } from '@haneullabs/haneul/client';
|
|
4
4
|
import type { TransactionObjectArgument, TransactionObjectInput } from '@haneullabs/haneul/transactions';
|
|
5
5
|
|
|
6
6
|
// Interfaces
|
|
@@ -63,8 +63,6 @@ export interface NameRecord {
|
|
|
63
63
|
// Types
|
|
64
64
|
// -----------------
|
|
65
65
|
|
|
66
|
-
export type Network = 'mainnet' | 'testnet' | 'custom';
|
|
67
|
-
|
|
68
66
|
export type VersionedPackageId = {
|
|
69
67
|
latest: string;
|
|
70
68
|
v1: string;
|
|
@@ -101,11 +99,11 @@ export type ReceiptParams = {
|
|
|
101
99
|
};
|
|
102
100
|
|
|
103
101
|
export type HaneulnsClientConfig = {
|
|
104
|
-
client:
|
|
105
|
-
network?: Network;
|
|
106
|
-
|
|
102
|
+
client: ClientWithCoreApi;
|
|
103
|
+
network?: HaneulClientTypes.Network;
|
|
104
|
+
packageInfo?: PackageInfo;
|
|
107
105
|
};
|
|
108
106
|
|
|
109
|
-
export type
|
|
107
|
+
export type HaneulnsPriceList = Map<[number, number], number>;
|
|
110
108
|
|
|
111
109
|
export type CoinTypeDiscount = Map<string, number>;
|
package/dist/cjs/constants.d.ts
DELETED
|
@@ -1,11 +0,0 @@
|
|
|
1
|
-
import type { Config } from './types.js';
|
|
2
|
-
export declare const MAX_U64: bigint;
|
|
3
|
-
/**
|
|
4
|
-
* Allowed keys for metadata.
|
|
5
|
-
*/
|
|
6
|
-
export declare const ALLOWED_METADATA: {
|
|
7
|
-
contentHash: string;
|
|
8
|
-
avatar: string;
|
|
9
|
-
walrusSiteId: string;
|
|
10
|
-
};
|
|
11
|
-
export declare const mainPackage: Config;
|