@iota/graphql-transport 0.0.0-dev-20251015065834

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.
Files changed (92) hide show
  1. package/CHANGELOG.md +248 -0
  2. package/LICENSE +201 -0
  3. package/README.md +104 -0
  4. package/dist/cjs/generated/queries.d.ts +9099 -0
  5. package/dist/cjs/generated/queries.js +3021 -0
  6. package/dist/cjs/generated/queries.js.map +7 -0
  7. package/dist/cjs/index.d.ts +1 -0
  8. package/dist/cjs/index.js +19 -0
  9. package/dist/cjs/index.js.map +7 -0
  10. package/dist/cjs/mappers/bcs.d.ts +4 -0
  11. package/dist/cjs/mappers/bcs.js +71 -0
  12. package/dist/cjs/mappers/bcs.js.map +7 -0
  13. package/dist/cjs/mappers/checkpoint.d.ts +3 -0
  14. package/dist/cjs/mappers/checkpoint.js +64 -0
  15. package/dist/cjs/mappers/checkpoint.js.map +7 -0
  16. package/dist/cjs/mappers/display.d.ts +8 -0
  17. package/dist/cjs/mappers/display.js +43 -0
  18. package/dist/cjs/mappers/display.js.map +7 -0
  19. package/dist/cjs/mappers/move.d.ts +57 -0
  20. package/dist/cjs/mappers/move.js +231 -0
  21. package/dist/cjs/mappers/move.js.map +7 -0
  22. package/dist/cjs/mappers/object.d.ts +10 -0
  23. package/dist/cjs/mappers/object.js +79 -0
  24. package/dist/cjs/mappers/object.js.map +7 -0
  25. package/dist/cjs/mappers/owner.d.ts +3 -0
  26. package/dist/cjs/mappers/owner.js +48 -0
  27. package/dist/cjs/mappers/owner.js.map +7 -0
  28. package/dist/cjs/mappers/stakes.d.ts +3 -0
  29. package/dist/cjs/mappers/stakes.js +48 -0
  30. package/dist/cjs/mappers/stakes.js.map +7 -0
  31. package/dist/cjs/mappers/transaction-block.d.ts +7 -0
  32. package/dist/cjs/mappers/transaction-block.js +487 -0
  33. package/dist/cjs/mappers/transaction-block.js.map +7 -0
  34. package/dist/cjs/mappers/util.d.ts +2 -0
  35. package/dist/cjs/mappers/util.js +31 -0
  36. package/dist/cjs/mappers/util.js.map +7 -0
  37. package/dist/cjs/mappers/validator.d.ts +3 -0
  38. package/dist/cjs/mappers/validator.js +64 -0
  39. package/dist/cjs/mappers/validator.js.map +7 -0
  40. package/dist/cjs/methods.d.ts +19 -0
  41. package/dist/cjs/methods.js +1377 -0
  42. package/dist/cjs/methods.js.map +7 -0
  43. package/dist/cjs/package.json +5 -0
  44. package/dist/cjs/transport.d.ts +44 -0
  45. package/dist/cjs/transport.js +155 -0
  46. package/dist/cjs/transport.js.map +7 -0
  47. package/dist/esm/generated/queries.d.ts +9099 -0
  48. package/dist/esm/generated/queries.js +3001 -0
  49. package/dist/esm/generated/queries.js.map +7 -0
  50. package/dist/esm/index.d.ts +1 -0
  51. package/dist/esm/index.js +2 -0
  52. package/dist/esm/index.js.map +7 -0
  53. package/dist/esm/mappers/bcs.d.ts +4 -0
  54. package/dist/esm/mappers/bcs.js +51 -0
  55. package/dist/esm/mappers/bcs.js.map +7 -0
  56. package/dist/esm/mappers/checkpoint.d.ts +3 -0
  57. package/dist/esm/mappers/checkpoint.js +44 -0
  58. package/dist/esm/mappers/checkpoint.js.map +7 -0
  59. package/dist/esm/mappers/display.d.ts +8 -0
  60. package/dist/esm/mappers/display.js +23 -0
  61. package/dist/esm/mappers/display.js.map +7 -0
  62. package/dist/esm/mappers/move.d.ts +57 -0
  63. package/dist/esm/mappers/move.js +211 -0
  64. package/dist/esm/mappers/move.js.map +7 -0
  65. package/dist/esm/mappers/object.d.ts +10 -0
  66. package/dist/esm/mappers/object.js +59 -0
  67. package/dist/esm/mappers/object.js.map +7 -0
  68. package/dist/esm/mappers/owner.d.ts +3 -0
  69. package/dist/esm/mappers/owner.js +28 -0
  70. package/dist/esm/mappers/owner.js.map +7 -0
  71. package/dist/esm/mappers/stakes.d.ts +3 -0
  72. package/dist/esm/mappers/stakes.js +28 -0
  73. package/dist/esm/mappers/stakes.js.map +7 -0
  74. package/dist/esm/mappers/transaction-block.d.ts +7 -0
  75. package/dist/esm/mappers/transaction-block.js +467 -0
  76. package/dist/esm/mappers/transaction-block.js.map +7 -0
  77. package/dist/esm/mappers/util.d.ts +2 -0
  78. package/dist/esm/mappers/util.js +11 -0
  79. package/dist/esm/mappers/util.js.map +7 -0
  80. package/dist/esm/mappers/validator.d.ts +3 -0
  81. package/dist/esm/mappers/validator.js +44 -0
  82. package/dist/esm/mappers/validator.js.map +7 -0
  83. package/dist/esm/methods.d.ts +19 -0
  84. package/dist/esm/methods.js +1406 -0
  85. package/dist/esm/methods.js.map +7 -0
  86. package/dist/esm/package.json +5 -0
  87. package/dist/esm/transport.d.ts +44 -0
  88. package/dist/esm/transport.js +135 -0
  89. package/dist/esm/transport.js.map +7 -0
  90. package/dist/tsconfig.esm.tsbuildinfo +1 -0
  91. package/dist/tsconfig.tsbuildinfo +1 -0
  92. package/package.json +67 -0
