@haneullabs/haneul 2.4.0 → 2.5.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/dist/bcs/bcs.mjs +1 -1
- package/dist/bcs/bcs.mjs.map +1 -1
- package/dist/bcs/index.d.mts +4 -4
- package/dist/client/core-resolver.mjs +2 -2
- package/dist/client/core-resolver.mjs.map +1 -1
- package/dist/client/core.mjs +1 -1
- package/dist/client/core.mjs.map +1 -1
- package/dist/cryptography/keypair.d.mts +1 -1
- package/dist/cryptography/keypair.mjs +3 -3
- package/dist/cryptography/keypair.mjs.map +1 -1
- package/dist/cryptography/publickey.d.mts +1 -1
- package/dist/cryptography/publickey.mjs +2 -2
- package/dist/cryptography/publickey.mjs.map +1 -1
- package/dist/cryptography/signature.d.mts +6 -6
- package/dist/grpc/proto/haneul/rpc/v2/ledger_service.client.d.mts +4 -4
- package/dist/grpc/proto/haneul/rpc/v2/move_package_service.client.d.mts +4 -4
- package/dist/grpc/proto/haneul/rpc/v2/state_service.client.d.mts +4 -4
- package/dist/grpc/proto/haneul/rpc/v2/subscription_service.client.d.mts +4 -4
- package/dist/grpc/proto/haneul/rpc/v2/system_state.d.mts +2 -2
- package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs +1 -1
- package/dist/grpc/proto/haneul/rpc/v2/system_state.mjs.map +1 -1
- package/dist/grpc/proto/haneul/rpc/v2/transaction_execution_service.client.d.mts +4 -4
- package/dist/jsonRpc/client.d.mts +5 -5
- package/dist/jsonRpc/client.d.mts.map +1 -1
- package/dist/jsonRpc/client.mjs +56 -56
- package/dist/jsonRpc/client.mjs.map +1 -1
- package/dist/jsonRpc/core.mjs +6 -6
- package/dist/jsonRpc/core.mjs.map +1 -1
- package/dist/jsonRpc/index.d.mts +4 -4
- package/dist/jsonRpc/index.mjs +2 -2
- package/dist/jsonRpc/types/generated.d.mts +14 -14
- package/dist/jsonRpc/types/generated.d.mts.map +1 -1
- package/dist/jsonRpc/types/index.d.mts +2 -2
- package/dist/jsonRpc/types/params.d.mts +8 -8
- package/dist/jsonRpc/types/params.d.mts.map +1 -1
- package/dist/multisig/publickey.d.mts +1 -1
- package/dist/multisig/publickey.mjs +1 -1
- package/dist/multisig/publickey.mjs.map +1 -1
- package/dist/multisig/signer.mjs +2 -2
- package/dist/multisig/signer.mjs.map +1 -1
- package/dist/transactions/Commands.mjs +3 -3
- package/dist/transactions/Commands.mjs.map +1 -1
- package/dist/transactions/executor/caching.mjs +1 -1
- package/dist/transactions/executor/caching.mjs.map +1 -1
- package/dist/transactions/executor/parallel.mjs +3 -3
- package/dist/transactions/executor/parallel.mjs.map +1 -1
- package/dist/transactions/executor/serial.mjs +1 -1
- package/dist/transactions/executor/serial.mjs.map +1 -1
- package/dist/utils/haneul-types.d.mts +2 -2
- package/dist/utils/haneul-types.d.mts.map +1 -1
- package/dist/utils/haneul-types.mjs +2 -2
- package/dist/utils/haneul-types.mjs.map +1 -1
- package/dist/utils/index.d.mts +2 -2
- package/dist/utils/index.mjs +2 -2
- package/dist/verify/verify.mjs +1 -1
- package/dist/verify/verify.mjs.map +1 -1
- package/dist/zklogin/publickey.d.mts +1 -1
- package/dist/zklogin/publickey.d.mts.map +1 -1
- package/dist/zklogin/publickey.mjs +9 -9
- package/dist/zklogin/publickey.mjs.map +1 -1
- package/package.json +199 -199
- package/src/bcs/bcs.ts +1 -1
- package/src/client/core-resolver.ts +2 -2
- package/src/client/core.ts +1 -1
- package/src/cryptography/keypair.ts +3 -3
- package/src/cryptography/publickey.ts +2 -2
- package/src/grpc/proto/haneul/rpc/v2/system_state.ts +3 -3
- package/src/jsonRpc/client.ts +57 -57
- package/src/jsonRpc/core.ts +7 -7
- package/src/jsonRpc/index.ts +1 -1
- package/src/jsonRpc/types/generated.ts +13 -13
- package/src/jsonRpc/types/params.ts +7 -7
- package/src/multisig/publickey.ts +1 -1
- package/src/multisig/signer.ts +2 -2
- package/src/transactions/Commands.ts +3 -3
- package/src/transactions/executor/caching.ts +1 -1
- package/src/transactions/executor/parallel.ts +3 -3
- package/src/transactions/executor/serial.ts +1 -1
- package/src/utils/haneul-types.ts +1 -1
- package/src/utils/index.ts +1 -1
- package/src/verify/verify.ts +1 -1
- package/src/zklogin/publickey.ts +9 -9
package/dist/jsonRpc/client.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { normalizeHaneulNSName } from "../utils/haneulns.mjs";
|
|
2
2
|
import { isValidNamedPackage } from "../utils/move-registry.mjs";
|
|
3
|
-
import { isValidHaneulAddress, isValidHaneulObjectId, isValidTransactionDigest, normalizeHaneulAddress,
|
|
3
|
+
import { isValidHaneulAddress, isValidHaneulObjectId, isValidTransactionDigest, normalizeHaneulAddress, normalizeHaneulObjectId } from "../utils/haneul-types.mjs";
|
|
4
4
|
import { BaseClient } from "../client/client.mjs";
|
|
5
5
|
import { hasMvrName } from "../client/mvr.mjs";
|
|
6
6
|
import { JsonRpcHTTPTransport } from "./http-transport.mjs";
|
|
@@ -40,7 +40,7 @@ const COIN_RESERVATION_MAGIC = new Uint8Array([
|
|
|
40
40
|
function isCoinReservationDigest(digestBase58) {
|
|
41
41
|
return fromBase58(digestBase58).slice(12, 32).every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);
|
|
42
42
|
}
|
|
43
|
-
function
|
|
43
|
+
function isHaneulJsonRpcClient(client) {
|
|
44
44
|
return typeof client === "object" && client !== null && client[SUI_CLIENT_BRAND] === true;
|
|
45
45
|
}
|
|
46
46
|
var HaneulJsonRpcClient = class extends BaseClient {
|
|
@@ -75,7 +75,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
75
75
|
if (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) throw new Error("Invalid Haneul address");
|
|
76
76
|
if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
|
|
77
77
|
const result = await this.transport.request({
|
|
78
|
-
method: "
|
|
78
|
+
method: "haneulx_getCoins",
|
|
79
79
|
params: [
|
|
80
80
|
owner,
|
|
81
81
|
coinType,
|
|
@@ -95,7 +95,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
95
95
|
async getAllCoins(input) {
|
|
96
96
|
if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
|
|
97
97
|
const result = await this.transport.request({
|
|
98
|
-
method: "
|
|
98
|
+
method: "haneulx_getAllCoins",
|
|
99
99
|
params: [
|
|
100
100
|
input.owner,
|
|
101
101
|
input.cursor,
|
|
@@ -115,7 +115,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
115
115
|
if (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) throw new Error("Invalid Haneul address");
|
|
116
116
|
if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
|
|
117
117
|
return await this.transport.request({
|
|
118
|
-
method: "
|
|
118
|
+
method: "haneulx_getBalance",
|
|
119
119
|
params: [owner, coinType],
|
|
120
120
|
signal
|
|
121
121
|
});
|
|
@@ -126,7 +126,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
126
126
|
async getAllBalances(input) {
|
|
127
127
|
if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
|
|
128
128
|
return await this.transport.request({
|
|
129
|
-
method: "
|
|
129
|
+
method: "haneulx_getAllBalances",
|
|
130
130
|
params: [input.owner],
|
|
131
131
|
signal: input.signal
|
|
132
132
|
});
|
|
@@ -137,7 +137,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
137
137
|
async getCoinMetadata({ coinType, signal }) {
|
|
138
138
|
if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
|
|
139
139
|
return await this.transport.request({
|
|
140
|
-
method: "
|
|
140
|
+
method: "haneulx_getCoinMetadata",
|
|
141
141
|
params: [coinType],
|
|
142
142
|
signal
|
|
143
143
|
});
|
|
@@ -148,7 +148,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
148
148
|
async getTotalSupply({ coinType, signal }) {
|
|
149
149
|
if (coinType && hasMvrName(coinType)) coinType = (await this.core.mvr.resolveType({ type: coinType })).type;
|
|
150
150
|
return await this.transport.request({
|
|
151
|
-
method: "
|
|
151
|
+
method: "haneulx_getTotalSupply",
|
|
152
152
|
params: [coinType],
|
|
153
153
|
signal
|
|
154
154
|
});
|
|
@@ -171,7 +171,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
171
171
|
async getMoveFunctionArgTypes({ package: pkg, module, function: fn, signal }) {
|
|
172
172
|
if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
|
|
173
173
|
return await this.transport.request({
|
|
174
|
-
method: "
|
|
174
|
+
method: "haneul_getMoveFunctionArgTypes",
|
|
175
175
|
params: [
|
|
176
176
|
pkg,
|
|
177
177
|
module,
|
|
@@ -187,7 +187,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
187
187
|
async getNormalizedMoveModulesByPackage({ package: pkg, signal }) {
|
|
188
188
|
if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
|
|
189
189
|
return await this.transport.request({
|
|
190
|
-
method: "
|
|
190
|
+
method: "haneul_getNormalizedMoveModulesByPackage",
|
|
191
191
|
params: [pkg],
|
|
192
192
|
signal
|
|
193
193
|
});
|
|
@@ -198,7 +198,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
198
198
|
async getNormalizedMoveModule({ package: pkg, module, signal }) {
|
|
199
199
|
if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
|
|
200
200
|
return await this.transport.request({
|
|
201
|
-
method: "
|
|
201
|
+
method: "haneul_getNormalizedMoveModule",
|
|
202
202
|
params: [pkg, module],
|
|
203
203
|
signal
|
|
204
204
|
});
|
|
@@ -209,7 +209,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
209
209
|
async getNormalizedMoveFunction({ package: pkg, module, function: fn, signal }) {
|
|
210
210
|
if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
|
|
211
211
|
return await this.transport.request({
|
|
212
|
-
method: "
|
|
212
|
+
method: "haneul_getNormalizedMoveFunction",
|
|
213
213
|
params: [
|
|
214
214
|
pkg,
|
|
215
215
|
module,
|
|
@@ -224,7 +224,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
224
224
|
async getNormalizedMoveStruct({ package: pkg, module, struct, signal }) {
|
|
225
225
|
if (pkg && isValidNamedPackage(pkg)) pkg = (await this.core.mvr.resolvePackage({ package: pkg })).package;
|
|
226
226
|
return await this.transport.request({
|
|
227
|
-
method: "
|
|
227
|
+
method: "haneul_getNormalizedMoveStruct",
|
|
228
228
|
params: [
|
|
229
229
|
pkg,
|
|
230
230
|
module,
|
|
@@ -245,7 +245,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
245
245
|
};
|
|
246
246
|
else if (filter && "StructType" in filter && hasMvrName(filter.StructType)) filter.StructType = (await this.core.mvr.resolveType({ type: filter.StructType })).type;
|
|
247
247
|
return await this.transport.request({
|
|
248
|
-
method: "
|
|
248
|
+
method: "haneulx_getOwnedObjects",
|
|
249
249
|
params: [
|
|
250
250
|
input.owner,
|
|
251
251
|
{
|
|
@@ -262,16 +262,16 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
262
262
|
* Get details about an object
|
|
263
263
|
*/
|
|
264
264
|
async getObject(input) {
|
|
265
|
-
if (!input.id || !isValidHaneulObjectId(
|
|
265
|
+
if (!input.id || !isValidHaneulObjectId(normalizeHaneulObjectId(input.id))) throw new Error("Invalid Haneul Object id");
|
|
266
266
|
return await this.transport.request({
|
|
267
|
-
method: "
|
|
267
|
+
method: "haneul_getObject",
|
|
268
268
|
params: [input.id, input.options],
|
|
269
269
|
signal: input.signal
|
|
270
270
|
});
|
|
271
271
|
}
|
|
272
272
|
async tryGetPastObject(input) {
|
|
273
273
|
return await this.transport.request({
|
|
274
|
-
method: "
|
|
274
|
+
method: "haneul_tryGetPastObject",
|
|
275
275
|
params: [
|
|
276
276
|
input.id,
|
|
277
277
|
input.version,
|
|
@@ -285,11 +285,11 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
285
285
|
*/
|
|
286
286
|
async multiGetObjects(input) {
|
|
287
287
|
input.ids.forEach((id) => {
|
|
288
|
-
if (!id || !isValidHaneulObjectId(
|
|
288
|
+
if (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) throw new Error(`Invalid Haneul Object id ${id}`);
|
|
289
289
|
});
|
|
290
290
|
if (input.ids.length !== new Set(input.ids).size) throw new Error(`Duplicate object ids in batch call ${input.ids}`);
|
|
291
291
|
return await this.transport.request({
|
|
292
|
-
method: "
|
|
292
|
+
method: "haneul_multiGetObjects",
|
|
293
293
|
params: [input.ids, input.options],
|
|
294
294
|
signal: input.signal
|
|
295
295
|
});
|
|
@@ -303,7 +303,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
303
303
|
MoveFunction: { package: (await this.core.mvr.resolvePackage({ package: filter.MoveFunction.package })).package }
|
|
304
304
|
};
|
|
305
305
|
return await this.transport.request({
|
|
306
|
-
method: "
|
|
306
|
+
method: "haneulx_queryTransactionBlocks",
|
|
307
307
|
params: [
|
|
308
308
|
{
|
|
309
309
|
filter,
|
|
@@ -319,7 +319,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
319
319
|
async getTransactionBlock(input) {
|
|
320
320
|
if (!isValidTransactionDigest(input.digest)) throw new Error("Invalid Transaction digest");
|
|
321
321
|
return await this.transport.request({
|
|
322
|
-
method: "
|
|
322
|
+
method: "haneul_getTransactionBlock",
|
|
323
323
|
params: [input.digest, input.options],
|
|
324
324
|
signal: input.signal
|
|
325
325
|
});
|
|
@@ -330,14 +330,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
330
330
|
});
|
|
331
331
|
if (input.digests.length !== new Set(input.digests).size) throw new Error(`Duplicate digests in batch call ${input.digests}`);
|
|
332
332
|
return await this.transport.request({
|
|
333
|
-
method: "
|
|
333
|
+
method: "haneul_multiGetTransactionBlocks",
|
|
334
334
|
params: [input.digests, input.options],
|
|
335
335
|
signal: input.signal
|
|
336
336
|
});
|
|
337
337
|
}
|
|
338
338
|
async executeTransactionBlock({ transactionBlock, signature, options, signal }) {
|
|
339
339
|
return await this.transport.request({
|
|
340
|
-
method: "
|
|
340
|
+
method: "haneul_executeTransactionBlock",
|
|
341
341
|
params: [
|
|
342
342
|
typeof transactionBlock === "string" ? transactionBlock : toBase64(transactionBlock),
|
|
343
343
|
Array.isArray(signature) ? signature : [signature],
|
|
@@ -350,7 +350,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
350
350
|
let transactionBytes;
|
|
351
351
|
if (transaction instanceof Uint8Array) transactionBytes = transaction;
|
|
352
352
|
else {
|
|
353
|
-
transaction.setSenderIfNotSet(signer.
|
|
353
|
+
transaction.setSenderIfNotSet(signer.toHaneulAddress());
|
|
354
354
|
transactionBytes = await transaction.build({ client: this });
|
|
355
355
|
}
|
|
356
356
|
const { signature, bytes } = await signer.signTransaction(transactionBytes);
|
|
@@ -365,7 +365,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
365
365
|
*/
|
|
366
366
|
async getTotalTransactionBlocks({ signal } = {}) {
|
|
367
367
|
const resp = await this.transport.request({
|
|
368
|
-
method: "
|
|
368
|
+
method: "haneul_getTotalTransactionBlocks",
|
|
369
369
|
params: [],
|
|
370
370
|
signal
|
|
371
371
|
});
|
|
@@ -376,7 +376,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
376
376
|
*/
|
|
377
377
|
async getReferenceGasPrice({ signal } = {}) {
|
|
378
378
|
const resp = await this.transport.request({
|
|
379
|
-
method: "
|
|
379
|
+
method: "haneulx_getReferenceGasPrice",
|
|
380
380
|
params: [],
|
|
381
381
|
signal
|
|
382
382
|
});
|
|
@@ -388,7 +388,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
388
388
|
async getStakes(input) {
|
|
389
389
|
if (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) throw new Error("Invalid Haneul address");
|
|
390
390
|
return await this.transport.request({
|
|
391
|
-
method: "
|
|
391
|
+
method: "haneulx_getStakes",
|
|
392
392
|
params: [input.owner],
|
|
393
393
|
signal: input.signal
|
|
394
394
|
});
|
|
@@ -397,21 +397,21 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
397
397
|
* Return the delegated stakes queried by id.
|
|
398
398
|
*/
|
|
399
399
|
async getStakesByIds(input) {
|
|
400
|
-
input.
|
|
401
|
-
if (!id || !isValidHaneulObjectId(
|
|
400
|
+
input.stakedHaneulIds.forEach((id) => {
|
|
401
|
+
if (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) throw new Error(`Invalid Haneul Stake id ${id}`);
|
|
402
402
|
});
|
|
403
403
|
return await this.transport.request({
|
|
404
|
-
method: "
|
|
405
|
-
params: [input.
|
|
404
|
+
method: "haneulx_getStakesByIds",
|
|
405
|
+
params: [input.stakedHaneulIds],
|
|
406
406
|
signal: input.signal
|
|
407
407
|
});
|
|
408
408
|
}
|
|
409
409
|
/**
|
|
410
410
|
* Return the latest system state content.
|
|
411
411
|
*/
|
|
412
|
-
async
|
|
412
|
+
async getLatestHaneulSystemState({ signal } = {}) {
|
|
413
413
|
return await this.transport.request({
|
|
414
|
-
method: "
|
|
414
|
+
method: "haneulx_getLatestHaneulSystemState",
|
|
415
415
|
params: [],
|
|
416
416
|
signal
|
|
417
417
|
});
|
|
@@ -439,7 +439,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
439
439
|
}
|
|
440
440
|
};
|
|
441
441
|
return await this.transport.request({
|
|
442
|
-
method: "
|
|
442
|
+
method: "haneulx_queryEvents",
|
|
443
443
|
params: [
|
|
444
444
|
query,
|
|
445
445
|
cursor,
|
|
@@ -467,7 +467,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
467
467
|
else throw new Error("Unknown transaction block format.");
|
|
468
468
|
input.signal?.throwIfAborted();
|
|
469
469
|
return await this.transport.request({
|
|
470
|
-
method: "
|
|
470
|
+
method: "haneul_devInspectTransactionBlock",
|
|
471
471
|
params: [
|
|
472
472
|
input.sender,
|
|
473
473
|
devInspectTxBytes,
|
|
@@ -482,7 +482,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
482
482
|
*/
|
|
483
483
|
async dryRunTransactionBlock(input) {
|
|
484
484
|
return await this.transport.request({
|
|
485
|
-
method: "
|
|
485
|
+
method: "haneul_dryRunTransactionBlock",
|
|
486
486
|
params: [typeof input.transactionBlock === "string" ? input.transactionBlock : toBase64(input.transactionBlock)]
|
|
487
487
|
});
|
|
488
488
|
}
|
|
@@ -490,9 +490,9 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
490
490
|
* Return the list of dynamic field objects owned by an object
|
|
491
491
|
*/
|
|
492
492
|
async getDynamicFields(input) {
|
|
493
|
-
if (!input.parentId || !isValidHaneulObjectId(
|
|
493
|
+
if (!input.parentId || !isValidHaneulObjectId(normalizeHaneulObjectId(input.parentId))) throw new Error("Invalid Haneul Object id");
|
|
494
494
|
return await this.transport.request({
|
|
495
|
-
method: "
|
|
495
|
+
method: "haneulx_getDynamicFields",
|
|
496
496
|
params: [
|
|
497
497
|
input.parentId,
|
|
498
498
|
input.cursor,
|
|
@@ -506,7 +506,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
506
506
|
*/
|
|
507
507
|
async getDynamicFieldObject(input) {
|
|
508
508
|
return await this.transport.request({
|
|
509
|
-
method: "
|
|
509
|
+
method: "haneulx_getDynamicFieldObject",
|
|
510
510
|
params: [input.parentId, input.name],
|
|
511
511
|
signal: input.signal
|
|
512
512
|
});
|
|
@@ -516,7 +516,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
516
516
|
*/
|
|
517
517
|
async getLatestCheckpointSequenceNumber({ signal } = {}) {
|
|
518
518
|
const resp = await this.transport.request({
|
|
519
|
-
method: "
|
|
519
|
+
method: "haneul_getLatestCheckpointSequenceNumber",
|
|
520
520
|
params: [],
|
|
521
521
|
signal
|
|
522
522
|
});
|
|
@@ -527,7 +527,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
527
527
|
*/
|
|
528
528
|
async getCheckpoint(input) {
|
|
529
529
|
return await this.transport.request({
|
|
530
|
-
method: "
|
|
530
|
+
method: "haneul_getCheckpoint",
|
|
531
531
|
params: [input.id],
|
|
532
532
|
signal: input.signal
|
|
533
533
|
});
|
|
@@ -537,7 +537,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
537
537
|
*/
|
|
538
538
|
async getCheckpoints(input) {
|
|
539
539
|
return await this.transport.request({
|
|
540
|
-
method: "
|
|
540
|
+
method: "haneul_getCheckpoints",
|
|
541
541
|
params: [
|
|
542
542
|
input.cursor,
|
|
543
543
|
input?.limit,
|
|
@@ -551,28 +551,28 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
551
551
|
*/
|
|
552
552
|
async getCommitteeInfo(input) {
|
|
553
553
|
return await this.transport.request({
|
|
554
|
-
method: "
|
|
554
|
+
method: "haneulx_getCommitteeInfo",
|
|
555
555
|
params: [input?.epoch],
|
|
556
556
|
signal: input?.signal
|
|
557
557
|
});
|
|
558
558
|
}
|
|
559
559
|
async getNetworkMetrics({ signal } = {}) {
|
|
560
560
|
return await this.transport.request({
|
|
561
|
-
method: "
|
|
561
|
+
method: "haneulx_getNetworkMetrics",
|
|
562
562
|
params: [],
|
|
563
563
|
signal
|
|
564
564
|
});
|
|
565
565
|
}
|
|
566
566
|
async getAddressMetrics({ signal } = {}) {
|
|
567
567
|
return await this.transport.request({
|
|
568
|
-
method: "
|
|
568
|
+
method: "haneulx_getLatestAddressMetrics",
|
|
569
569
|
params: [],
|
|
570
570
|
signal
|
|
571
571
|
});
|
|
572
572
|
}
|
|
573
573
|
async getEpochMetrics(input) {
|
|
574
574
|
return await this.transport.request({
|
|
575
|
-
method: "
|
|
575
|
+
method: "haneulx_getEpochMetrics",
|
|
576
576
|
params: [
|
|
577
577
|
input?.cursor,
|
|
578
578
|
input?.limit,
|
|
@@ -583,7 +583,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
583
583
|
}
|
|
584
584
|
async getAllEpochAddressMetrics(input) {
|
|
585
585
|
return await this.transport.request({
|
|
586
|
-
method: "
|
|
586
|
+
method: "haneulx_getAllEpochAddressMetrics",
|
|
587
587
|
params: [input?.descendingOrder],
|
|
588
588
|
signal: input?.signal
|
|
589
589
|
});
|
|
@@ -593,7 +593,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
593
593
|
*/
|
|
594
594
|
async getEpochs(input) {
|
|
595
595
|
return await this.transport.request({
|
|
596
|
-
method: "
|
|
596
|
+
method: "haneulx_getEpochs",
|
|
597
597
|
params: [
|
|
598
598
|
input?.cursor,
|
|
599
599
|
input?.limit,
|
|
@@ -607,7 +607,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
607
607
|
*/
|
|
608
608
|
async getMoveCallMetrics({ signal } = {}) {
|
|
609
609
|
return await this.transport.request({
|
|
610
|
-
method: "
|
|
610
|
+
method: "haneulx_getMoveCallMetrics",
|
|
611
611
|
params: [],
|
|
612
612
|
signal
|
|
613
613
|
});
|
|
@@ -617,7 +617,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
617
617
|
*/
|
|
618
618
|
async getCurrentEpoch({ signal } = {}) {
|
|
619
619
|
return await this.transport.request({
|
|
620
|
-
method: "
|
|
620
|
+
method: "haneulx_getCurrentEpoch",
|
|
621
621
|
params: [],
|
|
622
622
|
signal
|
|
623
623
|
});
|
|
@@ -627,7 +627,7 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
627
627
|
*/
|
|
628
628
|
async getValidatorsApy({ signal } = {}) {
|
|
629
629
|
return await this.transport.request({
|
|
630
|
-
method: "
|
|
630
|
+
method: "haneulx_getValidatorsApy",
|
|
631
631
|
params: [],
|
|
632
632
|
signal
|
|
633
633
|
});
|
|
@@ -640,14 +640,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
640
640
|
}
|
|
641
641
|
async resolveNameServiceAddress(input) {
|
|
642
642
|
return await this.transport.request({
|
|
643
|
-
method: "
|
|
643
|
+
method: "haneulx_resolveNameServiceAddress",
|
|
644
644
|
params: [input.name],
|
|
645
645
|
signal: input.signal
|
|
646
646
|
});
|
|
647
647
|
}
|
|
648
648
|
async resolveNameServiceNames({ format = "dot", ...input }) {
|
|
649
649
|
const { nextCursor, hasNextPage, data } = await this.transport.request({
|
|
650
|
-
method: "
|
|
650
|
+
method: "haneulx_resolveNameServiceNames",
|
|
651
651
|
params: [
|
|
652
652
|
input.address,
|
|
653
653
|
input.cursor,
|
|
@@ -663,14 +663,14 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
663
663
|
}
|
|
664
664
|
async getProtocolConfig(input) {
|
|
665
665
|
return await this.transport.request({
|
|
666
|
-
method: "
|
|
666
|
+
method: "haneul_getProtocolConfig",
|
|
667
667
|
params: [input?.version],
|
|
668
668
|
signal: input?.signal
|
|
669
669
|
});
|
|
670
670
|
}
|
|
671
671
|
async verifyZkLoginSignature(input) {
|
|
672
672
|
return await this.transport.request({
|
|
673
|
-
method: "
|
|
673
|
+
method: "haneul_verifyZkLoginSignature",
|
|
674
674
|
params: [
|
|
675
675
|
input.bytes,
|
|
676
676
|
input.signature,
|
|
@@ -706,5 +706,5 @@ var HaneulJsonRpcClient = class extends BaseClient {
|
|
|
706
706
|
};
|
|
707
707
|
|
|
708
708
|
//#endregion
|
|
709
|
-
export { HaneulJsonRpcClient,
|
|
709
|
+
export { HaneulJsonRpcClient, isHaneulJsonRpcClient };
|
|
710
710
|
//# sourceMappingURL=client.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.mjs","names":[],"sources":["../../src/jsonRpc/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport type { Signer } from '../cryptography/index.js';\nimport { BaseClient } from '../client/client.js';\nimport type { HaneulClientTypes } from '../client/types.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport { isTransaction } from '../transactions/Transaction.js';\nimport {\n\tisValidHaneulAddress,\n\tisValidHaneulObjectId,\n\tisValidTransactionDigest,\n\tnormalizeHaneulAddress,\n\tnormalizeSuiObjectId,\n} from '../utils/haneul-types.js';\nimport { normalizeHaneulNSName } from '../utils/haneulns.js';\nimport { JsonRpcHTTPTransport } from './http-transport.js';\nimport type { JsonRpcTransport } from './http-transport.js';\nimport type {\n\tAddressMetrics,\n\tAllEpochsAddressMetrics,\n\tCheckpoint,\n\tCheckpointPage,\n\tCoinBalance,\n\tCoinMetadata,\n\tCoinSupply,\n\tCommitteeInfo,\n\tDelegatedStake,\n\tDevInspectResults,\n\tDevInspectTransactionBlockParams,\n\tDryRunTransactionBlockParams,\n\tDryRunTransactionBlockResponse,\n\tDynamicFieldPage,\n\tEpochInfo,\n\tEpochMetricsPage,\n\tEpochPage,\n\tExecuteTransactionBlockParams,\n\tGetAllBalancesParams,\n\tGetAllCoinsParams,\n\tGetBalanceParams,\n\tGetCheckpointParams,\n\tGetCheckpointsParams,\n\tGetCoinMetadataParams,\n\tGetCoinsParams,\n\tGetCommitteeInfoParams,\n\tGetDynamicFieldObjectParams,\n\tGetDynamicFieldsParams,\n\tGetLatestCheckpointSequenceNumberParams,\n\tGetLatestSuiSystemStateParams,\n\tGetMoveFunctionArgTypesParams,\n\tGetNormalizedMoveFunctionParams,\n\tGetNormalizedMoveModuleParams,\n\tGetNormalizedMoveModulesByPackageParams,\n\tGetNormalizedMoveStructParams,\n\tGetObjectParams,\n\tGetOwnedObjectsParams,\n\tGetProtocolConfigParams,\n\tGetReferenceGasPriceParams,\n\tGetStakesByIdsParams,\n\tGetStakesParams,\n\tGetTotalSupplyParams,\n\tGetTransactionBlockParams,\n\tMoveCallMetrics,\n\tMultiGetObjectsParams,\n\tMultiGetTransactionBlocksParams,\n\tNetworkMetrics,\n\tObjectRead,\n\tOrder,\n\tPaginatedCoins,\n\tPaginatedEvents,\n\tPaginatedObjectsResponse,\n\tPaginatedTransactionResponse,\n\tProtocolConfig,\n\tQueryEventsParams,\n\tQueryTransactionBlocksParams,\n\tResolvedNameServiceNames,\n\tResolveNameServiceAddressParams,\n\tResolveNameServiceNamesParams,\n\tHaneulMoveFunctionArgType,\n\tHaneulMoveNormalizedFunction,\n\tHaneulMoveNormalizedModule,\n\tHaneulMoveNormalizedModules,\n\tHaneulMoveNormalizedStruct,\n\tHaneulObjectResponse,\n\tHaneulObjectResponseQuery,\n\tHaneulSystemStateSummary,\n\tHaneulTransactionBlockResponse,\n\tHaneulTransactionBlockResponseQuery,\n\tTryGetPastObjectParams,\n\tValidatorsApy,\n\tVerifyZkLoginSignatureParams,\n\tZkLoginVerifyResult,\n} from './types/index.js';\nimport { isValidNamedPackage } from '../utils/move-registry.js';\nimport { hasMvrName } from '../client/mvr.js';\nimport { JSONRpcCoreClient } from './core.js';\n\nexport interface PaginationArguments<Cursor> {\n\t/** Optional paging cursor */\n\tcursor?: Cursor;\n\t/** Maximum item returned per page */\n\tlimit?: number | null;\n}\n\nexport interface OrderArguments {\n\torder?: Order | null;\n}\n\n/**\n * Configuration options for the HaneulJsonRpcClient\n * You must provide either a `url` or a `transport`\n */\nexport type HaneulJsonRpcClientOptions = NetworkOrTransport & {\n\tnetwork: HaneulClientTypes.Network;\n\tmvr?: HaneulClientTypes.MvrOptions;\n};\n\ntype NetworkOrTransport =\n\t| {\n\t\t\turl: string;\n\t\t\ttransport?: never;\n\t }\n\t| {\n\t\t\ttransport: JsonRpcTransport;\n\t\t\turl?: never;\n\t };\n\nconst SUI_CLIENT_BRAND = Symbol.for('@haneullabs/HaneulJsonRpcClient') as never;\n\n// Magic number used to identify fake address balance coins (last 20 bytes of the digest)\n// See: haneul/crate./haneul-types/src/coin_reservation.rs\nconst COIN_RESERVATION_MAGIC = new Uint8Array([\n\t0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,\n\t0xac, 0xac, 0xac, 0xac,\n]);\n\n/**\n * Checks if a digest indicates a fake address balance coin.\n * These \"coins\" are created by the JSON RPC to represent address balances\n * and should be filtered out from coin listings.\n */\nfunction isCoinReservationDigest(digestBase58: string): boolean {\n\tconst digestBytes = fromBase58(digestBase58);\n\t// Check if the last 20 bytes match the magic number\n\tconst last20Bytes = digestBytes.slice(12, 32);\n\treturn last20Bytes.every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);\n}\n\nexport function isSuiJsonRpcClient(client: unknown): client is HaneulJsonRpcClient {\n\treturn (\n\t\ttypeof client === 'object' && client !== null && (client as any)[SUI_CLIENT_BRAND] === true\n\t);\n}\n\nexport class HaneulJsonRpcClient extends BaseClient {\n\tcore: JSONRpcCoreClient;\n\tjsonRpc = this;\n\tprotected transport: JsonRpcTransport;\n\n\tget [SUI_CLIENT_BRAND]() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Establish a connection to a Haneul RPC endpoint\n\t *\n\t * @param options configuration options for the API Client\n\t */\n\tconstructor(options: HaneulJsonRpcClientOptions) {\n\t\tsuper({ network: options.network });\n\t\tthis.transport = options.transport ?? new JsonRpcHTTPTransport({ url: options.url });\n\t\tthis.core = new JSONRpcCoreClient({\n\t\t\tjsonRpcClient: this,\n\t\t\tmvr: options.mvr,\n\t\t});\n\t}\n\n\tasync getRpcApiVersion({ signal }: { signal?: AbortSignal } = {}): Promise<string | undefined> {\n\t\tconst resp = await this.transport.request<{ info: { version: string } }>({\n\t\t\tmethod: 'rpc.discover',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn resp.info.version;\n\t}\n\n\t/**\n\t * Get all Coin<`coin_type`> objects owned by an address.\n\t */\n\tasync getCoins({\n\t\tcoinType,\n\t\towner,\n\t\tcursor,\n\t\tlimit,\n\t\tsignal,\n\t}: GetCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'suix_getCoins',\n\t\t\tparams: [owner, coinType, cursor, limit],\n\t\t\tsignal: signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get all Coin objects owned by an address.\n\t */\n\tasync getAllCoins(input: GetAllCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'suix_getAllCoins',\n\t\t\tparams: [input.owner, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get the total coin balance for one coin type, owned by the address owner.\n\t */\n\tasync getBalance({ owner, coinType, signal }: GetBalanceParams): Promise<CoinBalance> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getBalance',\n\t\t\tparams: [owner, coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the total coin balance for all coin types, owned by the address owner.\n\t */\n\tasync getAllBalances(input: GetAllBalancesParams): Promise<CoinBalance[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getAllBalances',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch CoinMetadata for a given coin type\n\t */\n\tasync getCoinMetadata({ coinType, signal }: GetCoinMetadataParams): Promise<CoinMetadata | null> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCoinMetadata',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch total supply for a coin\n\t */\n\tasync getTotalSupply({ coinType, signal }: GetTotalSupplyParams): Promise<CoinSupply> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getTotalSupply',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Invoke any RPC method\n\t * @param method the method to be invoked\n\t * @param args the arguments to be passed to the RPC request\n\t */\n\tasync call<T = unknown>(\n\t\tmethod: string,\n\t\tparams: unknown[],\n\t\t{ signal }: { signal?: AbortSignal } = {},\n\t): Promise<T> {\n\t\treturn await this.transport.request({ method, params, signal });\n\t}\n\n\t/**\n\t * Get Move function argument types like read, write and full access\n\t */\n\tasync getMoveFunctionArgTypes({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetMoveFunctionArgTypesParams): Promise<HaneulMoveFunctionArgType[]> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getMoveFunctionArgTypes',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a map from module name to\n\t * structured representations of Move modules\n\t */\n\tasync getNormalizedMoveModulesByPackage({\n\t\tpackage: pkg,\n\t\tsignal,\n\t}: GetNormalizedMoveModulesByPackageParams): Promise<HaneulMoveNormalizedModules> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveModulesByPackage',\n\t\t\tparams: [pkg],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move module\n\t */\n\tasync getNormalizedMoveModule({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tsignal,\n\t}: GetNormalizedMoveModuleParams): Promise<HaneulMoveNormalizedModule> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveModule',\n\t\t\tparams: [pkg, module],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move function\n\t */\n\tasync getNormalizedMoveFunction({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetNormalizedMoveFunctionParams): Promise<HaneulMoveNormalizedFunction> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveFunction',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move struct\n\t */\n\tasync getNormalizedMoveStruct({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tstruct,\n\t\tsignal,\n\t}: GetNormalizedMoveStructParams): Promise<HaneulMoveNormalizedStruct> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getNormalizedMoveStruct',\n\t\t\tparams: [pkg, module, struct],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get all objects owned by an address\n\t */\n\tasync getOwnedObjects(input: GetOwnedObjectsParams): Promise<PaginatedObjectsResponse> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst filter = input.filter\n\t\t\t? {\n\t\t\t\t\t...input.filter,\n\t\t\t\t}\n\t\t\t: undefined;\n\n\t\tif (filter && 'MoveModule' in filter && isValidNamedPackage(filter.MoveModule.package)) {\n\t\t\tfilter.MoveModule = {\n\t\t\t\tmodule: filter.MoveModule.module,\n\t\t\t\tpackage: (\n\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\tpackage: filter.MoveModule.package,\n\t\t\t\t\t})\n\t\t\t\t).package,\n\t\t\t};\n\t\t} else if (filter && 'StructType' in filter && hasMvrName(filter.StructType)) {\n\t\t\tfilter.StructType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: filter.StructType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getOwnedObjects',\n\t\t\tparams: [\n\t\t\t\tinput.owner,\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions: input.options,\n\t\t\t\t} as HaneulObjectResponseQuery,\n\t\t\t\tinput.cursor,\n\t\t\t\tinput.limit,\n\t\t\t],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get details about an object\n\t */\n\tasync getObject(input: GetObjectParams): Promise<HaneulObjectResponse> {\n\t\tif (!input.id || !isValidHaneulObjectId(normalizeSuiObjectId(input.id))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getObject',\n\t\t\tparams: [input.id, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync tryGetPastObject(input: TryGetPastObjectParams): Promise<ObjectRead> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_tryGetPastObject',\n\t\t\tparams: [input.id, input.version, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Batch get details about a list of objects. If any of the object ids are duplicates the call will fail\n\t */\n\tasync multiGetObjects(input: MultiGetObjectsParams): Promise<HaneulObjectResponse[]> {\n\t\tinput.ids.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Object id ${id}`);\n\t\t\t}\n\t\t});\n\t\tconst hasDuplicates = input.ids.length !== new Set(input.ids).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate object ids in batch call ${input.ids}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_multiGetObjects',\n\t\t\tparams: [input.ids, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get transaction blocks for a given query criteria\n\t */\n\tasync queryTransactionBlocks({\n\t\tfilter,\n\t\toptions,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryTransactionBlocksParams): Promise<PaginatedTransactionResponse> {\n\t\tif (filter && 'MoveFunction' in filter && isValidNamedPackage(filter.MoveFunction.package)) {\n\t\t\tfilter = {\n\t\t\t\t...filter,\n\t\t\t\tMoveFunction: {\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: filter.MoveFunction.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_queryTransactionBlocks',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions,\n\t\t\t\t} as HaneulTransactionBlockResponseQuery,\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t\t(order || 'descending') === 'descending',\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getTransactionBlock(\n\t\tinput: GetTransactionBlockParams,\n\t): Promise<HaneulTransactionBlockResponse> {\n\t\tif (!isValidTransactionDigest(input.digest)) {\n\t\t\tthrow new Error('Invalid Transaction digest');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getTransactionBlock',\n\t\t\tparams: [input.digest, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync multiGetTransactionBlocks(\n\t\tinput: MultiGetTransactionBlocksParams,\n\t): Promise<HaneulTransactionBlockResponse[]> {\n\t\tinput.digests.forEach((d) => {\n\t\t\tif (!isValidTransactionDigest(d)) {\n\t\t\t\tthrow new Error(`Invalid Transaction digest ${d}`);\n\t\t\t}\n\t\t});\n\n\t\tconst hasDuplicates = input.digests.length !== new Set(input.digests).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate digests in batch call ${input.digests}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_multiGetTransactionBlocks',\n\t\t\tparams: [input.digests, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync executeTransactionBlock({\n\t\ttransactionBlock,\n\t\tsignature,\n\t\toptions,\n\t\tsignal,\n\t}: ExecuteTransactionBlockParams): Promise<HaneulTransactionBlockResponse> {\n\t\tconst result: HaneulTransactionBlockResponse = await this.transport.request({\n\t\t\tmethod: 'sui_executeTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof transactionBlock === 'string' ? transactionBlock : toBase64(transactionBlock),\n\t\t\t\tArray.isArray(signature) ? signature : [signature],\n\t\t\t\toptions,\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tsigner,\n\t\t...input\n\t}: {\n\t\ttransaction: Uint8Array | Transaction;\n\t\tsigner: Signer;\n\t} & Omit<\n\t\tExecuteTransactionBlockParams,\n\t\t'transactionBlock' | 'signature'\n\t>): Promise<HaneulTransactionBlockResponse> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toSuiAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature, bytes } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransactionBlock({\n\t\t\ttransactionBlock: bytes,\n\t\t\tsignature,\n\t\t\t...input,\n\t\t});\n\t}\n\n\t/**\n\t * Get total number of transactions\n\t */\n\n\tasync getTotalTransactionBlocks({ signal }: { signal?: AbortSignal } = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'sui_getTotalTransactionBlocks',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Getting the reference gas price for the network\n\t */\n\tasync getReferenceGasPrice({ signal }: GetReferenceGasPriceParams = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'suix_getReferenceGasPrice',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Return the delegated stakes for an address\n\t */\n\tasync getStakes(input: GetStakesParams): Promise<DelegatedStake[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getStakes',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the delegated stakes queried by id.\n\t */\n\tasync getStakesByIds(input: GetStakesByIdsParams): Promise<DelegatedStake[]> {\n\t\tinput.stakedSuiIds.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeSuiObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Stake id ${id}`);\n\t\t\t}\n\t\t});\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getStakesByIds',\n\t\t\tparams: [input.stakedSuiIds],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the latest system state content.\n\t */\n\tasync getLatestSuiSystemState({\n\t\tsignal,\n\t}: GetLatestSuiSystemStateParams = {}): Promise<HaneulSystemStateSummary> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getLatestSuiSystemState',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Get events for a given query criteria\n\t */\n\tasync queryEvents({\n\t\tquery,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryEventsParams): Promise<PaginatedEvents> {\n\t\tif (query && 'MoveEventType' in query && hasMvrName(query.MoveEventType)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventType: (\n\t\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\t\ttype: query.MoveEventType,\n\t\t\t\t\t})\n\t\t\t\t).type,\n\t\t\t};\n\t\t}\n\n\t\tif (query && 'MoveEventModule' in query && isValidNamedPackage(query.MoveEventModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventModule: {\n\t\t\t\t\tmodule: query.MoveEventModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveEventModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif ('MoveModule' in query && isValidNamedPackage(query.MoveModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveModule: {\n\t\t\t\t\tmodule: query.MoveModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_queryEvents',\n\t\t\tparams: [query, cursor, limit, (order || 'descending') === 'descending'],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Runs the transaction block in dev-inspect mode. Which allows for nearly any\n\t * transaction (or Move call) with any arguments. Detailed results are\n\t * provided, including both the transaction effects and any return values.\n\t */\n\tasync devInspectTransactionBlock(\n\t\tinput: DevInspectTransactionBlockParams,\n\t): Promise<DevInspectResults> {\n\t\tlet devInspectTxBytes;\n\t\tif (isTransaction(input.transactionBlock)) {\n\t\t\tinput.transactionBlock.setSenderIfNotSet(input.sender);\n\t\t\tdevInspectTxBytes = toBase64(\n\t\t\t\tawait input.transactionBlock.build({\n\t\t\t\t\tclient: this,\n\t\t\t\t\tonlyTransactionKind: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else if (typeof input.transactionBlock === 'string') {\n\t\t\tdevInspectTxBytes = input.transactionBlock;\n\t\t} else if (input.transactionBlock instanceof Uint8Array) {\n\t\t\tdevInspectTxBytes = toBase64(input.transactionBlock);\n\t\t} else {\n\t\t\tthrow new Error('Unknown transaction block format.');\n\t\t}\n\n\t\tinput.signal?.throwIfAborted();\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_devInspectTransactionBlock',\n\t\t\tparams: [input.sender, devInspectTxBytes, input.gasPrice?.toString(), input.epoch],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Dry run a transaction block and return the result.\n\t */\n\tasync dryRunTransactionBlock(\n\t\tinput: DryRunTransactionBlockParams,\n\t): Promise<DryRunTransactionBlockResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_dryRunTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof input.transactionBlock === 'string'\n\t\t\t\t\t? input.transactionBlock\n\t\t\t\t\t: toBase64(input.transactionBlock),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Return the list of dynamic field objects owned by an object\n\t */\n\tasync getDynamicFields(input: GetDynamicFieldsParams): Promise<DynamicFieldPage> {\n\t\tif (!input.parentId || !isValidHaneulObjectId(normalizeSuiObjectId(input.parentId))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getDynamicFields',\n\t\t\tparams: [input.parentId, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the dynamic field object information for a specified object\n\t */\n\tasync getDynamicFieldObject(input: GetDynamicFieldObjectParams): Promise<HaneulObjectResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getDynamicFieldObject',\n\t\t\tparams: [input.parentId, input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the sequence number of the latest checkpoint that has been executed\n\t */\n\tasync getLatestCheckpointSequenceNumber({\n\t\tsignal,\n\t}: GetLatestCheckpointSequenceNumberParams = {}): Promise<string> {\n\t\tconst resp = await this.transport.request({\n\t\t\tmethod: 'sui_getLatestCheckpointSequenceNumber',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn String(resp);\n\t}\n\n\t/**\n\t * Returns information about a given checkpoint\n\t */\n\tasync getCheckpoint(input: GetCheckpointParams): Promise<Checkpoint> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getCheckpoint',\n\t\t\tparams: [input.id],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns historical checkpoints paginated\n\t */\n\tasync getCheckpoints(\n\t\tinput: PaginationArguments<CheckpointPage['nextCursor']> & GetCheckpointsParams,\n\t): Promise<CheckpointPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getCheckpoints',\n\t\t\tparams: [input.cursor, input?.limit, input.descendingOrder],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCommitteeInfo(input?: GetCommitteeInfoParams): Promise<CommitteeInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCommitteeInfo',\n\t\t\tparams: [input?.epoch],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getNetworkMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<NetworkMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getNetworkMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getAddressMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<AddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getLatestAddressMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getEpochMetrics(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochMetricsPage['nextCursor']>,\n\t): Promise<EpochMetricsPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getEpochMetrics',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getAllEpochAddressMetrics(input?: {\n\t\tdescendingOrder?: boolean;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AllEpochsAddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getAllEpochAddressMetrics',\n\t\t\tparams: [input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getEpochs(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochPage['nextCursor']>,\n\t): Promise<EpochPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getEpochs',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns list of top move calls by usage\n\t */\n\tasync getMoveCallMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<MoveCallMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getMoveCallMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCurrentEpoch({ signal }: { signal?: AbortSignal } = {}): Promise<EpochInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getCurrentEpoch',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the Validators APYs\n\t */\n\tasync getValidatorsApy({ signal }: { signal?: AbortSignal } = {}): Promise<ValidatorsApy> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_getValidatorsApy',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t// TODO: Migrate this to `sui_getChainIdentifier` once it is widely available.\n\tasync getChainIdentifier({ signal }: { signal?: AbortSignal } = {}): Promise<string> {\n\t\tconst checkpoint = await this.getCheckpoint({ id: '0', signal });\n\t\tconst bytes = fromBase58(checkpoint.digest);\n\t\treturn toHex(bytes.slice(0, 4));\n\t}\n\n\tasync resolveNameServiceAddress(input: ResolveNameServiceAddressParams): Promise<string | null> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'suix_resolveNameServiceAddress',\n\t\t\tparams: [input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync resolveNameServiceNames({\n\t\tformat = 'dot',\n\t\t...input\n\t}: ResolveNameServiceNamesParams & {\n\t\tformat?: 'at' | 'dot';\n\t}): Promise<ResolvedNameServiceNames> {\n\t\tconst { nextCursor, hasNextPage, data }: ResolvedNameServiceNames =\n\t\t\tawait this.transport.request({\n\t\t\t\tmethod: 'suix_resolveNameServiceNames',\n\t\t\t\tparams: [input.address, input.cursor, input.limit],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\n\t\treturn {\n\t\t\thasNextPage,\n\t\t\tnextCursor,\n\t\t\tdata: data.map((name) => normalizeHaneulNSName(name, format)),\n\t\t};\n\t}\n\n\tasync getProtocolConfig(input?: GetProtocolConfigParams): Promise<ProtocolConfig> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_getProtocolConfig',\n\t\t\tparams: [input?.version],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync verifyZkLoginSignature(input: VerifyZkLoginSignatureParams): Promise<ZkLoginVerifyResult> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'sui_verifyZkLoginSignature',\n\t\t\tparams: [input.bytes, input.signature, input.intentScope, input.author],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Wait for a transaction block result to be available over the API.\n\t * This can be used in conjunction with `executeTransactionBlock` to wait for the transaction to\n\t * be available via the API.\n\t * This currently polls the `getTransactionBlock` API to check for the transaction.\n\t */\n\tasync waitForTransaction({\n\t\tsignal,\n\t\ttimeout = 60 * 1000,\n\t\tpollInterval = 2 * 1000,\n\t\t...input\n\t}: {\n\t\t/** An optional abort signal that can be used to cancel */\n\t\tsignal?: AbortSignal;\n\t\t/** The amount of time to wait for a transaction block. Defaults to one minute. */\n\t\ttimeout?: number;\n\t\t/** The amount of time to wait between checks for the transaction block. Defaults to 2 seconds. */\n\t\tpollInterval?: number;\n\t} & Parameters<\n\t\tHaneulJsonRpcClient['getTransactionBlock']\n\t>[0]): Promise<HaneulTransactionBlockResponse> {\n\t\tconst timeoutSignal = AbortSignal.timeout(timeout);\n\t\tconst timeoutPromise = new Promise((_, reject) => {\n\t\t\ttimeoutSignal.addEventListener('abort', () => reject(timeoutSignal.reason));\n\t\t});\n\n\t\ttimeoutPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (!timeoutSignal.aborted) {\n\t\t\tsignal?.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransactionBlock(input);\n\t\t\t} catch {\n\t\t\t\t// Wait for either the next poll interval, or the timeout.\n\t\t\t\tawait Promise.race([\n\t\t\t\t\tnew Promise((resolve) => setTimeout(resolve, pollInterval)),\n\t\t\t\t\ttimeoutPromise,\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\n\t\ttimeoutSignal.throwIfAborted();\n\n\t\t// This should never happen, because the above case should always throw, but just adding it in the event that something goes horribly wrong.\n\t\tthrow new Error('Unexpected error while waiting for transaction block.');\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.mjs","names":[],"sources":["../../src/jsonRpc/client.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\nimport { fromBase58, toBase64, toHex } from '@haneullabs/bcs';\n\nimport type { Signer } from '../cryptography/index.js';\nimport { BaseClient } from '../client/client.js';\nimport type { HaneulClientTypes } from '../client/types.js';\nimport type { Transaction } from '../transactions/Transaction.js';\nimport { isTransaction } from '../transactions/Transaction.js';\nimport {\n\tisValidHaneulAddress,\n\tisValidHaneulObjectId,\n\tisValidTransactionDigest,\n\tnormalizeHaneulAddress,\n\tnormalizeHaneulObjectId,\n} from '../utils/haneul-types.js';\nimport { normalizeHaneulNSName } from '../utils/haneulns.js';\nimport { JsonRpcHTTPTransport } from './http-transport.js';\nimport type { JsonRpcTransport } from './http-transport.js';\nimport type {\n\tAddressMetrics,\n\tAllEpochsAddressMetrics,\n\tCheckpoint,\n\tCheckpointPage,\n\tCoinBalance,\n\tCoinMetadata,\n\tCoinSupply,\n\tCommitteeInfo,\n\tDelegatedStake,\n\tDevInspectResults,\n\tDevInspectTransactionBlockParams,\n\tDryRunTransactionBlockParams,\n\tDryRunTransactionBlockResponse,\n\tDynamicFieldPage,\n\tEpochInfo,\n\tEpochMetricsPage,\n\tEpochPage,\n\tExecuteTransactionBlockParams,\n\tGetAllBalancesParams,\n\tGetAllCoinsParams,\n\tGetBalanceParams,\n\tGetCheckpointParams,\n\tGetCheckpointsParams,\n\tGetCoinMetadataParams,\n\tGetCoinsParams,\n\tGetCommitteeInfoParams,\n\tGetDynamicFieldObjectParams,\n\tGetDynamicFieldsParams,\n\tGetLatestCheckpointSequenceNumberParams,\n\tGetLatestHaneulSystemStateParams,\n\tGetMoveFunctionArgTypesParams,\n\tGetNormalizedMoveFunctionParams,\n\tGetNormalizedMoveModuleParams,\n\tGetNormalizedMoveModulesByPackageParams,\n\tGetNormalizedMoveStructParams,\n\tGetObjectParams,\n\tGetOwnedObjectsParams,\n\tGetProtocolConfigParams,\n\tGetReferenceGasPriceParams,\n\tGetStakesByIdsParams,\n\tGetStakesParams,\n\tGetTotalSupplyParams,\n\tGetTransactionBlockParams,\n\tMoveCallMetrics,\n\tMultiGetObjectsParams,\n\tMultiGetTransactionBlocksParams,\n\tNetworkMetrics,\n\tObjectRead,\n\tOrder,\n\tPaginatedCoins,\n\tPaginatedEvents,\n\tPaginatedObjectsResponse,\n\tPaginatedTransactionResponse,\n\tProtocolConfig,\n\tQueryEventsParams,\n\tQueryTransactionBlocksParams,\n\tResolvedNameServiceNames,\n\tResolveNameServiceAddressParams,\n\tResolveNameServiceNamesParams,\n\tHaneulMoveFunctionArgType,\n\tHaneulMoveNormalizedFunction,\n\tHaneulMoveNormalizedModule,\n\tHaneulMoveNormalizedModules,\n\tHaneulMoveNormalizedStruct,\n\tHaneulObjectResponse,\n\tHaneulObjectResponseQuery,\n\tHaneulSystemStateSummary,\n\tHaneulTransactionBlockResponse,\n\tHaneulTransactionBlockResponseQuery,\n\tTryGetPastObjectParams,\n\tValidatorsApy,\n\tVerifyZkLoginSignatureParams,\n\tZkLoginVerifyResult,\n} from './types/index.js';\nimport { isValidNamedPackage } from '../utils/move-registry.js';\nimport { hasMvrName } from '../client/mvr.js';\nimport { JSONRpcCoreClient } from './core.js';\n\nexport interface PaginationArguments<Cursor> {\n\t/** Optional paging cursor */\n\tcursor?: Cursor;\n\t/** Maximum item returned per page */\n\tlimit?: number | null;\n}\n\nexport interface OrderArguments {\n\torder?: Order | null;\n}\n\n/**\n * Configuration options for the HaneulJsonRpcClient\n * You must provide either a `url` or a `transport`\n */\nexport type HaneulJsonRpcClientOptions = NetworkOrTransport & {\n\tnetwork: HaneulClientTypes.Network;\n\tmvr?: HaneulClientTypes.MvrOptions;\n};\n\ntype NetworkOrTransport =\n\t| {\n\t\t\turl: string;\n\t\t\ttransport?: never;\n\t }\n\t| {\n\t\t\ttransport: JsonRpcTransport;\n\t\t\turl?: never;\n\t };\n\nconst SUI_CLIENT_BRAND = Symbol.for('@haneullabs/HaneulJsonRpcClient') as never;\n\n// Magic number used to identify fake address balance coins (last 20 bytes of the digest)\n// See: haneul/crate./haneul-types/src/coin_reservation.rs\nconst COIN_RESERVATION_MAGIC = new Uint8Array([\n\t0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac, 0xac,\n\t0xac, 0xac, 0xac, 0xac,\n]);\n\n/**\n * Checks if a digest indicates a fake address balance coin.\n * These \"coins\" are created by the JSON RPC to represent address balances\n * and should be filtered out from coin listings.\n */\nfunction isCoinReservationDigest(digestBase58: string): boolean {\n\tconst digestBytes = fromBase58(digestBase58);\n\t// Check if the last 20 bytes match the magic number\n\tconst last20Bytes = digestBytes.slice(12, 32);\n\treturn last20Bytes.every((byte, i) => byte === COIN_RESERVATION_MAGIC[i]);\n}\n\nexport function isHaneulJsonRpcClient(client: unknown): client is HaneulJsonRpcClient {\n\treturn (\n\t\ttypeof client === 'object' && client !== null && (client as any)[SUI_CLIENT_BRAND] === true\n\t);\n}\n\nexport class HaneulJsonRpcClient extends BaseClient {\n\tcore: JSONRpcCoreClient;\n\tjsonRpc = this;\n\tprotected transport: JsonRpcTransport;\n\n\tget [SUI_CLIENT_BRAND]() {\n\t\treturn true;\n\t}\n\n\t/**\n\t * Establish a connection to a Haneul RPC endpoint\n\t *\n\t * @param options configuration options for the API Client\n\t */\n\tconstructor(options: HaneulJsonRpcClientOptions) {\n\t\tsuper({ network: options.network });\n\t\tthis.transport = options.transport ?? new JsonRpcHTTPTransport({ url: options.url });\n\t\tthis.core = new JSONRpcCoreClient({\n\t\t\tjsonRpcClient: this,\n\t\t\tmvr: options.mvr,\n\t\t});\n\t}\n\n\tasync getRpcApiVersion({ signal }: { signal?: AbortSignal } = {}): Promise<string | undefined> {\n\t\tconst resp = await this.transport.request<{ info: { version: string } }>({\n\t\t\tmethod: 'rpc.discover',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn resp.info.version;\n\t}\n\n\t/**\n\t * Get all Coin<`coin_type`> objects owned by an address.\n\t */\n\tasync getCoins({\n\t\tcoinType,\n\t\towner,\n\t\tcursor,\n\t\tlimit,\n\t\tsignal,\n\t}: GetCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'haneulx_getCoins',\n\t\t\tparams: [owner, coinType, cursor, limit],\n\t\t\tsignal: signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get all Coin objects owned by an address.\n\t */\n\tasync getAllCoins(input: GetAllCoinsParams): Promise<PaginatedCoins> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst result: PaginatedCoins = await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllCoins',\n\t\t\tparams: [input.owner, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\n\t\treturn {\n\t\t\t...result,\n\t\t\tdata: result.data.filter((coin) => !isCoinReservationDigest(coin.digest)),\n\t\t};\n\t}\n\n\t/**\n\t * Get the total coin balance for one coin type, owned by the address owner.\n\t */\n\tasync getBalance({ owner, coinType, signal }: GetBalanceParams): Promise<CoinBalance> {\n\t\tif (!owner || !isValidHaneulAddress(normalizeHaneulAddress(owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getBalance',\n\t\t\tparams: [owner, coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the total coin balance for all coin types, owned by the address owner.\n\t */\n\tasync getAllBalances(input: GetAllBalancesParams): Promise<CoinBalance[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllBalances',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch CoinMetadata for a given coin type\n\t */\n\tasync getCoinMetadata({ coinType, signal }: GetCoinMetadataParams): Promise<CoinMetadata | null> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCoinMetadata',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Fetch total supply for a coin\n\t */\n\tasync getTotalSupply({ coinType, signal }: GetTotalSupplyParams): Promise<CoinSupply> {\n\t\tif (coinType && hasMvrName(coinType)) {\n\t\t\tcoinType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: coinType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getTotalSupply',\n\t\t\tparams: [coinType],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Invoke any RPC method\n\t * @param method the method to be invoked\n\t * @param args the arguments to be passed to the RPC request\n\t */\n\tasync call<T = unknown>(\n\t\tmethod: string,\n\t\tparams: unknown[],\n\t\t{ signal }: { signal?: AbortSignal } = {},\n\t): Promise<T> {\n\t\treturn await this.transport.request({ method, params, signal });\n\t}\n\n\t/**\n\t * Get Move function argument types like read, write and full access\n\t */\n\tasync getMoveFunctionArgTypes({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetMoveFunctionArgTypesParams): Promise<HaneulMoveFunctionArgType[]> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getMoveFunctionArgTypes',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a map from module name to\n\t * structured representations of Move modules\n\t */\n\tasync getNormalizedMoveModulesByPackage({\n\t\tpackage: pkg,\n\t\tsignal,\n\t}: GetNormalizedMoveModulesByPackageParams): Promise<HaneulMoveNormalizedModules> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveModulesByPackage',\n\t\t\tparams: [pkg],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move module\n\t */\n\tasync getNormalizedMoveModule({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tsignal,\n\t}: GetNormalizedMoveModuleParams): Promise<HaneulMoveNormalizedModule> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveModule',\n\t\t\tparams: [pkg, module],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move function\n\t */\n\tasync getNormalizedMoveFunction({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tfunction: fn,\n\t\tsignal,\n\t}: GetNormalizedMoveFunctionParams): Promise<HaneulMoveNormalizedFunction> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveFunction',\n\t\t\tparams: [pkg, module, fn],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get a structured representation of Move struct\n\t */\n\tasync getNormalizedMoveStruct({\n\t\tpackage: pkg,\n\t\tmodule,\n\t\tstruct,\n\t\tsignal,\n\t}: GetNormalizedMoveStructParams): Promise<HaneulMoveNormalizedStruct> {\n\t\tif (pkg && isValidNamedPackage(pkg)) {\n\t\t\tpkg = (\n\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\tpackage: pkg,\n\t\t\t\t})\n\t\t\t).package;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getNormalizedMoveStruct',\n\t\t\tparams: [pkg, module, struct],\n\t\t\tsignal: signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get all objects owned by an address\n\t */\n\tasync getOwnedObjects(input: GetOwnedObjectsParams): Promise<PaginatedObjectsResponse> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\n\t\tconst filter = input.filter\n\t\t\t? {\n\t\t\t\t\t...input.filter,\n\t\t\t\t}\n\t\t\t: undefined;\n\n\t\tif (filter && 'MoveModule' in filter && isValidNamedPackage(filter.MoveModule.package)) {\n\t\t\tfilter.MoveModule = {\n\t\t\t\tmodule: filter.MoveModule.module,\n\t\t\t\tpackage: (\n\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\tpackage: filter.MoveModule.package,\n\t\t\t\t\t})\n\t\t\t\t).package,\n\t\t\t};\n\t\t} else if (filter && 'StructType' in filter && hasMvrName(filter.StructType)) {\n\t\t\tfilter.StructType = (\n\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\ttype: filter.StructType,\n\t\t\t\t})\n\t\t\t).type;\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getOwnedObjects',\n\t\t\tparams: [\n\t\t\t\tinput.owner,\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions: input.options,\n\t\t\t\t} as HaneulObjectResponseQuery,\n\t\t\t\tinput.cursor,\n\t\t\t\tinput.limit,\n\t\t\t],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get details about an object\n\t */\n\tasync getObject(input: GetObjectParams): Promise<HaneulObjectResponse> {\n\t\tif (!input.id || !isValidHaneulObjectId(normalizeHaneulObjectId(input.id))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getObject',\n\t\t\tparams: [input.id, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync tryGetPastObject(input: TryGetPastObjectParams): Promise<ObjectRead> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_tryGetPastObject',\n\t\t\tparams: [input.id, input.version, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Batch get details about a list of objects. If any of the object ids are duplicates the call will fail\n\t */\n\tasync multiGetObjects(input: MultiGetObjectsParams): Promise<HaneulObjectResponse[]> {\n\t\tinput.ids.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Object id ${id}`);\n\t\t\t}\n\t\t});\n\t\tconst hasDuplicates = input.ids.length !== new Set(input.ids).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate object ids in batch call ${input.ids}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_multiGetObjects',\n\t\t\tparams: [input.ids, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get transaction blocks for a given query criteria\n\t */\n\tasync queryTransactionBlocks({\n\t\tfilter,\n\t\toptions,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryTransactionBlocksParams): Promise<PaginatedTransactionResponse> {\n\t\tif (filter && 'MoveFunction' in filter && isValidNamedPackage(filter.MoveFunction.package)) {\n\t\t\tfilter = {\n\t\t\t\t...filter,\n\t\t\t\tMoveFunction: {\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: filter.MoveFunction.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_queryTransactionBlocks',\n\t\t\tparams: [\n\t\t\t\t{\n\t\t\t\t\tfilter,\n\t\t\t\t\toptions,\n\t\t\t\t} as HaneulTransactionBlockResponseQuery,\n\t\t\t\tcursor,\n\t\t\t\tlimit,\n\t\t\t\t(order || 'descending') === 'descending',\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getTransactionBlock(\n\t\tinput: GetTransactionBlockParams,\n\t): Promise<HaneulTransactionBlockResponse> {\n\t\tif (!isValidTransactionDigest(input.digest)) {\n\t\t\tthrow new Error('Invalid Transaction digest');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getTransactionBlock',\n\t\t\tparams: [input.digest, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync multiGetTransactionBlocks(\n\t\tinput: MultiGetTransactionBlocksParams,\n\t): Promise<HaneulTransactionBlockResponse[]> {\n\t\tinput.digests.forEach((d) => {\n\t\t\tif (!isValidTransactionDigest(d)) {\n\t\t\t\tthrow new Error(`Invalid Transaction digest ${d}`);\n\t\t\t}\n\t\t});\n\n\t\tconst hasDuplicates = input.digests.length !== new Set(input.digests).size;\n\t\tif (hasDuplicates) {\n\t\t\tthrow new Error(`Duplicate digests in batch call ${input.digests}`);\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_multiGetTransactionBlocks',\n\t\t\tparams: [input.digests, input.options],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync executeTransactionBlock({\n\t\ttransactionBlock,\n\t\tsignature,\n\t\toptions,\n\t\tsignal,\n\t}: ExecuteTransactionBlockParams): Promise<HaneulTransactionBlockResponse> {\n\t\tconst result: HaneulTransactionBlockResponse = await this.transport.request({\n\t\t\tmethod: 'haneul_executeTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof transactionBlock === 'string' ? transactionBlock : toBase64(transactionBlock),\n\t\t\t\tArray.isArray(signature) ? signature : [signature],\n\t\t\t\toptions,\n\t\t\t],\n\t\t\tsignal,\n\t\t});\n\n\t\treturn result;\n\t}\n\n\tasync signAndExecuteTransaction({\n\t\ttransaction,\n\t\tsigner,\n\t\t...input\n\t}: {\n\t\ttransaction: Uint8Array | Transaction;\n\t\tsigner: Signer;\n\t} & Omit<\n\t\tExecuteTransactionBlockParams,\n\t\t'transactionBlock' | 'signature'\n\t>): Promise<HaneulTransactionBlockResponse> {\n\t\tlet transactionBytes;\n\n\t\tif (transaction instanceof Uint8Array) {\n\t\t\ttransactionBytes = transaction;\n\t\t} else {\n\t\t\ttransaction.setSenderIfNotSet(signer.toHaneulAddress());\n\t\t\ttransactionBytes = await transaction.build({ client: this });\n\t\t}\n\n\t\tconst { signature, bytes } = await signer.signTransaction(transactionBytes);\n\n\t\treturn this.executeTransactionBlock({\n\t\t\ttransactionBlock: bytes,\n\t\t\tsignature,\n\t\t\t...input,\n\t\t});\n\t}\n\n\t/**\n\t * Get total number of transactions\n\t */\n\n\tasync getTotalTransactionBlocks({ signal }: { signal?: AbortSignal } = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'haneul_getTotalTransactionBlocks',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Getting the reference gas price for the network\n\t */\n\tasync getReferenceGasPrice({ signal }: GetReferenceGasPriceParams = {}): Promise<bigint> {\n\t\tconst resp = await this.transport.request<string>({\n\t\t\tmethod: 'haneulx_getReferenceGasPrice',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn BigInt(resp);\n\t}\n\n\t/**\n\t * Return the delegated stakes for an address\n\t */\n\tasync getStakes(input: GetStakesParams): Promise<DelegatedStake[]> {\n\t\tif (!input.owner || !isValidHaneulAddress(normalizeHaneulAddress(input.owner))) {\n\t\t\tthrow new Error('Invalid Haneul address');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getStakes',\n\t\t\tparams: [input.owner],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the delegated stakes queried by id.\n\t */\n\tasync getStakesByIds(input: GetStakesByIdsParams): Promise<DelegatedStake[]> {\n\t\tinput.stakedHaneulIds.forEach((id) => {\n\t\t\tif (!id || !isValidHaneulObjectId(normalizeHaneulObjectId(id))) {\n\t\t\t\tthrow new Error(`Invalid Haneul Stake id ${id}`);\n\t\t\t}\n\t\t});\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getStakesByIds',\n\t\t\tparams: [input.stakedHaneulIds],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the latest system state content.\n\t */\n\tasync getLatestHaneulSystemState({\n\t\tsignal,\n\t}: GetLatestHaneulSystemStateParams = {}): Promise<HaneulSystemStateSummary> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getLatestHaneulSystemState',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Get events for a given query criteria\n\t */\n\tasync queryEvents({\n\t\tquery,\n\t\tcursor,\n\t\tlimit,\n\t\torder,\n\t\tsignal,\n\t}: QueryEventsParams): Promise<PaginatedEvents> {\n\t\tif (query && 'MoveEventType' in query && hasMvrName(query.MoveEventType)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventType: (\n\t\t\t\t\tawait this.core.mvr.resolveType({\n\t\t\t\t\t\ttype: query.MoveEventType,\n\t\t\t\t\t})\n\t\t\t\t).type,\n\t\t\t};\n\t\t}\n\n\t\tif (query && 'MoveEventModule' in query && isValidNamedPackage(query.MoveEventModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveEventModule: {\n\t\t\t\t\tmodule: query.MoveEventModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveEventModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\tif ('MoveModule' in query && isValidNamedPackage(query.MoveModule.package)) {\n\t\t\tquery = {\n\t\t\t\t...query,\n\t\t\t\tMoveModule: {\n\t\t\t\t\tmodule: query.MoveModule.module,\n\t\t\t\t\tpackage: (\n\t\t\t\t\t\tawait this.core.mvr.resolvePackage({\n\t\t\t\t\t\t\tpackage: query.MoveModule.package,\n\t\t\t\t\t\t})\n\t\t\t\t\t).package,\n\t\t\t\t},\n\t\t\t};\n\t\t}\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_queryEvents',\n\t\t\tparams: [query, cursor, limit, (order || 'descending') === 'descending'],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Runs the transaction block in dev-inspect mode. Which allows for nearly any\n\t * transaction (or Move call) with any arguments. Detailed results are\n\t * provided, including both the transaction effects and any return values.\n\t */\n\tasync devInspectTransactionBlock(\n\t\tinput: DevInspectTransactionBlockParams,\n\t): Promise<DevInspectResults> {\n\t\tlet devInspectTxBytes;\n\t\tif (isTransaction(input.transactionBlock)) {\n\t\t\tinput.transactionBlock.setSenderIfNotSet(input.sender);\n\t\t\tdevInspectTxBytes = toBase64(\n\t\t\t\tawait input.transactionBlock.build({\n\t\t\t\t\tclient: this,\n\t\t\t\t\tonlyTransactionKind: true,\n\t\t\t\t}),\n\t\t\t);\n\t\t} else if (typeof input.transactionBlock === 'string') {\n\t\t\tdevInspectTxBytes = input.transactionBlock;\n\t\t} else if (input.transactionBlock instanceof Uint8Array) {\n\t\t\tdevInspectTxBytes = toBase64(input.transactionBlock);\n\t\t} else {\n\t\t\tthrow new Error('Unknown transaction block format.');\n\t\t}\n\n\t\tinput.signal?.throwIfAborted();\n\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_devInspectTransactionBlock',\n\t\t\tparams: [input.sender, devInspectTxBytes, input.gasPrice?.toString(), input.epoch],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Dry run a transaction block and return the result.\n\t */\n\tasync dryRunTransactionBlock(\n\t\tinput: DryRunTransactionBlockParams,\n\t): Promise<DryRunTransactionBlockResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_dryRunTransactionBlock',\n\t\t\tparams: [\n\t\t\t\ttypeof input.transactionBlock === 'string'\n\t\t\t\t\t? input.transactionBlock\n\t\t\t\t\t: toBase64(input.transactionBlock),\n\t\t\t],\n\t\t});\n\t}\n\n\t/**\n\t * Return the list of dynamic field objects owned by an object\n\t */\n\tasync getDynamicFields(input: GetDynamicFieldsParams): Promise<DynamicFieldPage> {\n\t\tif (!input.parentId || !isValidHaneulObjectId(normalizeHaneulObjectId(input.parentId))) {\n\t\t\tthrow new Error('Invalid Haneul Object id');\n\t\t}\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getDynamicFields',\n\t\t\tparams: [input.parentId, input.cursor, input.limit],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the dynamic field object information for a specified object\n\t */\n\tasync getDynamicFieldObject(input: GetDynamicFieldObjectParams): Promise<HaneulObjectResponse> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getDynamicFieldObject',\n\t\t\tparams: [input.parentId, input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Get the sequence number of the latest checkpoint that has been executed\n\t */\n\tasync getLatestCheckpointSequenceNumber({\n\t\tsignal,\n\t}: GetLatestCheckpointSequenceNumberParams = {}): Promise<string> {\n\t\tconst resp = await this.transport.request({\n\t\t\tmethod: 'haneul_getLatestCheckpointSequenceNumber',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t\treturn String(resp);\n\t}\n\n\t/**\n\t * Returns information about a given checkpoint\n\t */\n\tasync getCheckpoint(input: GetCheckpointParams): Promise<Checkpoint> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getCheckpoint',\n\t\t\tparams: [input.id],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns historical checkpoints paginated\n\t */\n\tasync getCheckpoints(\n\t\tinput: PaginationArguments<CheckpointPage['nextCursor']> & GetCheckpointsParams,\n\t): Promise<CheckpointPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getCheckpoints',\n\t\t\tparams: [input.cursor, input?.limit, input.descendingOrder],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCommitteeInfo(input?: GetCommitteeInfoParams): Promise<CommitteeInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCommitteeInfo',\n\t\t\tparams: [input?.epoch],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getNetworkMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<NetworkMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getNetworkMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getAddressMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<AddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getLatestAddressMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\tasync getEpochMetrics(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochMetricsPage['nextCursor']>,\n\t): Promise<EpochMetricsPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getEpochMetrics',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync getAllEpochAddressMetrics(input?: {\n\t\tdescendingOrder?: boolean;\n\t\tsignal?: AbortSignal;\n\t}): Promise<AllEpochsAddressMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getAllEpochAddressMetrics',\n\t\t\tparams: [input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getEpochs(\n\t\tinput?: {\n\t\t\tdescendingOrder?: boolean;\n\t\t\tsignal?: AbortSignal;\n\t\t} & PaginationArguments<EpochPage['nextCursor']>,\n\t): Promise<EpochPage> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getEpochs',\n\t\t\tparams: [input?.cursor, input?.limit, input?.descendingOrder],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Returns list of top move calls by usage\n\t */\n\tasync getMoveCallMetrics({ signal }: { signal?: AbortSignal } = {}): Promise<MoveCallMetrics> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getMoveCallMetrics',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the committee information for the asked epoch\n\t */\n\tasync getCurrentEpoch({ signal }: { signal?: AbortSignal } = {}): Promise<EpochInfo> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getCurrentEpoch',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t/**\n\t * Return the Validators APYs\n\t */\n\tasync getValidatorsApy({ signal }: { signal?: AbortSignal } = {}): Promise<ValidatorsApy> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_getValidatorsApy',\n\t\t\tparams: [],\n\t\t\tsignal,\n\t\t});\n\t}\n\n\t// TODO: Migrate this to `sui_getChainIdentifier` once it is widely available.\n\tasync getChainIdentifier({ signal }: { signal?: AbortSignal } = {}): Promise<string> {\n\t\tconst checkpoint = await this.getCheckpoint({ id: '0', signal });\n\t\tconst bytes = fromBase58(checkpoint.digest);\n\t\treturn toHex(bytes.slice(0, 4));\n\t}\n\n\tasync resolveNameServiceAddress(input: ResolveNameServiceAddressParams): Promise<string | null> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneulx_resolveNameServiceAddress',\n\t\t\tparams: [input.name],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\tasync resolveNameServiceNames({\n\t\tformat = 'dot',\n\t\t...input\n\t}: ResolveNameServiceNamesParams & {\n\t\tformat?: 'at' | 'dot';\n\t}): Promise<ResolvedNameServiceNames> {\n\t\tconst { nextCursor, hasNextPage, data }: ResolvedNameServiceNames =\n\t\t\tawait this.transport.request({\n\t\t\t\tmethod: 'haneulx_resolveNameServiceNames',\n\t\t\t\tparams: [input.address, input.cursor, input.limit],\n\t\t\t\tsignal: input.signal,\n\t\t\t});\n\n\t\treturn {\n\t\t\thasNextPage,\n\t\t\tnextCursor,\n\t\t\tdata: data.map((name) => normalizeHaneulNSName(name, format)),\n\t\t};\n\t}\n\n\tasync getProtocolConfig(input?: GetProtocolConfigParams): Promise<ProtocolConfig> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_getProtocolConfig',\n\t\t\tparams: [input?.version],\n\t\t\tsignal: input?.signal,\n\t\t});\n\t}\n\n\tasync verifyZkLoginSignature(input: VerifyZkLoginSignatureParams): Promise<ZkLoginVerifyResult> {\n\t\treturn await this.transport.request({\n\t\t\tmethod: 'haneul_verifyZkLoginSignature',\n\t\t\tparams: [input.bytes, input.signature, input.intentScope, input.author],\n\t\t\tsignal: input.signal,\n\t\t});\n\t}\n\n\t/**\n\t * Wait for a transaction block result to be available over the API.\n\t * This can be used in conjunction with `executeTransactionBlock` to wait for the transaction to\n\t * be available via the API.\n\t * This currently polls the `getTransactionBlock` API to check for the transaction.\n\t */\n\tasync waitForTransaction({\n\t\tsignal,\n\t\ttimeout = 60 * 1000,\n\t\tpollInterval = 2 * 1000,\n\t\t...input\n\t}: {\n\t\t/** An optional abort signal that can be used to cancel */\n\t\tsignal?: AbortSignal;\n\t\t/** The amount of time to wait for a transaction block. Defaults to one minute. */\n\t\ttimeout?: number;\n\t\t/** The amount of time to wait between checks for the transaction block. Defaults to 2 seconds. */\n\t\tpollInterval?: number;\n\t} & Parameters<\n\t\tHaneulJsonRpcClient['getTransactionBlock']\n\t>[0]): Promise<HaneulTransactionBlockResponse> {\n\t\tconst timeoutSignal = AbortSignal.timeout(timeout);\n\t\tconst timeoutPromise = new Promise((_, reject) => {\n\t\t\ttimeoutSignal.addEventListener('abort', () => reject(timeoutSignal.reason));\n\t\t});\n\n\t\ttimeoutPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\twhile (!timeoutSignal.aborted) {\n\t\t\tsignal?.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransactionBlock(input);\n\t\t\t} catch {\n\t\t\t\t// Wait for either the next poll interval, or the timeout.\n\t\t\t\tawait Promise.race([\n\t\t\t\t\tnew Promise((resolve) => setTimeout(resolve, pollInterval)),\n\t\t\t\t\ttimeoutPromise,\n\t\t\t\t]);\n\t\t\t}\n\t\t}\n\n\t\ttimeoutSignal.throwIfAborted();\n\n\t\t// This should never happen, because the above case should always throw, but just adding it in the event that something goes horribly wrong.\n\t\tthrow new Error('Unexpected error while waiting for transaction block.');\n\t}\n}\n"],"mappings":"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"}
|