@haneullabs/haneulns 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/CHANGELOG.md +505 -0
- package/README.md +9 -0
- package/dist/cjs/constants.d.ts +11 -0
- package/dist/cjs/constants.js +120 -0
- package/dist/cjs/constants.js.map +7 -0
- package/dist/cjs/haneulns-client.d.ts +40 -0
- package/dist/cjs/haneulns-client.js +261 -0
- package/dist/cjs/haneulns-client.js.map +7 -0
- package/dist/cjs/haneulns-transaction.d.ts +105 -0
- package/dist/cjs/haneulns-transaction.js +465 -0
- package/dist/cjs/haneulns-transaction.js.map +7 -0
- package/dist/cjs/helpers.d.ts +18 -0
- package/dist/cjs/helpers.js +63 -0
- package/dist/cjs/helpers.js.map +7 -0
- package/dist/cjs/index.d.ts +5 -0
- package/dist/cjs/index.js +39 -0
- package/dist/cjs/index.js.map +7 -0
- package/dist/cjs/package.json +5 -0
- package/dist/cjs/pyth/PriceServiceConnection.d.ts +26 -0
- package/dist/cjs/pyth/PriceServiceConnection.js +68 -0
- package/dist/cjs/pyth/PriceServiceConnection.js.map +7 -0
- package/dist/cjs/pyth/pyth-helpers.d.ts +7 -0
- package/dist/cjs/pyth/pyth-helpers.js +36 -0
- package/dist/cjs/pyth/pyth-helpers.js.map +7 -0
- package/dist/cjs/pyth/pyth.d.ts +66 -0
- package/dist/cjs/pyth/pyth.js +270 -0
- package/dist/cjs/pyth/pyth.js.map +7 -0
- package/dist/cjs/types.d.ts +89 -0
- package/dist/cjs/types.js +17 -0
- package/dist/cjs/types.js.map +7 -0
- package/dist/esm/constants.d.ts +11 -0
- package/dist/esm/constants.js +100 -0
- package/dist/esm/constants.js.map +7 -0
- package/dist/esm/haneulns-client.d.ts +40 -0
- package/dist/esm/haneulns-client.js +249 -0
- package/dist/esm/haneulns-client.js.map +7 -0
- package/dist/esm/haneulns-transaction.d.ts +105 -0
- package/dist/esm/haneulns-transaction.js +445 -0
- package/dist/esm/haneulns-transaction.js.map +7 -0
- package/dist/esm/helpers.d.ts +18 -0
- package/dist/esm/helpers.js +43 -0
- package/dist/esm/helpers.js.map +7 -0
- package/dist/esm/index.d.ts +5 -0
- package/dist/esm/index.js +28 -0
- package/dist/esm/index.js.map +7 -0
- package/dist/esm/package.json +5 -0
- package/dist/esm/pyth/PriceServiceConnection.d.ts +26 -0
- package/dist/esm/pyth/PriceServiceConnection.js +38 -0
- package/dist/esm/pyth/PriceServiceConnection.js.map +7 -0
- package/dist/esm/pyth/pyth-helpers.d.ts +7 -0
- package/dist/esm/pyth/pyth-helpers.js +16 -0
- package/dist/esm/pyth/pyth-helpers.js.map +7 -0
- package/dist/esm/pyth/pyth.d.ts +66 -0
- package/dist/esm/pyth/pyth.js +250 -0
- package/dist/esm/pyth/pyth.js.map +7 -0
- package/dist/esm/types.d.ts +89 -0
- package/dist/esm/types.js +1 -0
- package/dist/esm/types.js.map +7 -0
- package/dist/tsconfig.esm.tsbuildinfo +1 -0
- package/dist/tsconfig.tsbuildinfo +1 -0
- package/package.json +63 -0
- package/src/constants.ts +106 -0
- package/src/haneulns-client.ts +368 -0
- package/src/haneulns-transaction.ts +555 -0
- package/src/helpers.ts +52 -0
- package/src/index.ts +16 -0
- package/src/pyth/PriceServiceConnection.ts +48 -0
- package/src/pyth/pyth-helpers.ts +23 -0
- package/src/pyth/pyth.ts +312 -0
- package/src/types.ts +111 -0
|
@@ -0,0 +1,105 @@
|
|
|
1
|
+
import type { Transaction, TransactionObjectArgument, TransactionObjectInput } from '@haneullabs/haneul/transactions';
|
|
2
|
+
import type { HaneulnsClient } from './haneulns-client.js';
|
|
3
|
+
import type { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from './types.js';
|
|
4
|
+
export declare class HaneulnsTransaction {
|
|
5
|
+
haneulnsClient: HaneulnsClient;
|
|
6
|
+
transaction: Transaction;
|
|
7
|
+
constructor(client: HaneulnsClient, transaction: Transaction);
|
|
8
|
+
/**
|
|
9
|
+
* Registers a domain for a number of years.
|
|
10
|
+
*/
|
|
11
|
+
register(params: RegistrationParams): TransactionObjectArgument;
|
|
12
|
+
/**
|
|
13
|
+
* Renews an NFT for a number of years.
|
|
14
|
+
*/
|
|
15
|
+
renew(params: RenewalParams): void;
|
|
16
|
+
initRegistration(domain: string): TransactionObjectArgument;
|
|
17
|
+
initRenewal(nft: TransactionObjectInput, years: number): TransactionObjectArgument;
|
|
18
|
+
calculatePrice(baseAmount: TransactionObjectArgument, paymentType: string, priceInfoObjectId: string): TransactionObjectArgument;
|
|
19
|
+
handleBasePayment(paymentIntent: TransactionObjectArgument, payment: TransactionObjectArgument, paymentType: string): TransactionObjectArgument;
|
|
20
|
+
handlePayment(paymentIntent: TransactionObjectArgument, payment: TransactionObjectArgument, paymentType: string, priceInfoObjectId: string, maxAmount?: bigint): TransactionObjectArgument;
|
|
21
|
+
finalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument;
|
|
22
|
+
finalizeRenew(receipt: TransactionObjectArgument, nft: TransactionObjectInput): TransactionObjectArgument;
|
|
23
|
+
calculatePriceAfterDiscount(paymentIntent: TransactionObjectArgument, paymentType: string): TransactionObjectArgument;
|
|
24
|
+
generateReceipt(params: ReceiptParams): TransactionObjectArgument;
|
|
25
|
+
/**
|
|
26
|
+
* Applies a coupon to the payment intent.
|
|
27
|
+
*/
|
|
28
|
+
applyCoupon(intent: TransactionObjectArgument, couponCode: string): TransactionObjectArgument;
|
|
29
|
+
/**
|
|
30
|
+
* Applies a discount to the payment intent.
|
|
31
|
+
*/
|
|
32
|
+
applyDiscount(intent: TransactionObjectArgument, discountInfo: DiscountInfo): void;
|
|
33
|
+
/**
|
|
34
|
+
* Creates a subdomain.
|
|
35
|
+
*/
|
|
36
|
+
createSubName({ parentNft, name, expirationTimestampMs, allowChildCreation, allowTimeExtension, }: {
|
|
37
|
+
parentNft: TransactionObjectInput;
|
|
38
|
+
name: string;
|
|
39
|
+
expirationTimestampMs: number;
|
|
40
|
+
allowChildCreation: boolean;
|
|
41
|
+
allowTimeExtension: boolean;
|
|
42
|
+
}): import("@haneullabs/haneul/transactions").TransactionResult;
|
|
43
|
+
/**
|
|
44
|
+
* Builds the PTB to create a leaf subdomain.
|
|
45
|
+
* Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.
|
|
46
|
+
* Can be passed in as an ID or a TransactionArgument.
|
|
47
|
+
*/
|
|
48
|
+
createLeafSubName({ parentNft, name, targetAddress, }: {
|
|
49
|
+
parentNft: TransactionObjectInput;
|
|
50
|
+
name: string;
|
|
51
|
+
targetAddress: string;
|
|
52
|
+
}): void;
|
|
53
|
+
/**
|
|
54
|
+
* Removes a leaf subname.
|
|
55
|
+
*/
|
|
56
|
+
removeLeafSubName({ parentNft, name }: {
|
|
57
|
+
parentNft: TransactionObjectInput;
|
|
58
|
+
name: string;
|
|
59
|
+
}): void;
|
|
60
|
+
/**
|
|
61
|
+
* Sets the target address of an NFT.
|
|
62
|
+
*/
|
|
63
|
+
setTargetAddress({ nft, // Can be string or argument
|
|
64
|
+
address, isSubname, }: {
|
|
65
|
+
nft: TransactionObjectInput;
|
|
66
|
+
address?: string;
|
|
67
|
+
isSubname?: boolean;
|
|
68
|
+
}): void;
|
|
69
|
+
/**
|
|
70
|
+
* Sets a default name for the user.
|
|
71
|
+
*/
|
|
72
|
+
setDefault(name: string): void;
|
|
73
|
+
/**
|
|
74
|
+
* Edits the setup of a subname.
|
|
75
|
+
*/
|
|
76
|
+
editSetup({ parentNft, name, allowChildCreation, allowTimeExtension, }: {
|
|
77
|
+
parentNft: TransactionObjectInput;
|
|
78
|
+
name: string;
|
|
79
|
+
allowChildCreation: boolean;
|
|
80
|
+
allowTimeExtension: boolean;
|
|
81
|
+
}): void;
|
|
82
|
+
/**
|
|
83
|
+
* Extends the expiration of a subname.
|
|
84
|
+
*/
|
|
85
|
+
extendExpiration({ nft, expirationTimestampMs, }: {
|
|
86
|
+
nft: TransactionObjectInput;
|
|
87
|
+
expirationTimestampMs: number;
|
|
88
|
+
}): void;
|
|
89
|
+
/**
|
|
90
|
+
* Sets the user data of an NFT.
|
|
91
|
+
*/
|
|
92
|
+
setUserData({ nft, value, key, isSubname, }: {
|
|
93
|
+
nft: TransactionObjectInput;
|
|
94
|
+
value: string;
|
|
95
|
+
key: string;
|
|
96
|
+
isSubname?: boolean;
|
|
97
|
+
}): void;
|
|
98
|
+
/**
|
|
99
|
+
* Burns an expired NFT to collect storage rebates.
|
|
100
|
+
*/
|
|
101
|
+
burnExpired({ nft, isSubname }: {
|
|
102
|
+
nft: TransactionObjectInput;
|
|
103
|
+
isSubname?: boolean;
|
|
104
|
+
}): void;
|
|
105
|
+
}
|
|
@@ -0,0 +1,445 @@
|
|
|
1
|
+
import { bcs } from "@haneullabs/haneul/bcs";
|
|
2
|
+
import { isValidHaneulNSName, normalizeHaneulNSName, HANEUL_CLOCK_OBJECT_ID } from "@haneullabs/haneul/utils";
|
|
3
|
+
import { ALLOWED_METADATA, MAX_U64 } from "./constants.js";
|
|
4
|
+
import { isNestedSubName, isSubName, zeroCoin } from "./helpers.js";
|
|
5
|
+
class HaneulnsTransaction {
|
|
6
|
+
constructor(client, transaction) {
|
|
7
|
+
this.haneulnsClient = client;
|
|
8
|
+
this.transaction = transaction;
|
|
9
|
+
}
|
|
10
|
+
/**
|
|
11
|
+
* Registers a domain for a number of years.
|
|
12
|
+
*/
|
|
13
|
+
register(params) {
|
|
14
|
+
if (params.couponCode && params.discountInfo) {
|
|
15
|
+
throw new Error("Cannot apply both coupon and discount NFT");
|
|
16
|
+
}
|
|
17
|
+
const paymentIntent = this.initRegistration(params.domain);
|
|
18
|
+
if (params.couponCode) {
|
|
19
|
+
this.applyCoupon(paymentIntent, params.couponCode);
|
|
20
|
+
}
|
|
21
|
+
if (params.discountInfo) {
|
|
22
|
+
this.applyDiscount(paymentIntent, params.discountInfo);
|
|
23
|
+
}
|
|
24
|
+
const priceAfterDiscount = this.calculatePriceAfterDiscount(
|
|
25
|
+
paymentIntent,
|
|
26
|
+
params.coinConfig.type
|
|
27
|
+
);
|
|
28
|
+
const receipt = this.generateReceipt({
|
|
29
|
+
paymentIntent,
|
|
30
|
+
priceAfterDiscount,
|
|
31
|
+
coinConfig: params.coinConfig,
|
|
32
|
+
coin: params.coin,
|
|
33
|
+
maxAmount: params.maxAmount,
|
|
34
|
+
priceInfoObjectId: params.priceInfoObjectId
|
|
35
|
+
});
|
|
36
|
+
const nft = this.finalizeRegister(receipt);
|
|
37
|
+
if (params.years > 1) {
|
|
38
|
+
this.renew({
|
|
39
|
+
nft,
|
|
40
|
+
years: params.years - 1,
|
|
41
|
+
coinConfig: params.coinConfig,
|
|
42
|
+
coin: params.coin,
|
|
43
|
+
couponCode: params.couponCode,
|
|
44
|
+
discountInfo: params.discountInfo,
|
|
45
|
+
maxAmount: params.maxAmount,
|
|
46
|
+
priceInfoObjectId: params.priceInfoObjectId
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
return nft;
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Renews an NFT for a number of years.
|
|
53
|
+
*/
|
|
54
|
+
renew(params) {
|
|
55
|
+
if (params.couponCode && params.discountInfo) {
|
|
56
|
+
throw new Error("Cannot apply both coupon and discount NFT");
|
|
57
|
+
}
|
|
58
|
+
const paymentIntent = this.initRenewal(params.nft, params.years);
|
|
59
|
+
if (params.couponCode) {
|
|
60
|
+
this.applyCoupon(paymentIntent, params.couponCode);
|
|
61
|
+
}
|
|
62
|
+
if (params.discountInfo) {
|
|
63
|
+
this.applyDiscount(paymentIntent, params.discountInfo);
|
|
64
|
+
}
|
|
65
|
+
const priceAfterDiscount = this.calculatePriceAfterDiscount(
|
|
66
|
+
paymentIntent,
|
|
67
|
+
params.coinConfig.type
|
|
68
|
+
);
|
|
69
|
+
const receipt = this.generateReceipt({
|
|
70
|
+
paymentIntent,
|
|
71
|
+
priceAfterDiscount,
|
|
72
|
+
coinConfig: params.coinConfig,
|
|
73
|
+
coin: params.coin,
|
|
74
|
+
maxAmount: params.maxAmount,
|
|
75
|
+
priceInfoObjectId: params.priceInfoObjectId
|
|
76
|
+
});
|
|
77
|
+
this.finalizeRenew(receipt, params.nft);
|
|
78
|
+
}
|
|
79
|
+
initRegistration(domain) {
|
|
80
|
+
const config = this.haneulnsClient.config;
|
|
81
|
+
return this.transaction.moveCall({
|
|
82
|
+
target: `${config.packageId}::payment::init_registration`,
|
|
83
|
+
arguments: [this.transaction.object(config.haneulns), this.transaction.pure.string(domain)]
|
|
84
|
+
});
|
|
85
|
+
}
|
|
86
|
+
initRenewal(nft, years) {
|
|
87
|
+
const config = this.haneulnsClient.config;
|
|
88
|
+
return this.transaction.moveCall({
|
|
89
|
+
target: `${config.packageId}::payment::init_renewal`,
|
|
90
|
+
arguments: [
|
|
91
|
+
this.transaction.object(config.haneulns),
|
|
92
|
+
this.transaction.object(nft),
|
|
93
|
+
this.transaction.pure.u8(years)
|
|
94
|
+
]
|
|
95
|
+
});
|
|
96
|
+
}
|
|
97
|
+
calculatePrice(baseAmount, paymentType, priceInfoObjectId) {
|
|
98
|
+
const config = this.haneulnsClient.config;
|
|
99
|
+
return this.transaction.moveCall({
|
|
100
|
+
target: `${config.payments.packageId}::payments::calculate_price`,
|
|
101
|
+
arguments: [
|
|
102
|
+
this.transaction.object(config.haneulns),
|
|
103
|
+
baseAmount,
|
|
104
|
+
this.transaction.object.clock(),
|
|
105
|
+
this.transaction.object(priceInfoObjectId)
|
|
106
|
+
],
|
|
107
|
+
typeArguments: [paymentType]
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
handleBasePayment(paymentIntent, payment, paymentType) {
|
|
111
|
+
const config = this.haneulnsClient.config;
|
|
112
|
+
return this.transaction.moveCall({
|
|
113
|
+
target: `${config.payments.packageId}::payments::handle_base_payment`,
|
|
114
|
+
arguments: [
|
|
115
|
+
this.transaction.object(config.haneulns),
|
|
116
|
+
this.transaction.object(config.bbb.vault),
|
|
117
|
+
paymentIntent,
|
|
118
|
+
payment
|
|
119
|
+
],
|
|
120
|
+
typeArguments: [paymentType]
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
handlePayment(paymentIntent, payment, paymentType, priceInfoObjectId, maxAmount = MAX_U64) {
|
|
124
|
+
const config = this.haneulnsClient.config;
|
|
125
|
+
return this.transaction.moveCall({
|
|
126
|
+
target: `${config.payments.packageId}::payments::handle_payment`,
|
|
127
|
+
arguments: [
|
|
128
|
+
this.transaction.object(config.haneulns),
|
|
129
|
+
this.transaction.object(config.bbb.vault),
|
|
130
|
+
paymentIntent,
|
|
131
|
+
payment,
|
|
132
|
+
this.transaction.object.clock(),
|
|
133
|
+
this.transaction.object(priceInfoObjectId),
|
|
134
|
+
this.transaction.pure.u64(maxAmount)
|
|
135
|
+
],
|
|
136
|
+
typeArguments: [paymentType]
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
finalizeRegister(receipt) {
|
|
140
|
+
const config = this.haneulnsClient.config;
|
|
141
|
+
return this.transaction.moveCall({
|
|
142
|
+
target: `${config.packageId}::payment::register`,
|
|
143
|
+
arguments: [receipt, this.transaction.object(config.haneulns), this.transaction.object.clock()]
|
|
144
|
+
});
|
|
145
|
+
}
|
|
146
|
+
finalizeRenew(receipt, nft) {
|
|
147
|
+
const config = this.haneulnsClient.config;
|
|
148
|
+
return this.transaction.moveCall({
|
|
149
|
+
target: `${config.packageId}::payment::renew`,
|
|
150
|
+
arguments: [
|
|
151
|
+
receipt,
|
|
152
|
+
this.transaction.object(config.haneulns),
|
|
153
|
+
this.transaction.object(nft),
|
|
154
|
+
this.transaction.object.clock()
|
|
155
|
+
]
|
|
156
|
+
});
|
|
157
|
+
}
|
|
158
|
+
calculatePriceAfterDiscount(paymentIntent, paymentType) {
|
|
159
|
+
const config = this.haneulnsClient.config;
|
|
160
|
+
return this.transaction.moveCall({
|
|
161
|
+
target: `${config.payments.packageId}::payments::calculate_price_after_discount`,
|
|
162
|
+
arguments: [this.transaction.object(config.haneulns), paymentIntent],
|
|
163
|
+
typeArguments: [paymentType]
|
|
164
|
+
});
|
|
165
|
+
}
|
|
166
|
+
generateReceipt(params) {
|
|
167
|
+
const baseAssetPurchase = params.coinConfig.feed === "";
|
|
168
|
+
if (baseAssetPurchase) {
|
|
169
|
+
const payment = params.coin ? this.transaction.splitCoins(this.transaction.object(params.coin), [
|
|
170
|
+
params.priceAfterDiscount
|
|
171
|
+
]) : zeroCoin(this.transaction, params.coinConfig.type);
|
|
172
|
+
const receipt = this.handleBasePayment(params.paymentIntent, payment, params.coinConfig.type);
|
|
173
|
+
return receipt;
|
|
174
|
+
} else {
|
|
175
|
+
const priceInfoObjectId = params.priceInfoObjectId;
|
|
176
|
+
if (!priceInfoObjectId)
|
|
177
|
+
throw new Error("Price info object ID is required for non-base asset purchases");
|
|
178
|
+
const price = this.calculatePrice(
|
|
179
|
+
params.priceAfterDiscount,
|
|
180
|
+
params.coinConfig.type,
|
|
181
|
+
priceInfoObjectId
|
|
182
|
+
);
|
|
183
|
+
if (!params.coin) throw new Error("coin input is required");
|
|
184
|
+
const payment = this.transaction.splitCoins(this.transaction.object(params.coin), [price]);
|
|
185
|
+
const receipt = this.handlePayment(
|
|
186
|
+
params.paymentIntent,
|
|
187
|
+
payment,
|
|
188
|
+
params.coinConfig.type,
|
|
189
|
+
priceInfoObjectId,
|
|
190
|
+
params.maxAmount
|
|
191
|
+
);
|
|
192
|
+
return receipt;
|
|
193
|
+
}
|
|
194
|
+
}
|
|
195
|
+
/**
|
|
196
|
+
* Applies a coupon to the payment intent.
|
|
197
|
+
*/
|
|
198
|
+
applyCoupon(intent, couponCode) {
|
|
199
|
+
const config = this.haneulnsClient.config;
|
|
200
|
+
return this.transaction.moveCall({
|
|
201
|
+
target: `${config.coupons.packageId}::coupon_house::apply_coupon`,
|
|
202
|
+
arguments: [
|
|
203
|
+
this.transaction.object(config.haneulns),
|
|
204
|
+
intent,
|
|
205
|
+
this.transaction.pure.string(couponCode),
|
|
206
|
+
this.transaction.object.clock()
|
|
207
|
+
]
|
|
208
|
+
});
|
|
209
|
+
}
|
|
210
|
+
/**
|
|
211
|
+
* Applies a discount to the payment intent.
|
|
212
|
+
*/
|
|
213
|
+
applyDiscount(intent, discountInfo) {
|
|
214
|
+
const config = this.haneulnsClient.config;
|
|
215
|
+
if (discountInfo.isFreeClaim) {
|
|
216
|
+
this.transaction.moveCall({
|
|
217
|
+
target: `${config.discountsPackage.packageId}::free_claims::free_claim`,
|
|
218
|
+
arguments: [
|
|
219
|
+
this.transaction.object(config.discountsPackage.discountHouseId),
|
|
220
|
+
this.transaction.object(config.haneulns),
|
|
221
|
+
intent,
|
|
222
|
+
this.transaction.object(discountInfo.discountNft)
|
|
223
|
+
],
|
|
224
|
+
typeArguments: [discountInfo.type]
|
|
225
|
+
});
|
|
226
|
+
} else {
|
|
227
|
+
this.transaction.moveCall({
|
|
228
|
+
target: `${config.discountsPackage.packageId}::discounts::apply_percentage_discount`,
|
|
229
|
+
arguments: [
|
|
230
|
+
this.transaction.object(config.discountsPackage.discountHouseId),
|
|
231
|
+
intent,
|
|
232
|
+
this.transaction.object(config.haneulns),
|
|
233
|
+
this.transaction.object(discountInfo.discountNft)
|
|
234
|
+
],
|
|
235
|
+
typeArguments: [discountInfo.type]
|
|
236
|
+
});
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
/**
|
|
240
|
+
* Creates a subdomain.
|
|
241
|
+
*/
|
|
242
|
+
createSubName({
|
|
243
|
+
parentNft,
|
|
244
|
+
name,
|
|
245
|
+
expirationTimestampMs,
|
|
246
|
+
allowChildCreation,
|
|
247
|
+
allowTimeExtension
|
|
248
|
+
}) {
|
|
249
|
+
if (!isValidHaneulNSName(name)) throw new Error("Invalid HaneulNS name");
|
|
250
|
+
const isParentSubdomain = isNestedSubName(name);
|
|
251
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
252
|
+
if (!this.haneulnsClient.config.subNamesPackageId)
|
|
253
|
+
throw new Error("Subnames package ID not found");
|
|
254
|
+
if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
255
|
+
throw new Error("Subnames proxy package ID not found");
|
|
256
|
+
const subNft = this.transaction.moveCall({
|
|
257
|
+
target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new`,
|
|
258
|
+
arguments: [
|
|
259
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
260
|
+
this.transaction.object(parentNft),
|
|
261
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID),
|
|
262
|
+
this.transaction.pure.string(normalizeHaneulNSName(name, "dot")),
|
|
263
|
+
this.transaction.pure.u64(expirationTimestampMs),
|
|
264
|
+
this.transaction.pure.bool(!!allowChildCreation),
|
|
265
|
+
this.transaction.pure.bool(!!allowTimeExtension)
|
|
266
|
+
]
|
|
267
|
+
});
|
|
268
|
+
return subNft;
|
|
269
|
+
}
|
|
270
|
+
/**
|
|
271
|
+
* Builds the PTB to create a leaf subdomain.
|
|
272
|
+
* Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.
|
|
273
|
+
* Can be passed in as an ID or a TransactionArgument.
|
|
274
|
+
*/
|
|
275
|
+
createLeafSubName({
|
|
276
|
+
parentNft,
|
|
277
|
+
name,
|
|
278
|
+
targetAddress
|
|
279
|
+
}) {
|
|
280
|
+
if (!isValidHaneulNSName(name)) throw new Error("Invalid HaneulNS name");
|
|
281
|
+
const isParentSubdomain = isNestedSubName(name);
|
|
282
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
283
|
+
if (!this.haneulnsClient.config.subNamesPackageId)
|
|
284
|
+
throw new Error("Subnames package ID not found");
|
|
285
|
+
if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
286
|
+
throw new Error("Subnames proxy package ID not found");
|
|
287
|
+
this.transaction.moveCall({
|
|
288
|
+
target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new_leaf` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new_leaf`,
|
|
289
|
+
arguments: [
|
|
290
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
291
|
+
this.transaction.object(parentNft),
|
|
292
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID),
|
|
293
|
+
this.transaction.pure.string(normalizeHaneulNSName(name, "dot")),
|
|
294
|
+
this.transaction.pure.address(targetAddress)
|
|
295
|
+
]
|
|
296
|
+
});
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Removes a leaf subname.
|
|
300
|
+
*/
|
|
301
|
+
removeLeafSubName({ parentNft, name }) {
|
|
302
|
+
if (!isValidHaneulNSName(name)) throw new Error("Invalid HaneulNS name");
|
|
303
|
+
const isParentSubdomain = isNestedSubName(name);
|
|
304
|
+
if (!isSubName(name)) throw new Error("This can only be invoked for subnames");
|
|
305
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
306
|
+
if (!this.haneulnsClient.config.subNamesPackageId)
|
|
307
|
+
throw new Error("Subnames package ID not found");
|
|
308
|
+
if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
309
|
+
throw new Error("Subnames proxy package ID not found");
|
|
310
|
+
this.transaction.moveCall({
|
|
311
|
+
target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::remove_leaf` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::remove_leaf`,
|
|
312
|
+
arguments: [
|
|
313
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
314
|
+
this.transaction.object(parentNft),
|
|
315
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID),
|
|
316
|
+
this.transaction.pure.string(normalizeHaneulNSName(name, "dot"))
|
|
317
|
+
]
|
|
318
|
+
});
|
|
319
|
+
}
|
|
320
|
+
/**
|
|
321
|
+
* Sets the target address of an NFT.
|
|
322
|
+
*/
|
|
323
|
+
setTargetAddress({
|
|
324
|
+
nft,
|
|
325
|
+
// Can be string or argument
|
|
326
|
+
address,
|
|
327
|
+
isSubname
|
|
328
|
+
}) {
|
|
329
|
+
if (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
330
|
+
throw new Error("Subnames proxy package ID not found");
|
|
331
|
+
this.transaction.moveCall({
|
|
332
|
+
target: isSubname ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_target_address` : `${this.haneulnsClient.config.packageId}::controller::set_target_address`,
|
|
333
|
+
arguments: [
|
|
334
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
335
|
+
this.transaction.object(nft),
|
|
336
|
+
this.transaction.pure(bcs.option(bcs.Address).serialize(address).toBytes()),
|
|
337
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID)
|
|
338
|
+
]
|
|
339
|
+
});
|
|
340
|
+
}
|
|
341
|
+
/**
|
|
342
|
+
* Sets a default name for the user.
|
|
343
|
+
*/
|
|
344
|
+
setDefault(name) {
|
|
345
|
+
if (!isValidHaneulNSName(name)) throw new Error("Invalid HaneulNS name");
|
|
346
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
347
|
+
this.transaction.moveCall({
|
|
348
|
+
target: `${this.haneulnsClient.config.packageId}::controller::set_reverse_lookup`,
|
|
349
|
+
arguments: [
|
|
350
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
351
|
+
this.transaction.pure.string(normalizeHaneulNSName(name, "dot"))
|
|
352
|
+
]
|
|
353
|
+
});
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Edits the setup of a subname.
|
|
357
|
+
*/
|
|
358
|
+
editSetup({
|
|
359
|
+
parentNft,
|
|
360
|
+
name,
|
|
361
|
+
allowChildCreation,
|
|
362
|
+
allowTimeExtension
|
|
363
|
+
}) {
|
|
364
|
+
if (!isValidHaneulNSName(name)) throw new Error("Invalid HaneulNS name");
|
|
365
|
+
const isParentSubdomain = isNestedSubName(name);
|
|
366
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
367
|
+
if (!isParentSubdomain && !this.haneulnsClient.config.subNamesPackageId)
|
|
368
|
+
throw new Error("Subnames package ID not found");
|
|
369
|
+
if (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
370
|
+
throw new Error("Subnames proxy package ID not found");
|
|
371
|
+
this.transaction.moveCall({
|
|
372
|
+
target: isParentSubdomain ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::edit_setup` : `${this.haneulnsClient.config.subNamesPackageId}::subdomains::edit_setup`,
|
|
373
|
+
arguments: [
|
|
374
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
375
|
+
this.transaction.object(parentNft),
|
|
376
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID),
|
|
377
|
+
this.transaction.pure.string(normalizeHaneulNSName(name, "dot")),
|
|
378
|
+
this.transaction.pure.bool(!!allowChildCreation),
|
|
379
|
+
this.transaction.pure.bool(!!allowTimeExtension)
|
|
380
|
+
]
|
|
381
|
+
});
|
|
382
|
+
}
|
|
383
|
+
/**
|
|
384
|
+
* Extends the expiration of a subname.
|
|
385
|
+
*/
|
|
386
|
+
extendExpiration({
|
|
387
|
+
nft,
|
|
388
|
+
expirationTimestampMs
|
|
389
|
+
}) {
|
|
390
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
391
|
+
if (!this.haneulnsClient.config.subNamesPackageId)
|
|
392
|
+
throw new Error("Subnames package ID not found");
|
|
393
|
+
this.transaction.moveCall({
|
|
394
|
+
target: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::extend_expiration`,
|
|
395
|
+
arguments: [
|
|
396
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
397
|
+
this.transaction.object(nft),
|
|
398
|
+
this.transaction.pure.u64(expirationTimestampMs)
|
|
399
|
+
]
|
|
400
|
+
});
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Sets the user data of an NFT.
|
|
404
|
+
*/
|
|
405
|
+
setUserData({
|
|
406
|
+
nft,
|
|
407
|
+
value,
|
|
408
|
+
key,
|
|
409
|
+
isSubname
|
|
410
|
+
}) {
|
|
411
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
412
|
+
if (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)
|
|
413
|
+
throw new Error("Subnames proxy package ID not found");
|
|
414
|
+
if (!Object.values(ALLOWED_METADATA).some((x) => x === key)) throw new Error("Invalid key");
|
|
415
|
+
this.transaction.moveCall({
|
|
416
|
+
target: isSubname ? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_user_data` : `${this.haneulnsClient.config.packageId}::controller::set_user_data`,
|
|
417
|
+
arguments: [
|
|
418
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
419
|
+
this.transaction.object(nft),
|
|
420
|
+
this.transaction.pure.string(key),
|
|
421
|
+
this.transaction.pure.string(value),
|
|
422
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID)
|
|
423
|
+
]
|
|
424
|
+
});
|
|
425
|
+
}
|
|
426
|
+
/**
|
|
427
|
+
* Burns an expired NFT to collect storage rebates.
|
|
428
|
+
*/
|
|
429
|
+
burnExpired({ nft, isSubname }) {
|
|
430
|
+
if (!this.haneulnsClient.config.haneulns) throw new Error("HaneulNS Object ID not found");
|
|
431
|
+
this.transaction.moveCall({
|
|
432
|
+
target: `${this.haneulnsClient.config.packageId}::controller::${isSubname ? "burn_expired_subname" : "burn_expired"}`,
|
|
433
|
+
// Update this
|
|
434
|
+
arguments: [
|
|
435
|
+
this.transaction.object(this.haneulnsClient.config.haneulns),
|
|
436
|
+
this.transaction.object(nft),
|
|
437
|
+
this.transaction.object(HANEUL_CLOCK_OBJECT_ID)
|
|
438
|
+
]
|
|
439
|
+
});
|
|
440
|
+
}
|
|
441
|
+
}
|
|
442
|
+
export {
|
|
443
|
+
HaneulnsTransaction
|
|
444
|
+
};
|
|
445
|
+
//# sourceMappingURL=haneulns-transaction.js.map
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
{
|
|
2
|
+
"version": 3,
|
|
3
|
+
"sources": ["../../src/haneulns-transaction.ts"],
|
|
4
|
+
"sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { bcs } from '@haneullabs/haneul/bcs';\nimport type {\n\tTransaction,\n\tTransactionObjectArgument,\n\tTransactionObjectInput,\n} from '@haneullabs/haneul/transactions';\nimport { isValidHaneulNSName, normalizeHaneulNSName, HANEUL_CLOCK_OBJECT_ID } from '@haneullabs/haneul/utils';\n\nimport { ALLOWED_METADATA, MAX_U64 } from './constants.js';\nimport { isNestedSubName, isSubName, zeroCoin } from './helpers.js';\nimport type { HaneulnsClient } from './haneulns-client.js';\nimport type { DiscountInfo, ReceiptParams, RegistrationParams, RenewalParams } from './types.js';\n\nexport class HaneulnsTransaction {\n\thaneulnsClient: HaneulnsClient;\n\ttransaction: Transaction;\n\n\tconstructor(client: HaneulnsClient, transaction: Transaction) {\n\t\tthis.haneulnsClient = client;\n\t\tthis.transaction = transaction;\n\t}\n\n\t/**\n\t * Registers a domain for a number of years.\n\t */\n\tregister(params: RegistrationParams): TransactionObjectArgument {\n\t\tif (params.couponCode && params.discountInfo) {\n\t\t\tthrow new Error('Cannot apply both coupon and discount NFT');\n\t\t}\n\n\t\tconst paymentIntent = this.initRegistration(params.domain);\n\t\tif (params.couponCode) {\n\t\t\tthis.applyCoupon(paymentIntent, params.couponCode);\n\t\t}\n\t\tif (params.discountInfo) {\n\t\t\tthis.applyDiscount(paymentIntent, params.discountInfo);\n\t\t}\n\t\tconst priceAfterDiscount = this.calculatePriceAfterDiscount(\n\t\t\tpaymentIntent,\n\t\t\tparams.coinConfig.type,\n\t\t);\n\t\tconst receipt = this.generateReceipt({\n\t\t\tpaymentIntent,\n\t\t\tpriceAfterDiscount,\n\t\t\tcoinConfig: params.coinConfig,\n\t\t\tcoin: params.coin,\n\t\t\tmaxAmount: params.maxAmount,\n\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t});\n\t\tconst nft = this.finalizeRegister(receipt);\n\n\t\tif (params.years > 1) {\n\t\t\tthis.renew({\n\t\t\t\tnft,\n\t\t\t\tyears: params.years - 1,\n\t\t\t\tcoinConfig: params.coinConfig,\n\t\t\t\tcoin: params.coin,\n\t\t\t\tcouponCode: params.couponCode,\n\t\t\t\tdiscountInfo: params.discountInfo,\n\t\t\t\tmaxAmount: params.maxAmount,\n\t\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t\t});\n\t\t}\n\n\t\treturn nft as TransactionObjectArgument;\n\t}\n\n\t/**\n\t * Renews an NFT for a number of years.\n\t */\n\trenew(params: RenewalParams): void {\n\t\tif (params.couponCode && params.discountInfo) {\n\t\t\tthrow new Error('Cannot apply both coupon and discount NFT');\n\t\t}\n\n\t\tconst paymentIntent = this.initRenewal(params.nft, params.years);\n\t\tif (params.couponCode) {\n\t\t\tthis.applyCoupon(paymentIntent, params.couponCode);\n\t\t}\n\t\tif (params.discountInfo) {\n\t\t\tthis.applyDiscount(paymentIntent, params.discountInfo);\n\t\t}\n\t\tconst priceAfterDiscount = this.calculatePriceAfterDiscount(\n\t\t\tpaymentIntent,\n\t\t\tparams.coinConfig.type,\n\t\t);\n\t\tconst receipt = this.generateReceipt({\n\t\t\tpaymentIntent,\n\t\t\tpriceAfterDiscount,\n\t\t\tcoinConfig: params.coinConfig,\n\t\t\tcoin: params.coin,\n\t\t\tmaxAmount: params.maxAmount,\n\t\t\tpriceInfoObjectId: params.priceInfoObjectId,\n\t\t});\n\t\tthis.finalizeRenew(receipt, params.nft);\n\t}\n\n\tinitRegistration(domain: string): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::init_registration`,\n\t\t\targuments: [this.transaction.object(config.haneulns), this.transaction.pure.string(domain)],\n\t\t});\n\t}\n\n\tinitRenewal(nft: TransactionObjectInput, years: number): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::init_renewal`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.u8(years),\n\t\t\t],\n\t\t});\n\t}\n\n\tcalculatePrice(\n\t\tbaseAmount: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t\tpriceInfoObjectId: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::calculate_price`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tbaseAmount,\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t\tthis.transaction.object(priceInfoObjectId),\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\thandleBasePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpayment: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::handle_base_payment`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(config.bbb.vault),\n\t\t\t\tpaymentIntent,\n\t\t\t\tpayment,\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\thandlePayment(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpayment: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t\tpriceInfoObjectId: string,\n\t\tmaxAmount: bigint = MAX_U64,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::handle_payment`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(config.bbb.vault),\n\t\t\t\tpaymentIntent,\n\t\t\t\tpayment,\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t\tthis.transaction.object(priceInfoObjectId),\n\t\t\t\tthis.transaction.pure.u64(maxAmount),\n\t\t\t],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\tfinalizeRegister(receipt: TransactionObjectArgument): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::register`,\n\t\t\targuments: [receipt, this.transaction.object(config.haneulns), this.transaction.object.clock()],\n\t\t});\n\t}\n\n\tfinalizeRenew(\n\t\treceipt: TransactionObjectArgument,\n\t\tnft: TransactionObjectInput,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.packageId}::payment::renew`,\n\t\t\targuments: [\n\t\t\t\treceipt,\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t],\n\t\t});\n\t}\n\n\tcalculatePriceAfterDiscount(\n\t\tpaymentIntent: TransactionObjectArgument,\n\t\tpaymentType: string,\n\t): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.payments.packageId}::payments::calculate_price_after_discount`,\n\t\t\targuments: [this.transaction.object(config.haneulns), paymentIntent],\n\t\t\ttypeArguments: [paymentType],\n\t\t});\n\t}\n\n\tgenerateReceipt(params: ReceiptParams): TransactionObjectArgument {\n\t\tconst baseAssetPurchase = params.coinConfig.feed === '';\n\t\tif (baseAssetPurchase) {\n\t\t\tconst payment = params.coin\n\t\t\t\t? this.transaction.splitCoins(this.transaction.object(params.coin), [\n\t\t\t\t\t\tparams.priceAfterDiscount,\n\t\t\t\t\t])\n\t\t\t\t: zeroCoin(this.transaction, params.coinConfig.type);\n\t\t\tconst receipt = this.handleBasePayment(params.paymentIntent, payment, params.coinConfig.type);\n\t\t\treturn receipt;\n\t\t} else {\n\t\t\tconst priceInfoObjectId = params.priceInfoObjectId;\n\t\t\tif (!priceInfoObjectId)\n\t\t\t\tthrow new Error('Price info object ID is required for non-base asset purchases');\n\t\t\tconst price = this.calculatePrice(\n\t\t\t\tparams.priceAfterDiscount,\n\t\t\t\tparams.coinConfig.type,\n\t\t\t\tpriceInfoObjectId,\n\t\t\t);\n\t\t\tif (!params.coin) throw new Error('coin input is required');\n\t\t\tconst payment = this.transaction.splitCoins(this.transaction.object(params.coin!), [price]);\n\t\t\tconst receipt = this.handlePayment(\n\t\t\t\tparams.paymentIntent,\n\t\t\t\tpayment,\n\t\t\t\tparams.coinConfig.type,\n\t\t\t\tpriceInfoObjectId,\n\t\t\t\tparams.maxAmount,\n\t\t\t);\n\t\t\treturn receipt;\n\t\t}\n\t}\n\n\t/**\n\t * Applies a coupon to the payment intent.\n\t */\n\tapplyCoupon(intent: TransactionObjectArgument, couponCode: string): TransactionObjectArgument {\n\t\tconst config = this.haneulnsClient.config;\n\t\treturn this.transaction.moveCall({\n\t\t\ttarget: `${config.coupons.packageId}::coupon_house::apply_coupon`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\tintent,\n\t\t\t\tthis.transaction.pure.string(couponCode),\n\t\t\t\tthis.transaction.object.clock(),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Applies a discount to the payment intent.\n\t */\n\tapplyDiscount(intent: TransactionObjectArgument, discountInfo: DiscountInfo): void {\n\t\tconst config = this.haneulnsClient.config;\n\n\t\tif (discountInfo.isFreeClaim) {\n\t\t\tthis.transaction.moveCall({\n\t\t\t\ttarget: `${config.discountsPackage.packageId}::free_claims::free_claim`,\n\t\t\t\targuments: [\n\t\t\t\t\tthis.transaction.object(config.discountsPackage.discountHouseId),\n\t\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\t\tintent,\n\t\t\t\t\tthis.transaction.object(discountInfo.discountNft),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t});\n\t\t} else {\n\t\t\tthis.transaction.moveCall({\n\t\t\t\ttarget: `${config.discountsPackage.packageId}::discounts::apply_percentage_discount`,\n\t\t\t\targuments: [\n\t\t\t\t\tthis.transaction.object(config.discountsPackage.discountHouseId),\n\t\t\t\t\tintent,\n\t\t\t\t\tthis.transaction.object(config.haneulns),\n\t\t\t\t\tthis.transaction.object(discountInfo.discountNft),\n\t\t\t\t],\n\t\t\t\ttypeArguments: [discountInfo.type],\n\t\t\t});\n\t\t}\n\t}\n\n\t/**\n\t * Creates a subdomain.\n\t */\n\tcreateSubName({\n\t\tparentNft,\n\t\tname,\n\t\texpirationTimestampMs,\n\t\tallowChildCreation,\n\t\tallowTimeExtension,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\texpirationTimestampMs: number;\n\t\tallowChildCreation: boolean;\n\t\tallowTimeExtension: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tconst subNft = this.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.u64(expirationTimestampMs),\n\t\t\t\tthis.transaction.pure.bool(!!allowChildCreation),\n\t\t\t\tthis.transaction.pure.bool(!!allowTimeExtension),\n\t\t\t],\n\t\t});\n\n\t\treturn subNft;\n\t}\n\n\t/**\n\t * Builds the PTB to create a leaf subdomain.\n\t * Parent can be a `HaneulnsRegistration` or a `SubDomainRegistration` object.\n\t * Can be passed in as an ID or a TransactionArgument.\n\t */\n\tcreateLeafSubName({\n\t\tparentNft,\n\t\tname,\n\t\ttargetAddress,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\ttargetAddress: string;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::new_leaf`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::new_leaf`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.address(targetAddress),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Removes a leaf subname.\n\t */\n\tremoveLeafSubName({ parentNft, name }: { parentNft: TransactionObjectInput; name: string }) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!isSubName(name)) throw new Error('This can only be invoked for subnames');\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::remove_leaf`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::remove_leaf`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets the target address of an NFT.\n\t */\n\tsetTargetAddress({\n\t\tnft, // Can be string or argument\n\t\taddress,\n\t\tisSubname,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\taddress?: string;\n\t\tisSubname?: boolean;\n\t}) {\n\t\tif (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isSubname\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_target_address`\n\t\t\t\t: `${this.haneulnsClient.config.packageId}::controller::set_target_address`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure(bcs.option(bcs.Address).serialize(address).toBytes()),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets a default name for the user.\n\t */\n\tsetDefault(name: string) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.packageId}::controller::set_reverse_lookup`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Edits the setup of a subname.\n\t */\n\teditSetup({\n\t\tparentNft,\n\t\tname,\n\t\tallowChildCreation,\n\t\tallowTimeExtension,\n\t}: {\n\t\tparentNft: TransactionObjectInput;\n\t\tname: string;\n\t\tallowChildCreation: boolean;\n\t\tallowTimeExtension: boolean;\n\t}) {\n\t\tif (!isValidHaneulNSName(name)) throw new Error('Invalid HaneulNS name');\n\t\tconst isParentSubdomain = isNestedSubName(name);\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!isParentSubdomain && !this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\t\tif (isParentSubdomain && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isParentSubdomain\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::edit_setup`\n\t\t\t\t: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::edit_setup`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(parentNft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t\tthis.transaction.pure.string(normalizeHaneulNSName(name, 'dot')),\n\t\t\t\tthis.transaction.pure.bool(!!allowChildCreation),\n\t\t\t\tthis.transaction.pure.bool(!!allowTimeExtension),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Extends the expiration of a subname.\n\t */\n\textendExpiration({\n\t\tnft,\n\t\texpirationTimestampMs,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\texpirationTimestampMs: number;\n\t}) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (!this.haneulnsClient.config.subNamesPackageId)\n\t\t\tthrow new Error('Subnames package ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.subNamesPackageId}::subdomains::extend_expiration`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.u64(expirationTimestampMs),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Sets the user data of an NFT.\n\t */\n\tsetUserData({\n\t\tnft,\n\t\tvalue,\n\t\tkey,\n\t\tisSubname,\n\t}: {\n\t\tnft: TransactionObjectInput;\n\t\tvalue: string;\n\t\tkey: string;\n\t\tisSubname?: boolean;\n\t}) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\t\tif (isSubname && !this.haneulnsClient.config.tempSubdomainsProxyPackageId)\n\t\t\tthrow new Error('Subnames proxy package ID not found');\n\n\t\tif (!Object.values(ALLOWED_METADATA).some((x) => x === key)) throw new Error('Invalid key');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: isSubname\n\t\t\t\t? `${this.haneulnsClient.config.tempSubdomainsProxyPackageId}::subdomain_proxy::set_user_data`\n\t\t\t\t: `${this.haneulnsClient.config.packageId}::controller::set_user_data`,\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.pure.string(key),\n\t\t\t\tthis.transaction.pure.string(value),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Burns an expired NFT to collect storage rebates.\n\t */\n\tburnExpired({ nft, isSubname }: { nft: TransactionObjectInput; isSubname?: boolean }) {\n\t\tif (!this.haneulnsClient.config.haneulns) throw new Error('HaneulNS Object ID not found');\n\n\t\tthis.transaction.moveCall({\n\t\t\ttarget: `${this.haneulnsClient.config.packageId}::controller::${\n\t\t\t\tisSubname ? 'burn_expired_subname' : 'burn_expired'\n\t\t\t}`, // Update this\n\t\t\targuments: [\n\t\t\t\tthis.transaction.object(this.haneulnsClient.config.haneulns),\n\t\t\t\tthis.transaction.object(nft),\n\t\t\t\tthis.transaction.object(HANEUL_CLOCK_OBJECT_ID),\n\t\t\t],\n\t\t});\n\t}\n}\n"],
|
|
5
|
+
"mappings": "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",
|
|
6
|
+
"names": []
|
|
7
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { Transaction } from '@haneullabs/haneul/transactions';
|
|
2
|
+
export declare function isSubName(name: string): boolean;
|
|
3
|
+
/**
|
|
4
|
+
* Checks if a name is a nested subname.
|
|
5
|
+
* A nested subdomain is a subdomain that is a subdomain of another subdomain.
|
|
6
|
+
* @param name The name to check (e.g test.example.sub.haneul)
|
|
7
|
+
*/
|
|
8
|
+
export declare function isNestedSubName(name: string): boolean;
|
|
9
|
+
/**
|
|
10
|
+
* The years must be between 1 and 5.
|
|
11
|
+
*/
|
|
12
|
+
export declare function validateYears(years: number): void;
|
|
13
|
+
export declare function zeroCoin(tx: Transaction, type: string): import("@haneullabs/haneul/transactions").TransactionResult;
|
|
14
|
+
export declare function getConfigType(haneulnsPackageV1: string, innerType: string): string;
|
|
15
|
+
export declare function getDomainType(haneulnsPackageV1: string): string;
|
|
16
|
+
export declare function getPricelistConfigType(haneulnsPackageId: string): string;
|
|
17
|
+
export declare function getRenewalPricelistConfigType(haneulnsPackageId: string): string;
|
|
18
|
+
export declare function getCoinDiscountConfigType(paymentPackageId: string): string;
|