@@ -0,0 +1,1377 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var methods_exports = {};
20
+ __export(methods_exports, {
21
+ RPC_METHODS: () => RPC_METHODS,
22
+ UnsupportedMethodError: () => UnsupportedMethodError,
23
+ UnsupportedParamError: () => UnsupportedParamError
24
+ });
25
+ module.exports = __toCommonJS(methods_exports);
26
+ var import_bcs = require("@iota/bcs");
27
+ var import_transactions = require("@iota/iota-sdk/transactions");
28
+ var import_utils = require("@iota/iota-sdk/utils");
29
+ var import_queries = require("./generated/queries.js");
30
+ var import_bcs2 = require("./mappers/bcs.js");
31
+ var import_checkpoint = require("./mappers/checkpoint.js");
32
+ var import_move = require("./mappers/move.js");
33
+ var import_object = require("./mappers/object.js");
34
+ var import_stakes = require("./mappers/stakes.js");
35
+ var import_transaction_block = require("./mappers/transaction-block.js");
36
+ var import_util = require("./mappers/util.js");
37
+ var import_validator = require("./mappers/validator.js");
38
+ const RPC_METHODS = {
39
+ async getRpcApiVersion(transport) {
40
+ const res = await transport.graphqlRequest({
41
+ query: "query { __typename }",
42
+ variables: {}
43
+ });
44
+ if (!res.ok) {
45
+ throw new Error("Failed to fetch");
46
+ }
47
+ return {
48
+ info: {
49
+ version: res.headers.get("x-iota-rpc-version") ?? void 0
50
+ }
51
+ };
52
+ },
53
+ async getCoins(transport, [owner, coinType, cursor, limit]) {
54
+ const { nodes: coins, pageInfo } = await transport.graphqlQuery(
55
+ {
56
+ query: import_queries.GetCoinsDocument,
57
+ variables: {
58
+ owner,
59
+ type: coinType,
60
+ cursor,
61
+ first: limit
62
+ }
63
+ },
64
+ (data) => data.address?.coins
65
+ );
66
+ return {
67
+ data: coins.map((coin) => ({
68
+ balance: coin.coinBalance,
69
+ coinObjectId: coin.address,
70
+ coinType: (0, import_util.toShortTypeString)(
71
+ (0, import_utils.normalizeStructTag)((0, import_utils.parseStructTag)(coin.contents?.type.repr).typeParams[0])
72
+ ),
73
+ digest: coin.digest,
74
+ previousTransaction: coin.previousTransactionBlock?.digest,
75
+ version: String(coin.version)
76
+ })),
77
+ nextCursor: pageInfo.endCursor,
78
+ hasNextPage: pageInfo.hasNextPage
79
+ };
80
+ },
81
+ async getAllCoins(transport, inputs) {
82
+ const { nodes: coins, pageInfo } = await transport.graphqlQuery(
83
+ {
84
+ query: import_queries.GetCoinsDocument,
85
+ variables: {
86
+ owner: inputs[0],
87
+ cursor: inputs[1],
88
+ first: inputs[2]
89
+ }
90
+ },
91
+ (data) => data.address?.coins
92
+ );
93
+ return {
94
+ data: coins.map((coin) => ({
95
+ balance: coin.coinBalance,
96
+ coinObjectId: coin.address,
97
+ coinType: (0, import_util.toShortTypeString)(
98
+ (0, import_utils.normalizeStructTag)((0, import_utils.parseStructTag)(coin.contents?.type.repr).typeParams[0])
99
+ ),
100
+ digest: coin.digest,
101
+ previousTransaction: coin.previousTransactionBlock?.digest,
102
+ version: String(coin.version)
103
+ })),
104
+ nextCursor: pageInfo.endCursor,
105
+ hasNextPage: pageInfo.hasNextPage
106
+ };
107
+ },
108
+ async getBalance(transport, inputs) {
109
+ const balance = await transport.graphqlQuery(
110
+ {
111
+ query: import_queries.GetBalanceDocument,
112
+ variables: {
113
+ owner: inputs[0],
114
+ type: inputs[1]
115
+ }
116
+ },
117
+ (data) => data.address?.balance
118
+ );
119
+ return {
120
+ coinType: (0, import_util.toShortTypeString)(balance.coinType?.repr),
121
+ coinObjectCount: balance.coinObjectCount,
122
+ totalBalance: balance.totalBalance
123
+ };
124
+ },
125
+ async getAllBalances(transport, inputs) {
126
+ const balances = await transport.graphqlQuery(
127
+ {
128
+ query: import_queries.GetAllBalancesDocument,
129
+ variables: {
130
+ owner: inputs[0]
131
+ }
132
+ },
133
+ (data) => data.address?.balances?.nodes
134
+ );
135
+ return balances.map((balance) => ({
136
+ coinType: (0, import_util.toShortTypeString)(balance.coinType?.repr),
137
+ coinObjectCount: balance.coinObjectCount,
138
+ totalBalance: balance.totalBalance
139
+ }));
140
+ },
141
+ async getCoinMetadata(transport, inputs) {
142
+ const metadata = await transport.graphqlQuery(
143
+ {
144
+ query: import_queries.GetCoinMetadataDocument,
145
+ variables: {
146
+ coinType: inputs[0]
147
+ }
148
+ },
149
+ (data) => data.coinMetadata
150
+ );
151
+ return {
152
+ decimals: metadata.decimals,
153
+ name: metadata.name,
154
+ symbol: metadata.symbol,
155
+ description: metadata.description,
156
+ iconUrl: metadata.iconUrl,
157
+ id: metadata.address
158
+ };
159
+ },
160
+ async getTotalSupply(transport, inputs) {
161
+ const metadata = await transport.graphqlQuery(
162
+ {
163
+ query: import_queries.GetTotalSupplyDocument,
164
+ variables: {
165
+ coinType: inputs[0]
166
+ }
167
+ },
168
+ (data) => data.coinMetadata
169
+ );
170
+ return {
171
+ value: BigInt(metadata.supply).toString()
172
+ };
173
+ },
174
+ async getMoveFunctionArgTypes(transport, [pkg, module2, fn]) {
175
+ const moveModule = await transport.graphqlQuery(
176
+ {
177
+ query: import_queries.GetMoveFunctionArgTypesDocument,
178
+ variables: {
179
+ module: module2,
180
+ packageId: pkg,
181
+ function: fn
182
+ }
183
+ },
184
+ (data) => data.object?.asMovePackage?.module?.function?.parameters
185
+ );
186
+ return moveModule.map((parameter) => {
187
+ if (!parameter.signature.body.datatype) {
188
+ return "Pure";
189
+ }
190
+ return {
191
+ Object: parameter.signature.ref === "&" ? "ByImmutableReference" : parameter.signature.ref === "&mut" ? "ByMutableReference" : "ByValue"
192
+ };
193
+ });
194
+ },
195
+ async getNormalizedMoveFunction(transport, [pkg, module2, fn]) {
196
+ const moveFunction = await transport.graphqlQuery(
197
+ {
198
+ query: import_queries.GetNormalizedMoveFunctionDocument,
199
+ variables: {
200
+ module: module2,
201
+ packageId: pkg,
202
+ function: fn
203
+ }
204
+ },
205
+ (data) => data.object?.asMovePackage?.module?.function
206
+ );
207
+ return (0, import_move.mapNormalizedMoveFunction)(moveFunction);
208
+ },
209
+ async getNormalizedMoveModulesByPackage(transport, [pkg]) {
210
+ const movePackage = await transport.graphqlQuery(
211
+ {
212
+ query: import_queries.GetNormalizedMoveModulesByPackageDocument,
213
+ variables: {
214
+ packageId: pkg
215
+ }
216
+ },
217
+ (data) => data.object?.asMovePackage
218
+ );
219
+ let hasNextPage = movePackage.modules?.pageInfo.hasNextPage ?? false;
220
+ let cursor = movePackage.modules?.pageInfo.endCursor;
221
+ while (hasNextPage) {
222
+ const page = await transport.graphqlQuery(
223
+ {
224
+ query: import_queries.GetNormalizedMoveModulesByPackageDocument,
225
+ variables: {
226
+ packageId: pkg,
227
+ cursor
228
+ }
229
+ },
230
+ (data) => data.object?.asMovePackage
231
+ );
232
+ movePackage.modules?.nodes.push(...page.modules?.nodes ?? []);
233
+ hasNextPage = page.modules?.pageInfo.hasNextPage ?? false;
234
+ cursor = page.modules?.pageInfo.endCursor;
235
+ }
236
+ const address = (0, import_util.toShortTypeString)(movePackage.address);
237
+ const modules = {};
238
+ for (const moveModule of movePackage.modules?.nodes ?? []) {
239
+ let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;
240
+ let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;
241
+ let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;
242
+ let afterFriends = moveModule.friends?.pageInfo.endCursor;
243
+ let afterFunctions = moveModule.functions?.pageInfo.endCursor;
244
+ let afterStructs = moveModule.structs?.pageInfo.endCursor;
245
+ while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {
246
+ const page = await transport.graphqlQuery(
247
+ {
248
+ query: import_queries.PaginateMoveModuleListsDocument,
249
+ variables: {
250
+ module: moveModule.name,
251
+ packageId: pkg,
252
+ hasMoreFriends,
253
+ hasMoreFunctions,
254
+ hasMoreStructs,
255
+ afterFriends,
256
+ afterFunctions,
257
+ afterStructs
258
+ }
259
+ },
260
+ (data) => data.object?.asMovePackage?.module
261
+ );
262
+ moveModule.friends.nodes.push(...page.friends?.nodes ?? []);
263
+ moveModule.functions?.nodes.push(...page.functions?.nodes ?? []);
264
+ moveModule.structs?.nodes.push(...page.structs?.nodes ?? []);
265
+ hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;
266
+ hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;
267
+ hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;
268
+ afterFriends = page.friends?.pageInfo.endCursor;
269
+ afterFunctions = page.functions?.pageInfo.endCursor;
270
+ afterStructs = page.structs?.pageInfo.endCursor;
271
+ }
272
+ }
273
+ movePackage.modules?.nodes.forEach((module2) => {
274
+ modules[module2.name] = (0, import_move.mapNormalizedMoveModule)(module2, address);
275
+ });
276
+ return modules;
277
+ },
278
+ async getNormalizedMoveModule(transport, [pkg, module2]) {
279
+ const moveModule = await transport.graphqlQuery(
280
+ {
281
+ query: import_queries.GetNormalizedMoveModuleDocument,
282
+ variables: {
283
+ module: module2,
284
+ packageId: pkg
285
+ }
286
+ },
287
+ (data) => data.object?.asMovePackage?.module
288
+ );
289
+ let hasMoreFriends = moveModule.friends?.pageInfo.hasNextPage ?? false;
290
+ let hasMoreFunctions = moveModule.functions?.pageInfo.hasNextPage ?? false;
291
+ let hasMoreStructs = moveModule.structs?.pageInfo.hasNextPage ?? false;
292
+ let afterFriends = moveModule.friends?.pageInfo.endCursor;
293
+ let afterFunctions = moveModule.functions?.pageInfo.endCursor;
294
+ let afterStructs = moveModule.structs?.pageInfo.endCursor;
295
+ while (hasMoreFriends || hasMoreStructs || hasMoreFunctions) {
296
+ const page = await transport.graphqlQuery(
297
+ {
298
+ query: import_queries.PaginateMoveModuleListsDocument,
299
+ variables: {
300
+ module: module2,
301
+ packageId: pkg,
302
+ hasMoreFriends,
303
+ hasMoreFunctions,
304
+ hasMoreStructs,
305
+ afterFriends,
306
+ afterFunctions,
307
+ afterStructs
308
+ }
309
+ },
310
+ (data) => data.object?.asMovePackage?.module
311
+ );
312
+ moveModule.friends.nodes.push(...page.friends?.nodes ?? []);
313
+ moveModule.functions?.nodes.push(...page.functions?.nodes ?? []);
314
+ moveModule.structs?.nodes.push(...page.structs?.nodes ?? []);
315
+ hasMoreFriends = page.friends?.pageInfo.hasNextPage ?? false;
316
+ hasMoreFunctions = page.functions?.pageInfo.hasNextPage ?? false;
317
+ hasMoreStructs = page.structs?.pageInfo.hasNextPage ?? false;
318
+ afterFriends = page.friends?.pageInfo.endCursor;
319
+ afterFunctions = page.functions?.pageInfo.endCursor;
320
+ afterStructs = page.structs?.pageInfo.endCursor;
321
+ }
322
+ return (0, import_move.mapNormalizedMoveModule)(moveModule, (0, import_utils.normalizeIotaAddress)(pkg));
323
+ },
324
+ async getNormalizedMoveStruct(transport, [pkg, module2, struct]) {
325
+ const moveStruct = await transport.graphqlQuery(
326
+ {
327
+ query: import_queries.GetNormalizedMoveStructDocument,
328
+ variables: {
329
+ packageId: pkg,
330
+ module: module2,
331
+ struct
332
+ }
333
+ },
334
+ (data) => data.object?.asMovePackage?.module?.struct
335
+ );
336
+ return (0, import_move.mapNormalizedMoveStruct)(moveStruct);
337
+ },
338
+ async getOwnedObjects(transport, [owner, { filter: inputFilter, options }, cursor, limit]) {
339
+ let filter;
340
+ let typeFilter;
341
+ if (inputFilter) {
342
+ if ("Package" in inputFilter) {
343
+ typeFilter = inputFilter.Package;
344
+ } else if ("MoveModule" in inputFilter) {
345
+ typeFilter = `${inputFilter.MoveModule.package}::${inputFilter.MoveModule.module}`;
346
+ } else if ("StructType" in inputFilter) {
347
+ typeFilter = inputFilter.StructType;
348
+ }
349
+ filter = {
350
+ objectIds: "ObjectIds" in inputFilter ? inputFilter.ObjectIds : "ObjectId" in inputFilter ? [inputFilter.ObjectId] : void 0,
351
+ type: typeFilter,
352
+ owner: "ObjectOwner" in inputFilter ? inputFilter.ObjectOwner : "AddressOwner" in inputFilter ? inputFilter.AddressOwner : void 0
353
+ };
354
+ const unsupportedFilters = [];
355
+ for (const unsupportedFilter of unsupportedFilters) {
356
+ if (unsupportedFilter in inputFilter) {
357
+ throw new UnsupportedParamError("getOwnedObjects", unsupportedFilter);
358
+ }
359
+ }
360
+ }
361
+ const { nodes: objects, pageInfo } = await transport.graphqlQuery(
362
+ {
363
+ query: import_queries.GetOwnedObjectsDocument,
364
+ variables: {
365
+ owner,
366
+ limit,
367
+ cursor,
368
+ showBcs: options?.showBcs,
369
+ showContent: options?.showContent,
370
+ showDisplay: options?.showDisplay,
371
+ showOwner: options?.showOwner,
372
+ showPreviousTransaction: options?.showPreviousTransaction,
373
+ showStorageRebate: options?.showStorageRebate,
374
+ showType: options?.showType,
375
+ filter
376
+ }
377
+ },
378
+ (data) => data.address?.objects
379
+ );
380
+ return {
381
+ hasNextPage: pageInfo.hasNextPage,
382
+ nextCursor: pageInfo.endCursor,
383
+ data: objects.map((object) => ({
384
+ data: (0, import_object.mapGraphQLMoveObjectToRpcObject)(object, options ?? {})
385
+ }))
386
+ };
387
+ },
388
+ async getObject(transport, [id, options]) {
389
+ const object = await transport.graphqlQuery(
390
+ {
391
+ query: import_queries.GetObjectDocument,
392
+ variables: {
393
+ id,
394
+ showBcs: options?.showBcs,
395
+ showContent: options?.showContent,
396
+ showDisplay: options?.showDisplay,
397
+ showOwner: options?.showOwner,
398
+ showPreviousTransaction: options?.showPreviousTransaction,
399
+ showStorageRebate: options?.showStorageRebate,
400
+ showType: options?.showType
401
+ }
402
+ },
403
+ (data) => data.object
404
+ );
405
+ return {
406
+ data: (0, import_object.mapGraphQLObjectToRpcObject)(object, options ?? {})
407
+ };
408
+ },
409
+ async tryGetPastObject(transport, [id, version, options]) {
410
+ const data = await transport.graphqlQuery({
411
+ query: import_queries.TryGetPastObjectDocument,
412
+ variables: {
413
+ id,
414
+ version,
415
+ showBcs: options?.showBcs,
416
+ showContent: options?.showContent,
417
+ showDisplay: options?.showDisplay,
418
+ showOwner: options?.showOwner,
419
+ showPreviousTransaction: options?.showPreviousTransaction,
420
+ showStorageRebate: options?.showStorageRebate,
421
+ showType: options?.showType
422
+ }
423
+ });
424
+ if (!data.current) {
425
+ return {
426
+ details: "Could not find the referenced object",
427
+ status: "ObjectNotExists"
428
+ };
429
+ }
430
+ if (!data.object) {
431
+ return data.current.version < Number(version) ? {
432
+ status: "VersionTooHigh",
433
+ details: {
434
+ asked_version: String(version),
435
+ latest_version: String(data.current.version),
436
+ object_id: data.current.address
437
+ }
438
+ } : {
439
+ status: "VersionNotFound",
440
+ details: [data.current.address, String(version)]
441
+ };
442
+ }
443
+ return {
444
+ status: "VersionFound",
445
+ details: (0, import_object.mapGraphQLObjectToRpcObject)(data.object, options ?? {})
446
+ };
447
+ },
448
+ async multiGetObjects(transport, [ids, options]) {
449
+ const objects = await transport.graphqlQuery(
450
+ {
451
+ query: import_queries.MultiGetObjectsDocument,
452
+ variables: {
453
+ ids,
454
+ showBcs: options?.showBcs,
455
+ showContent: options?.showContent,
456
+ showDisplay: options?.showDisplay,
457
+ showOwner: options?.showOwner,
458
+ showPreviousTransaction: options?.showPreviousTransaction,
459
+ showStorageRebate: options?.showStorageRebate,
460
+ showType: options?.showType,
461
+ limit: ids.length
462
+ }
463
+ },
464
+ (data) => data.objects?.nodes
465
+ );
466
+ return objects.map((object) => ({
467
+ data: (0, import_object.mapGraphQLObjectToRpcObject)(object, options ?? {})
468
+ }));
469
+ },
470
+ async queryTransactionBlocks(transport, [{ filter, options }, cursor, limit = 20, descending]) {
471
+ const pagination = descending ? {
472
+ last: limit,
473
+ before: cursor
474
+ } : {
475
+ first: limit,
476
+ after: cursor
477
+ };
478
+ const unsupportedFilters = ["FromOrToAddress", "FromAndToAddress", "TransactionKindIn"];
479
+ if (filter) {
480
+ for (const unsupportedFilter of unsupportedFilters) {
481
+ if (unsupportedFilter in filter) {
482
+ throw new UnsupportedParamError("queryTransactionBlocks", unsupportedFilter);
483
+ }
484
+ }
485
+ }
486
+ let graphqlTransactionKindFilter;
487
+ if ("TransactionKind" in filter) {
488
+ switch (filter.TransactionKind) {
489
+ case "ProgrammableTransaction":
490
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.ProgrammableTx;
491
+ break;
492
+ case "Genesis":
493
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.Genesis;
494
+ break;
495
+ case "ConsensusCommitPrologueV1":
496
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.ConsensusCommitPrologueV1;
497
+ break;
498
+ case "AuthenticatorStateUpdateV1":
499
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.AuthenticatorStateUpdateV1;
500
+ break;
501
+ case "RandomnessStateUpdate":
502
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.RandomnessStateUpdate;
503
+ break;
504
+ case "EndOfEpochTransaction":
505
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.EndOfEpochTx;
506
+ break;
507
+ case "SystemTransaction":
508
+ graphqlTransactionKindFilter = import_queries.TransactionBlockKindInput.SystemTx;
509
+ break;
510
+ }
511
+ }
512
+ const { nodes: transactionBlocks, pageInfo } = await transport.graphqlQuery(
513
+ {
514
+ query: import_queries.QueryTransactionBlocksDocument,
515
+ variables: {
516
+ ...pagination,
517
+ showBalanceChanges: options?.showBalanceChanges,
518
+ showEffects: options?.showEffects,
519
+ showEvents: options?.showEvents,
520
+ showInput: options?.showInput,
521
+ showObjectChanges: options?.showObjectChanges,
522
+ showRawEffects: options?.showRawEffects,
523
+ showRawInput: options?.showRawInput,
524
+ filter: filter ? {
525
+ atCheckpoint: "Checkpoint" in filter ? Number.parseInt(filter.Checkpoint) : void 0,
526
+ function: "MoveFunction" in filter ? `${filter.MoveFunction.package}::${filter.MoveFunction.module}::${filter.MoveFunction.function}` : void 0,
527
+ inputObject: "InputObject" in filter ? filter.InputObject : void 0,
528
+ changedObject: "ChangedObject" in filter ? filter.ChangedObject : void 0,
529
+ signAddress: "FromAddress" in filter ? filter.FromAddress : void 0,
530
+ recvAddress: "ToAddress" in filter ? filter.ToAddress : void 0,
531
+ kind: graphqlTransactionKindFilter
532
+ } : {}
533
+ }
534
+ },
535
+ (data) => data.transactionBlocks
536
+ );
537
+ for (const transactionBlock of transactionBlocks) {
538
+ await paginateTransactionBlockLists(transport, transactionBlock);
539
+ }
540
+ if (pagination.last) {
541
+ transactionBlocks.reverse();
542
+ }
543
+ return {
544
+ hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,
545
+ nextCursor: pagination.last ? pageInfo.startCursor : pageInfo.endCursor,
546
+ data: transactionBlocks.map(
547
+ (transactionBlock) => (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(transactionBlock, options ?? {})
548
+ )
549
+ };
550
+ },
551
+ async getTransactionBlock(transport, [digest, options]) {
552
+ const transactionBlock = await transport.graphqlQuery(
553
+ {
554
+ query: import_queries.GetTransactionBlockDocument,
555
+ variables: {
556
+ digest,
557
+ showBalanceChanges: options?.showBalanceChanges,
558
+ showEffects: options?.showEffects,
559
+ showEvents: options?.showEvents,
560
+ showInput: options?.showInput,
561
+ showObjectChanges: options?.showObjectChanges,
562
+ showRawEffects: options?.showRawEffects,
563
+ showRawInput: options?.showRawInput
564
+ }
565
+ },
566
+ (data) => data.transactionBlock
567
+ );
568
+ await paginateTransactionBlockLists(transport, transactionBlock);
569
+ return (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(transactionBlock, options);
570
+ },
571
+ async multiGetTransactionBlocks(transport, [digests, options]) {
572
+ const transactionBlocks = await transport.graphqlQuery(
573
+ {
574
+ query: import_queries.MultiGetTransactionBlocksDocument,
575
+ variables: {
576
+ digests,
577
+ showBalanceChanges: options?.showBalanceChanges,
578
+ showEffects: options?.showEffects,
579
+ showEvents: options?.showEvents,
580
+ showInput: options?.showInput,
581
+ showObjectChanges: options?.showObjectChanges,
582
+ showRawEffects: options?.showEffects,
583
+ showRawInput: options?.showRawInput,
584
+ limit: digests.length
585
+ }
586
+ },
587
+ (data) => data.transactionBlocks?.nodes
588
+ );
589
+ for (const transactionBlock of transactionBlocks) {
590
+ await paginateTransactionBlockLists(transport, transactionBlock);
591
+ }
592
+ return transactionBlocks.map(
593
+ (transactionBlock) => (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(transactionBlock, options)
594
+ );
595
+ },
596
+ async getTotalTransactionBlocks(transport) {
597
+ return transport.graphqlQuery(
598
+ {
599
+ query: import_queries.GetTotalTransactionBlocksDocument
600
+ },
601
+ (data) => BigInt(data.checkpoint?.networkTotalTransactions)
602
+ );
603
+ },
604
+ async getReferenceGasPrice(transport) {
605
+ const epoch = await transport.graphqlQuery(
606
+ {
607
+ query: import_queries.GetReferenceGasPriceDocument,
608
+ variables: {}
609
+ },
610
+ (data) => data.epoch
611
+ );
612
+ return BigInt(epoch.referenceGasPrice);
613
+ },
614
+ async getStakes(transport, [owner]) {
615
+ const stakes = await transport.graphqlQuery(
616
+ {
617
+ query: import_queries.GetStakesDocument,
618
+ variables: {
619
+ owner
620
+ }
621
+ },
622
+ (data) => data.address?.stakedIotas?.nodes
623
+ );
624
+ return (0, import_stakes.mapGraphQLStakeToRpcStake)(stakes);
625
+ },
626
+ async getStakesByIds(transport, [stakedIotaIds]) {
627
+ const stakes = await transport.graphqlQuery(
628
+ {
629
+ query: import_queries.GetStakesByIdsDocument,
630
+ variables: {
631
+ ids: stakedIotaIds
632
+ }
633
+ },
634
+ (data) => data.objects?.nodes.map((node) => node?.asMoveObject?.asStakedIota).filter(Boolean)
635
+ );
636
+ return (0, import_stakes.mapGraphQLStakeToRpcStake)(stakes);
637
+ },
638
+ async getLatestIotaSystemStateV2(transport) {
639
+ const systemState = await transport.graphqlQuery(
640
+ {
641
+ query: import_queries.GetLatestIotaSystemStateDocument
642
+ },
643
+ (data) => data.epoch
644
+ );
645
+ let hasMoreActiveValidators = systemState.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;
646
+ let afterActiveValidators = systemState.validatorSet?.activeValidators?.pageInfo.endCursor;
647
+ while (hasMoreActiveValidators) {
648
+ const page = await transport.graphqlQuery(
649
+ {
650
+ query: import_queries.PaginateEpochValidatorsDocument,
651
+ variables: {
652
+ id: systemState.epochId,
653
+ after: afterActiveValidators
654
+ }
655
+ },
656
+ (data) => data.epoch
657
+ );
658
+ systemState.validatorSet?.activeValidators?.nodes.push(
659
+ ...page.validatorSet?.activeValidators?.nodes ?? []
660
+ );
661
+ hasMoreActiveValidators = page.validatorSet?.activeValidators?.pageInfo.hasNextPage ?? false;
662
+ afterActiveValidators = page.validatorSet?.activeValidators?.pageInfo.endCursor;
663
+ }
664
+ let hasMoreCommitteeMembers = systemState.validatorSet?.committeeMembers?.pageInfo.hasNextPage ?? false;
665
+ let afterCommitteeMembers = systemState.validatorSet?.committeeMembers?.pageInfo.endCursor;
666
+ while (hasMoreCommitteeMembers) {
667
+ const page = await transport.graphqlQuery(
668
+ {
669
+ query: import_queries.PaginateEpochValidatorsDocument,
670
+ variables: {
671
+ id: systemState.epochId,
672
+ after: afterCommitteeMembers
673
+ }
674
+ },
675
+ (data) => data.epoch
676
+ );
677
+ systemState.validatorSet?.committeeMembers?.nodes.push(
678
+ ...page.validatorSet?.committeeMembers?.nodes ?? []
679
+ );
680
+ hasMoreCommitteeMembers = page.validatorSet?.committeeMembers?.pageInfo.hasNextPage ?? false;
681
+ afterCommitteeMembers = page.validatorSet?.committeeMembers?.pageInfo.endCursor;
682
+ }
683
+ return {
684
+ V2: {
685
+ activeValidators: systemState.validatorSet?.activeValidators?.nodes.map(
686
+ import_validator.mapGraphQlValidatorToRpcValidator
687
+ ),
688
+ committeeMembers: systemState.validatorSet?.committeeMembers?.nodes?.map(
689
+ (_, index) => index.toString()
690
+ ),
691
+ atRiskValidators: systemState.validatorSet?.activeValidators.nodes?.filter((validator) => validator.atRisk).map((validator) => [
692
+ validator.address.address,
693
+ validator.atRisk.toString()
694
+ ]),
695
+ epoch: String(systemState.epochId),
696
+ epochDurationMs: String(
697
+ new Date(systemState.endTimestamp).getTime() - new Date(systemState.startTimestamp).getTime()
698
+ ),
699
+ epochStartTimestampMs: String(new Date(systemState.startTimestamp).getTime()),
700
+ inactivePoolsSize: String(systemState.validatorSet?.inactivePoolsSize),
701
+ iotaTotalSupply: String(systemState.iotaTotalSupply),
702
+ iotaTreasuryCapId: String(systemState.iotaTreasuryCapId),
703
+ maxValidatorCount: String(systemState.systemParameters?.maxValidatorCount),
704
+ minValidatorCount: String(systemState.systemParameters?.minValidatorCount),
705
+ minValidatorJoiningStake: String(
706
+ systemState.systemParameters?.minValidatorJoiningStake
707
+ ),
708
+ pendingActiveValidatorsSize: String(
709
+ systemState.validatorSet?.pendingActiveValidatorsSize
710
+ ),
711
+ pendingRemovals: systemState.validatorSet?.pendingRemovals?.map((idx) => String(idx)) ?? [],
712
+ protocolVersion: String(systemState.protocolConfigs?.protocolVersion),
713
+ referenceGasPrice: String(systemState.referenceGasPrice),
714
+ safeMode: systemState.safeMode?.enabled,
715
+ safeModeComputationCharges: String(
716
+ systemState.safeMode?.gasSummary?.computationCost
717
+ ),
718
+ safeModeComputationChargesBurned: String(
719
+ systemState.safeMode?.gasSummary?.computationCostBurned
720
+ ),
721
+ safeModeNonRefundableStorageFee: String(
722
+ systemState.safeMode?.gasSummary?.nonRefundableStorageFee
723
+ ),
724
+ safeModeStorageRebates: String(systemState.safeMode?.gasSummary?.storageRebate),
725
+ safeModeStorageCharges: String(systemState.safeMode?.gasSummary?.storageCost),
726
+ stakingPoolMappingsSize: String(systemState.validatorSet?.stakingPoolMappingsSize),
727
+ storageFundNonRefundableBalance: String(
728
+ systemState.storageFund?.nonRefundableBalance
729
+ ),
730
+ storageFundTotalObjectStorageRebates: String(
731
+ systemState.storageFund?.totalObjectStorageRebates
732
+ ),
733
+ systemStateVersion: String(systemState.systemStateVersion),
734
+ totalStake: systemState.validatorSet?.totalStake,
735
+ validatorCandidatesSize: systemState.validatorSet?.validatorCandidatesSize?.toString(),
736
+ validatorLowStakeGracePeriod: systemState.systemParameters?.validatorLowStakeGracePeriod,
737
+ validatorLowStakeThreshold: systemState.systemParameters?.validatorLowStakeThreshold,
738
+ validatorReportRecords: [],
739
+ // TODO
740
+ validatorVeryLowStakeThreshold: systemState.systemParameters?.validatorVeryLowStakeThreshold,
741
+ validatorCandidatesId: systemState.validatorSet?.validatorCandidatesId,
742
+ inactivePoolsId: systemState.validatorSet?.inactivePoolsId,
743
+ pendingActiveValidatorsId: systemState.validatorSet?.pendingActiveValidatorsId,
744
+ stakingPoolMappingsId: systemState.validatorSet?.stakingPoolMappingsId
745
+ }
746
+ };
747
+ },
748
+ async queryEvents(transport, [query, cursor, limit, descending]) {
749
+ const pagination = descending ? { last: limit, before: cursor } : { first: limit, after: cursor };
750
+ const filter = {
751
+ sender: "Sender" in query ? query.Sender : void 0,
752
+ transactionDigest: "Transaction" in query ? query.Transaction : void 0,
753
+ eventType: "MoveEventType" in query ? query.MoveEventType : void 0,
754
+ emittingModule: "MoveModule" in query ? `${query.MoveModule.package}::${query.MoveModule.module}` : void 0
755
+ };
756
+ if ("MoveEventType" in query) {
757
+ filter.eventType = query.MoveEventType;
758
+ } else if ("MoveEventModule" in query) {
759
+ filter.eventType = `${query.MoveEventModule.package}::${query.MoveEventModule.module}`;
760
+ }
761
+ const unsupportedFilters = [
762
+ "Package",
763
+ "MoveEventField",
764
+ "Any",
765
+ "All",
766
+ "And",
767
+ "Or",
768
+ "TimeRange"
769
+ ];
770
+ if (query) {
771
+ for (const unsupportedFilter of unsupportedFilters) {
772
+ if (unsupportedFilter in query) {
773
+ throw new UnsupportedParamError("queryEvents", unsupportedFilter);
774
+ }
775
+ }
776
+ }
777
+ const { nodes: events, pageInfo } = await transport.graphqlQuery(
778
+ {
779
+ query: import_queries.QueryEventsDocument,
780
+ variables: {
781
+ ...pagination,
782
+ filter
783
+ }
784
+ },
785
+ (data) => data.events
786
+ );
787
+ if (pagination.last) {
788
+ events.reverse();
789
+ }
790
+ return {
791
+ hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,
792
+ nextCursor: pagination.last ? pageInfo.startCursor : pageInfo.endCursor,
793
+ data: events.map((event) => ({
794
+ bcs: event.bcs,
795
+ bcsEncoding: "base64",
796
+ id: {
797
+ eventSeq: "",
798
+ // TODO
799
+ txDigest: ""
800
+ // TODO
801
+ },
802
+ packageId: event.sendingModule?.package.address,
803
+ parsedJson: event.json,
804
+ sender: event.sender?.address,
805
+ timestampMs: new Date(event.timestamp).getTime().toString(),
806
+ transactionModule: `${event.sendingModule?.package.address}::${event.sendingModule?.name}`,
807
+ type: (0, import_util.toShortTypeString)(event.type?.repr)
808
+ }))
809
+ };
810
+ },
811
+ async devInspectTransactionBlock(transport, [sender, devInspectTxBytes, gasPrice]) {
812
+ const { transaction, error, results } = await transport.graphqlQuery(
813
+ {
814
+ query: import_queries.DevInspectTransactionBlockDocument,
815
+ variables: {
816
+ txBytes: devInspectTxBytes,
817
+ txMeta: {
818
+ gasPrice: Number.parseInt(gasPrice),
819
+ sender
820
+ },
821
+ showEffects: true,
822
+ showEvents: true
823
+ }
824
+ },
825
+ (data) => data.dryRunTransactionBlock
826
+ );
827
+ if (!transaction) {
828
+ throw new Error("Unexpected error during dry run");
829
+ }
830
+ const result = (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(transaction, {
831
+ showEffects: true,
832
+ showEvents: true
833
+ });
834
+ return {
835
+ error,
836
+ effects: result.effects,
837
+ events: result.events,
838
+ results: results?.map((result2) => ({
839
+ mutableReferenceOutputs: result2.mutatedReferences?.map(
840
+ (ref) => [
841
+ ref.input.__typename === "GasCoin" ? "GasCoin" : ref.input.__typename === "Input" ? {
842
+ Input: ref.input.inputIndex
843
+ } : typeof ref.input.resultIndex === "number" ? {
844
+ NestedResult: [ref.input.cmd, ref.input.resultIndex]
845
+ } : {
846
+ Result: ref.input.cmd
847
+ },
848
+ Array.from((0, import_bcs.fromBase64)(ref.bcs)),
849
+ (0, import_util.toShortTypeString)(ref.type.repr)
850
+ ]
851
+ ),
852
+ returnValues: result2.returnValues?.map((value) => [
853
+ Array.from((0, import_bcs.fromBase64)(value.bcs)),
854
+ (0, import_util.toShortTypeString)(value.type.repr)
855
+ ])
856
+ }))
857
+ };
858
+ },
859
+ async getDynamicFields(transport, [parentId, cursor, limit]) {
860
+ const { nodes: fields, pageInfo } = await transport.graphqlQuery(
861
+ {
862
+ query: import_queries.GetDynamicFieldsDocument,
863
+ variables: {
864
+ parentId,
865
+ first: limit,
866
+ cursor
867
+ }
868
+ },
869
+ (data) => data.owner?.dynamicFields
870
+ );
871
+ return {
872
+ data: fields.map((field) => ({
873
+ bcsName: field.name?.bcs,
874
+ bcsEncoding: "base64",
875
+ digest: field.value?.__typename === "MoveObject" ? field.value.digest : void 0,
876
+ name: {
877
+ type: (0, import_util.toShortTypeString)(field.name?.type.repr),
878
+ value: field.name?.json
879
+ },
880
+ objectId: field.value?.__typename === "MoveObject" ? field.value.address : void 0,
881
+ objectType: field.value?.__typename === "MoveObject" ? field.value.contents?.type.repr : field.value?.type.repr,
882
+ type: field.value?.__typename === "MoveObject" ? "DynamicObject" : "DynamicField",
883
+ version: field.value?.__typename === "MoveObject" ? field.value.version : void 0
884
+ })),
885
+ nextCursor: pageInfo.endCursor ?? null,
886
+ hasNextPage: pageInfo.hasNextPage
887
+ };
888
+ },
889
+ async getDynamicFieldObjectV2(transport, inputs) {
890
+ return await getDynamicFieldObject(transport, inputs);
891
+ },
892
+ /**
893
+ * @deprecated The V1 of this method is deprecated, use `getDynamicFieldObjectV2` instead.
894
+ */
895
+ async getDynamicFieldObject(transport, [parentId, name]) {
896
+ return await getDynamicFieldObject(transport, [
897
+ parentId,
898
+ name,
899
+ {
900
+ // These are the same defaults as in the JSON RPC.
901
+ showBcs: true,
902
+ showContent: true,
903
+ showDisplay: true,
904
+ showOwner: true,
905
+ showPreviousTransaction: true,
906
+ showStorageRebate: true,
907
+ showType: true
908
+ }
909
+ ]);
910
+ },
911
+ async executeTransactionBlock(transport, [txBytes, signatures, options]) {
912
+ const { effects, errors } = await transport.graphqlQuery(
913
+ {
914
+ query: import_queries.ExecuteTransactionBlockDocument,
915
+ variables: {
916
+ txBytes,
917
+ signatures,
918
+ showBalanceChanges: options?.showBalanceChanges,
919
+ showEffects: options?.showEffects,
920
+ showEvents: options?.showEvents,
921
+ showInput: options?.showInput,
922
+ showObjectChanges: options?.showObjectChanges,
923
+ showRawEffects: options?.showRawEffects,
924
+ showRawInput: options?.showRawInput
925
+ }
926
+ },
927
+ (data) => data.executeTransactionBlock
928
+ );
929
+ if (!effects?.transactionBlock) {
930
+ const tx = import_transactions.Transaction.from((0, import_bcs.fromBase64)(txBytes));
931
+ return { errors: errors ?? void 0, digest: await tx.getDigest() };
932
+ }
933
+ await paginateTransactionBlockLists(transport, effects.transactionBlock);
934
+ return (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(
935
+ effects.transactionBlock,
936
+ options,
937
+ errors
938
+ );
939
+ },
940
+ async dryRunTransactionBlock(transport, [txBytes]) {
941
+ const tx = import_transactions.Transaction.from((0, import_bcs.fromBase64)(txBytes));
942
+ const { transaction, error } = await transport.graphqlQuery(
943
+ {
944
+ query: import_queries.DryRunTransactionBlockDocument,
945
+ variables: {
946
+ txBytes,
947
+ showBalanceChanges: true,
948
+ showEffects: true,
949
+ showEvents: true,
950
+ showInput: true,
951
+ showObjectChanges: true
952
+ }
953
+ },
954
+ (data) => data.dryRunTransactionBlock
955
+ );
956
+ if (error || !transaction) {
957
+ throw new Error(error ?? "Unexpected error during dry run");
958
+ }
959
+ const result = (0, import_transaction_block.mapGraphQLTransactionBlockToRpcTransactionBlock)(
960
+ { ...transaction, digest: await tx.getDigest() },
961
+ {
962
+ showBalanceChanges: true,
963
+ showEffects: true,
964
+ showEvents: true,
965
+ showInput: true,
966
+ showObjectChanges: true
967
+ }
968
+ );
969
+ return {
970
+ input: result.transaction?.data,
971
+ balanceChanges: result.balanceChanges,
972
+ effects: result.effects,
973
+ events: result.events,
974
+ objectChanges: result.objectChanges
975
+ };
976
+ },
977
+ async getLatestCheckpointSequenceNumber(transport) {
978
+ const sequenceNumber = await transport.graphqlQuery(
979
+ {
980
+ query: import_queries.GetLatestCheckpointSequenceNumberDocument
981
+ },
982
+ (data) => data.checkpoint?.sequenceNumber
983
+ );
984
+ return sequenceNumber.toString();
985
+ },
986
+ async getCheckpoint(transport, [id]) {
987
+ const checkpoint = await transport.graphqlQuery(
988
+ {
989
+ query: import_queries.GetCheckpointDocument,
990
+ variables: {
991
+ id: typeof id === "number" || (0, import_util.isNumericString)(id) ? {
992
+ sequenceNumber: Number.parseInt(id.toString(), 10)
993
+ } : {
994
+ digest: id
995
+ }
996
+ }
997
+ },
998
+ (data) => data.checkpoint
999
+ );
1000
+ await paginateCheckpointLists(transport, checkpoint);
1001
+ return (0, import_checkpoint.mapGraphQLCheckpointToRpcCheckpoint)(checkpoint);
1002
+ },
1003
+ async getCheckpoints(transport, [cursor, limit, descendingOrder]) {
1004
+ const pagination = descendingOrder ? { last: limit, before: cursor } : { first: limit, after: cursor };
1005
+ const { nodes: checkpoints, pageInfo } = await transport.graphqlQuery(
1006
+ {
1007
+ query: import_queries.GetCheckpointsDocument,
1008
+ variables: {
1009
+ ...pagination
1010
+ }
1011
+ },
1012
+ (data) => data.checkpoints
1013
+ );
1014
+ for (const checkpoint of checkpoints) {
1015
+ await paginateCheckpointLists(transport, checkpoint);
1016
+ }
1017
+ if (pagination.last) {
1018
+ checkpoints.reverse();
1019
+ }
1020
+ return {
1021
+ hasNextPage: pagination.last ? pageInfo.hasPreviousPage : pageInfo.hasNextPage,
1022
+ nextCursor: pagination.last ? pageInfo.startCursor : pageInfo.endCursor,
1023
+ data: checkpoints.map((checkpoint) => (0, import_checkpoint.mapGraphQLCheckpointToRpcCheckpoint)(checkpoint))
1024
+ };
1025
+ },
1026
+ async getCommitteeInfo(transport, [epoch]) {
1027
+ const { validatorSet, epochId } = await transport.graphqlQuery(
1028
+ {
1029
+ query: import_queries.GetCommitteeInfoDocument,
1030
+ variables: {
1031
+ epochId: epoch ? Number.parseInt(epoch) : void 0
1032
+ }
1033
+ },
1034
+ (data) => data.epoch
1035
+ );
1036
+ let hasNextPage = validatorSet?.committeeMembers?.pageInfo.hasNextPage;
1037
+ let after = validatorSet?.committeeMembers?.pageInfo.endCursor;
1038
+ while (hasNextPage) {
1039
+ const page = await transport.graphqlQuery(
1040
+ {
1041
+ query: import_queries.GetCommitteeInfoDocument,
1042
+ variables: {
1043
+ epochId: epoch ? Number.parseInt(epoch) : void 0,
1044
+ after
1045
+ }
1046
+ },
1047
+ (data) => data.epoch?.validatorSet?.committeeMembers
1048
+ );
1049
+ validatorSet?.committeeMembers.nodes.push(...page.nodes);
1050
+ hasNextPage = page.pageInfo.hasNextPage;
1051
+ after = page.pageInfo.endCursor;
1052
+ }
1053
+ return {
1054
+ epoch: epochId.toString(),
1055
+ validators: validatorSet?.committeeMembers?.nodes.map((val) => [
1056
+ val.credentials?.authorityPubKey,
1057
+ String(val.votingPower)
1058
+ ])
1059
+ };
1060
+ },
1061
+ async getCurrentEpoch(transport) {
1062
+ const epoch = await transport.graphqlQuery(
1063
+ {
1064
+ query: import_queries.GetCurrentEpochDocument
1065
+ },
1066
+ (data) => data.epoch
1067
+ );
1068
+ let hasNextPageActiveValidators = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;
1069
+ let afterActiveValidators = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;
1070
+ while (hasNextPageActiveValidators) {
1071
+ const page = await transport.graphqlQuery(
1072
+ {
1073
+ query: import_queries.PaginateEpochValidatorsDocument,
1074
+ variables: {
1075
+ id: epoch.epochId,
1076
+ after: afterActiveValidators
1077
+ }
1078
+ },
1079
+ (data) => data.epoch?.validatorSet?.activeValidators
1080
+ );
1081
+ epoch.validatorSet?.activeValidators?.nodes.push(...page.nodes);
1082
+ hasNextPageActiveValidators = page.pageInfo.hasNextPage;
1083
+ afterActiveValidators = page.pageInfo.endCursor;
1084
+ }
1085
+ let hasNextPageCommitteeMembers = epoch.validatorSet?.committeeMembers?.pageInfo.hasNextPage;
1086
+ let afterCommitteeMembers = epoch.validatorSet?.committeeMembers?.pageInfo.endCursor;
1087
+ while (hasNextPageCommitteeMembers) {
1088
+ const page = await transport.graphqlQuery(
1089
+ {
1090
+ query: import_queries.PaginateEpochValidatorsDocument,
1091
+ variables: {
1092
+ id: epoch.epochId,
1093
+ after: afterCommitteeMembers
1094
+ }
1095
+ },
1096
+ (data) => data.epoch?.validatorSet?.committeeMembers
1097
+ );
1098
+ epoch.validatorSet?.committeeMembers?.nodes.push(...page.nodes);
1099
+ hasNextPageCommitteeMembers = page.pageInfo.hasNextPage;
1100
+ afterCommitteeMembers = page.pageInfo.endCursor;
1101
+ }
1102
+ const validatorsAddresses = epoch.validatorSet?.activeValidators?.nodes.map((val) => val.address.address) ?? [];
1103
+ const committeeMembersAddresses = epoch.validatorSet?.committeeMembers?.nodes.map((val) => val.address.address) ?? [];
1104
+ const committeeValidatorsIndexes = committeeMembersAddresses.map(
1105
+ (val) => validatorsAddresses.indexOf(val)?.toString()
1106
+ );
1107
+ return {
1108
+ epoch: String(epoch.epochId),
1109
+ validators: epoch.validatorSet?.activeValidators?.nodes.map(
1110
+ import_validator.mapGraphQlValidatorToRpcValidator
1111
+ ),
1112
+ committeeMembers: committeeValidatorsIndexes,
1113
+ epochTotalTransactions: "0",
1114
+ // TODO
1115
+ firstCheckpointId: epoch.firstCheckpoint?.nodes[0]?.sequenceNumber.toString(),
1116
+ endOfEpochInfo: null,
1117
+ referenceGasPrice: epoch.referenceGasPrice,
1118
+ epochStartTimestamp: new Date(epoch.startTimestamp).getTime().toString()
1119
+ };
1120
+ },
1121
+ async getValidatorsApy(transport) {
1122
+ const epoch = await transport.graphqlQuery(
1123
+ {
1124
+ query: import_queries.GetValidatorsApyDocument
1125
+ },
1126
+ (data) => data.epoch
1127
+ );
1128
+ let hasNextPage = epoch.validatorSet?.activeValidators?.pageInfo.hasNextPage;
1129
+ let after = epoch.validatorSet?.activeValidators?.pageInfo.endCursor;
1130
+ while (hasNextPage) {
1131
+ const page = await transport.graphqlQuery(
1132
+ {
1133
+ query: import_queries.PaginateEpochValidatorsDocument,
1134
+ variables: {
1135
+ id: epoch.epochId,
1136
+ after
1137
+ }
1138
+ },
1139
+ (data) => data.epoch
1140
+ );
1141
+ epoch.validatorSet?.activeValidators?.nodes.push(
1142
+ ...page.validatorSet?.activeValidators?.nodes ?? []
1143
+ );
1144
+ hasNextPage = page.validatorSet?.activeValidators?.pageInfo.hasNextPage;
1145
+ after = page.validatorSet?.activeValidators?.pageInfo.endCursor;
1146
+ }
1147
+ return {
1148
+ epoch: String(epoch.epochId),
1149
+ apys: epoch.validatorSet?.activeValidators?.nodes.map((validator) => ({
1150
+ address: validator.address.address,
1151
+ apy: typeof validator.apy === "number" ? validator.apy / 100 : null
1152
+ }))
1153
+ };
1154
+ },
1155
+ async getChainIdentifier(transport) {
1156
+ const identifier = await transport.graphqlQuery(
1157
+ {
1158
+ query: import_queries.GetChainIdentifierDocument
1159
+ },
1160
+ (data) => data.chainIdentifier
1161
+ );
1162
+ return identifier;
1163
+ },
1164
+ async getProtocolConfig(transport, [version]) {
1165
+ const protocolConfig = await transport.graphqlQuery(
1166
+ {
1167
+ query: import_queries.GetProtocolConfigDocument,
1168
+ variables: {
1169
+ protocolVersion: version ? Number.parseInt(version) : void 0
1170
+ }
1171
+ },
1172
+ (data) => data.protocolConfig
1173
+ );
1174
+ const featureFlags = {};
1175
+ const attributes = {};
1176
+ const configTypeMap = {
1177
+ max_arguments: "u32",
1178
+ max_gas_payment_objects: "u32",
1179
+ max_modules_in_publish: "u32",
1180
+ max_programmable_tx_commands: "u32",
1181
+ max_pure_argument_size: "u32",
1182
+ max_type_argument_depth: "u32",
1183
+ max_type_arguments: "u32",
1184
+ move_binary_format_version: "u32",
1185
+ min_move_binary_format_version: "u32",
1186
+ random_beacon_reduction_allowed_delta: "u16",
1187
+ random_beacon_dkg_timeout_round: "u32",
1188
+ random_beacon_reduction_lower_bound: "u32",
1189
+ scoring_decision_cutoff_value: "f64",
1190
+ scoring_decision_mad_divisor: "f64",
1191
+ group_ops_bls12381_msm_max_len: "u32",
1192
+ binary_module_handles: "u16",
1193
+ binary_struct_handles: "u16",
1194
+ binary_function_handles: "u16",
1195
+ binary_function_instantiations: "u16",
1196
+ binary_signatures: "u16",
1197
+ binary_constant_pool: "u16",
1198
+ binary_identifiers: "u16",
1199
+ binary_address_identifiers: "u16",
1200
+ binary_struct_defs: "u16",
1201
+ binary_struct_def_instantiations: "u16",
1202
+ binary_function_defs: "u16",
1203
+ binary_field_handles: "u16",
1204
+ binary_field_instantiations: "u16",
1205
+ binary_friend_decls: "u16",
1206
+ max_package_dependencies: "u32",
1207
+ bridge_should_try_to_finalize_committee: "bool",
1208
+ consensus_gc_depth: "u32"
1209
+ };
1210
+ for (const { key, value } of protocolConfig.configs) {
1211
+ attributes[key] = value === null ? null : {
1212
+ [configTypeMap[key] ?? "u64"]: value
1213
+ };
1214
+ }
1215
+ for (const { key, value } of protocolConfig.featureFlags) {
1216
+ featureFlags[key] = value;
1217
+ }
1218
+ return {
1219
+ maxSupportedProtocolVersion: protocolConfig.protocolVersion?.toString(),
1220
+ minSupportedProtocolVersion: "1",
1221
+ protocolVersion: protocolConfig.protocolVersion?.toString(),
1222
+ attributes,
1223
+ featureFlags
1224
+ };
1225
+ },
1226
+ async isTransactionIndexedOnNode(transport, [digest]) {
1227
+ const isTransactionIndexedOnNode = await transport.graphqlQuery(
1228
+ {
1229
+ query: import_queries.IsTransactionIndexedOnNodeDocument,
1230
+ variables: {
1231
+ digest
1232
+ }
1233
+ },
1234
+ (data) => data.isTransactionIndexedOnNode
1235
+ );
1236
+ return isTransactionIndexedOnNode;
1237
+ }
1238
+ };
1239
+ class UnsupportedParamError extends Error {
1240
+ constructor(method, param) {
1241
+ super(`Parameter ${param} is not supported for ${method} in the GraphQL API`);
1242
+ }
1243
+ }
1244
+ class UnsupportedMethodError extends Error {
1245
+ constructor(method) {
1246
+ super(`Method ${method} is not supported in the GraphQL API`);
1247
+ }
1248
+ }
1249
+ async function paginateTransactionBlockLists(transport, transactionBlock) {
1250
+ let hasMoreEvents = transactionBlock.effects?.events?.pageInfo.hasNextPage ?? false;
1251
+ let hasMoreBalanceChanges = transactionBlock.effects?.balanceChanges?.pageInfo.hasNextPage ?? false;
1252
+ let hasMoreObjectChanges = transactionBlock.effects?.objectChanges?.pageInfo.hasNextPage ?? false;
1253
+ let afterEvents = transactionBlock.effects?.events?.pageInfo.endCursor;
1254
+ let afterBalanceChanges = transactionBlock.effects?.balanceChanges?.pageInfo.endCursor;
1255
+ let afterObjectChanges = transactionBlock.effects?.objectChanges?.pageInfo.endCursor;
1256
+ while (hasMoreEvents || hasMoreBalanceChanges || hasMoreObjectChanges) {
1257
+ const page = await transport.graphqlQuery(
1258
+ {
1259
+ query: import_queries.PaginateTransactionBlockListsDocument,
1260
+ variables: {
1261
+ digest: transactionBlock.digest,
1262
+ afterEvents,
1263
+ afterBalanceChanges,
1264
+ afterObjectChanges,
1265
+ hasMoreEvents,
1266
+ hasMoreBalanceChanges,
1267
+ hasMoreObjectChanges
1268
+ }
1269
+ },
1270
+ (data) => data.transactionBlock?.effects
1271
+ );
1272
+ transactionBlock.effects?.events?.nodes.push(...page.events?.nodes ?? []);
1273
+ transactionBlock.effects?.balanceChanges?.nodes.push(...page.balanceChanges?.nodes ?? []);
1274
+ transactionBlock.effects?.objectChanges?.nodes.push(...page.objectChanges?.nodes ?? []);
1275
+ hasMoreEvents = page.events?.pageInfo.hasNextPage ?? false;
1276
+ hasMoreBalanceChanges = page.balanceChanges?.pageInfo.hasNextPage ?? false;
1277
+ hasMoreObjectChanges = page.objectChanges?.pageInfo.hasNextPage ?? false;
1278
+ afterEvents = page.events?.pageInfo.endCursor;
1279
+ afterBalanceChanges = page.balanceChanges?.pageInfo.endCursor;
1280
+ afterObjectChanges = page.objectChanges?.pageInfo.endCursor;
1281
+ }
1282
+ }
1283
+ async function paginateCheckpointLists(transport, checkpoint) {
1284
+ let hasNextPage = checkpoint.transactionBlocks.pageInfo.hasNextPage;
1285
+ let after = checkpoint.transactionBlocks.pageInfo.endCursor;
1286
+ while (hasNextPage) {
1287
+ const page = await transport.graphqlQuery(
1288
+ {
1289
+ query: import_queries.PaginateCheckpointTransactionBlocksDocument,
1290
+ variables: {
1291
+ id: { digest: checkpoint.digest },
1292
+ after
1293
+ }
1294
+ },
1295
+ (data) => data.checkpoint?.transactionBlocks
1296
+ );
1297
+ checkpoint.transactionBlocks.nodes.push(...page.nodes);
1298
+ hasNextPage = page.pageInfo.hasNextPage;
1299
+ after = page.pageInfo.endCursor;
1300
+ }
1301
+ const endOfEpochTx = checkpoint.endOfEpoch.nodes[0];
1302
+ if (endOfEpochTx?.kind?.__typename === "EndOfEpochTransaction" && endOfEpochTx.kind?.transactions.nodes[0].__typename === "ChangeEpochTransactionV2" && endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId) {
1303
+ const validatorSet = endOfEpochTx.kind.transactions.nodes[0].epoch.validatorSet;
1304
+ let hasNextPage2 = validatorSet?.committeeMembers.pageInfo.hasNextPage;
1305
+ let after2 = validatorSet?.committeeMembers.pageInfo.endCursor;
1306
+ while (hasNextPage2) {
1307
+ const page = await transport.graphqlQuery(
1308
+ {
1309
+ query: import_queries.GetCommitteeInfoDocument,
1310
+ variables: {
1311
+ epochId: endOfEpochTx.kind.transactions.nodes[0].epoch?.epochId,
1312
+ after: after2
1313
+ }
1314
+ },
1315
+ (data) => data.epoch?.validatorSet?.committeeMembers
1316
+ );
1317
+ validatorSet?.committeeMembers.nodes.push(...page.nodes);
1318
+ hasNextPage2 = page.pageInfo?.hasNextPage;
1319
+ after2 = page.pageInfo?.endCursor;
1320
+ }
1321
+ }
1322
+ }
1323
+ async function getDynamicFieldObject(transport, [parentId, name, options]) {
1324
+ const nameLayout = await transport.graphqlQuery(
1325
+ {
1326
+ query: import_queries.GetTypeLayoutDocument,
1327
+ variables: {
1328
+ type: name.type
1329
+ }
1330
+ },
1331
+ (data) => data.type.layout
1332
+ );
1333
+ const bcsName = (0, import_bcs2.mapJsonToBcs)(name.value, nameLayout);
1334
+ const parent = await transport.graphqlQuery(
1335
+ {
1336
+ query: import_queries.GetDynamicFieldObjectDocument,
1337
+ variables: {
1338
+ parentId,
1339
+ name: {
1340
+ type: name.type,
1341
+ bcs: bcsName
1342
+ },
1343
+ showBcs: options?.showBcs,
1344
+ showContent: options?.showContent,
1345
+ showDisplay: options?.showDisplay,
1346
+ showOwner: options?.showOwner,
1347
+ showPreviousTransaction: options?.showPreviousTransaction,
1348
+ showStorageRebate: options?.showStorageRebate,
1349
+ showType: options?.showType
1350
+ }
1351
+ },
1352
+ (data) => {
1353
+ return data.owner?.dynamicObjectField?.value?.__typename === "MoveObject" ? data.owner.dynamicObjectField.value.owner?.__typename === "Parent" ? data.owner.dynamicObjectField.value.owner.parent : void 0 : void 0;
1354
+ }
1355
+ );
1356
+ return {
1357
+ data: {
1358
+ content: parent.asMoveObject ? {
1359
+ dataType: "moveObject",
1360
+ ...(0, import_move.moveDataToRpcContent)(
1361
+ parent.asMoveObject?.contents?.data,
1362
+ parent.asMoveObject?.contents?.type.layout
1363
+ )
1364
+ } : void 0,
1365
+ digest: parent?.digest,
1366
+ objectId: parent?.address,
1367
+ type: parent?.asMoveObject ? (0, import_util.toShortTypeString)(parent.asMoveObject.contents?.type.repr) : void 0,
1368
+ version: parent?.version.toString(),
1369
+ storageRebate: parent.storageRebate,
1370
+ previousTransaction: parent.previousTransactionBlock?.digest,
1371
+ owner: parent.owner?.__typename === "Parent" ? {
1372
+ ObjectOwner: parent.owner.parent?.address
1373
+ } : void 0
1374
+ }
1375
+ };
1376
+ }
1377
+ //# sourceMappingURL=methods.js.map