@mysten/sui 1.28.2 → 1.29.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.
Files changed (117) hide show
  1. package/CHANGELOG.md +8 -0
  2. package/README.md +5 -4
  3. package/dist/cjs/client/client.d.ts +2 -1
  4. package/dist/cjs/client/client.js +7 -0
  5. package/dist/cjs/client/client.js.map +2 -2
  6. package/dist/cjs/experimental/core.d.ts +1 -1
  7. package/dist/cjs/experimental/core.js +3 -2
  8. package/dist/cjs/experimental/core.js.map +2 -2
  9. package/dist/cjs/experimental/transports/graphql.d.ts +26 -0
  10. package/dist/cjs/experimental/transports/graphql.js +310 -0
  11. package/dist/cjs/experimental/transports/graphql.js.map +7 -0
  12. package/dist/cjs/experimental/transports/jsonRPC.d.ts +5 -3
  13. package/dist/cjs/experimental/transports/jsonRPC.js +53 -105
  14. package/dist/cjs/experimental/transports/jsonRPC.js.map +3 -3
  15. package/dist/cjs/experimental/transports/utils.d.ts +6 -0
  16. package/dist/cjs/experimental/transports/utils.js +102 -0
  17. package/dist/cjs/experimental/transports/utils.js.map +7 -0
  18. package/dist/cjs/experimental/types.d.ts +21 -6
  19. package/dist/cjs/experimental/types.js.map +1 -1
  20. package/dist/cjs/faucet/faucet.d.ts +1 -1
  21. package/dist/cjs/faucet/faucet.js.map +1 -1
  22. package/dist/cjs/graphql/client.d.ts +10 -3
  23. package/dist/cjs/graphql/client.js +12 -4
  24. package/dist/cjs/graphql/client.js.map +3 -3
  25. package/dist/cjs/graphql/generated/queries.d.ts +5653 -0
  26. package/dist/cjs/graphql/generated/queries.js +722 -0
  27. package/dist/cjs/graphql/generated/queries.js.map +7 -0
  28. package/dist/cjs/multisig/publickey.d.ts +3 -3
  29. package/dist/cjs/multisig/publickey.js.map +2 -2
  30. package/dist/cjs/transactions/Commands.d.ts +2 -2
  31. package/dist/cjs/transactions/Commands.js.map +2 -2
  32. package/dist/cjs/transactions/Transaction.d.ts +10 -2
  33. package/dist/cjs/transactions/Transaction.js +165 -21
  34. package/dist/cjs/transactions/Transaction.js.map +3 -3
  35. package/dist/cjs/transactions/TransactionData.d.ts +4 -2
  36. package/dist/cjs/transactions/TransactionData.js +72 -41
  37. package/dist/cjs/transactions/TransactionData.js.map +2 -2
  38. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +1 -1
  39. package/dist/cjs/verify/verify.d.ts +5 -5
  40. package/dist/cjs/verify/verify.js.map +2 -2
  41. package/dist/cjs/version.d.ts +2 -2
  42. package/dist/cjs/version.js +2 -2
  43. package/dist/cjs/version.js.map +1 -1
  44. package/dist/cjs/zklogin/publickey.d.ts +9 -3
  45. package/dist/cjs/zklogin/publickey.js +8 -30
  46. package/dist/cjs/zklogin/publickey.js.map +2 -2
  47. package/dist/esm/client/client.d.ts +2 -1
  48. package/dist/esm/client/client.js +7 -0
  49. package/dist/esm/client/client.js.map +2 -2
  50. package/dist/esm/experimental/core.d.ts +1 -1
  51. package/dist/esm/experimental/core.js +3 -2
  52. package/dist/esm/experimental/core.js.map +2 -2
  53. package/dist/esm/experimental/transports/graphql.d.ts +26 -0
  54. package/dist/esm/experimental/transports/graphql.js +303 -0
  55. package/dist/esm/experimental/transports/graphql.js.map +7 -0
  56. package/dist/esm/experimental/transports/jsonRPC.d.ts +5 -3
  57. package/dist/esm/experimental/transports/jsonRPC.js +52 -104
  58. package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
  59. package/dist/esm/experimental/transports/utils.d.ts +6 -0
  60. package/dist/esm/experimental/transports/utils.js +82 -0
  61. package/dist/esm/experimental/transports/utils.js.map +7 -0
  62. package/dist/esm/experimental/types.d.ts +21 -6
  63. package/dist/esm/faucet/faucet.d.ts +1 -1
  64. package/dist/esm/faucet/faucet.js.map +1 -1
  65. package/dist/esm/graphql/client.d.ts +10 -3
  66. package/dist/esm/graphql/client.js +12 -4
  67. package/dist/esm/graphql/client.js.map +2 -2
  68. package/dist/esm/graphql/generated/queries.d.ts +5653 -0
  69. package/dist/esm/graphql/generated/queries.js +702 -0
  70. package/dist/esm/graphql/generated/queries.js.map +7 -0
  71. package/dist/esm/multisig/publickey.d.ts +3 -3
  72. package/dist/esm/multisig/publickey.js.map +2 -2
  73. package/dist/esm/transactions/Commands.d.ts +2 -2
  74. package/dist/esm/transactions/Commands.js.map +2 -2
  75. package/dist/esm/transactions/Transaction.d.ts +10 -2
  76. package/dist/esm/transactions/Transaction.js +165 -21
  77. package/dist/esm/transactions/Transaction.js.map +3 -3
  78. package/dist/esm/transactions/TransactionData.d.ts +4 -2
  79. package/dist/esm/transactions/TransactionData.js +72 -41
  80. package/dist/esm/transactions/TransactionData.js.map +2 -2
  81. package/dist/esm/transactions/intents/CoinWithBalance.js.map +1 -1
  82. package/dist/esm/verify/verify.d.ts +5 -5
  83. package/dist/esm/verify/verify.js.map +2 -2
  84. package/dist/esm/version.d.ts +2 -2
  85. package/dist/esm/version.js +2 -2
  86. package/dist/esm/version.js.map +1 -1
  87. package/dist/esm/zklogin/publickey.d.ts +9 -3
  88. package/dist/esm/zklogin/publickey.js +8 -30
  89. package/dist/esm/zklogin/publickey.js.map +2 -2
  90. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  91. package/dist/tsconfig.tsbuildinfo +1 -1
  92. package/package.json +4 -1
  93. package/src/client/client.ts +10 -0
  94. package/src/experimental/core.ts +5 -2
  95. package/src/experimental/transports/graphql.ts +421 -0
  96. package/src/experimental/transports/jsonRPC.ts +47 -132
  97. package/src/experimental/transports/utils.ts +117 -0
  98. package/src/experimental/types.ts +30 -7
  99. package/src/faucet/faucet.ts +1 -1
  100. package/src/graphql/client.ts +21 -3
  101. package/src/graphql/generated/queries.ts +6061 -0
  102. package/src/graphql/queries/getAllBalances.graphql +20 -0
  103. package/src/graphql/queries/getBalance.graphql +14 -0
  104. package/src/graphql/queries/getCoins.graphql +29 -0
  105. package/src/graphql/queries/getDynamicFields.graphql +36 -0
  106. package/src/graphql/queries/getReferenceGasPrice.graphql +8 -0
  107. package/src/graphql/queries/objects.graphql +89 -0
  108. package/src/graphql/queries/transactions.graphql +80 -0
  109. package/src/graphql/queries/verifyZkLoginSignature.graphql +16 -0
  110. package/src/multisig/publickey.ts +3 -3
  111. package/src/transactions/Commands.ts +3 -2
  112. package/src/transactions/Transaction.ts +215 -12
  113. package/src/transactions/TransactionData.ts +86 -46
  114. package/src/transactions/intents/CoinWithBalance.ts +1 -1
  115. package/src/verify/verify.ts +6 -6
  116. package/src/version.ts +2 -2
  117. package/src/zklogin/publickey.ts +23 -39
@@ -0,0 +1,303 @@
1
+ var __typeError = (msg) => {
2
+ throw TypeError(msg);
3
+ };
4
+ var __accessCheck = (obj, member, msg) => member.has(obj) || __typeError("Cannot " + msg);
5
+ var __privateGet = (obj, member, getter) => (__accessCheck(obj, member, "read from private field"), getter ? getter.call(obj) : member.get(obj));
6
+ var __privateAdd = (obj, member, value) => member.has(obj) ? __typeError("Cannot add the same private member more than once") : member instanceof WeakSet ? member.add(obj) : member.set(obj, value);
7
+ var __privateSet = (obj, member, value, setter) => (__accessCheck(obj, member, "write to private field"), setter ? setter.call(obj, value) : member.set(obj, value), value);
8
+ var __privateMethod = (obj, member, method) => (__accessCheck(obj, member, "access private method"), method);
9
+ var _graphqlClient, _GraphQLTransport_instances, graphqlQuery_fn;
10
+ import { Experimental_CoreClient } from "../core.js";
11
+ import {
12
+ DryRunTransactionBlockDocument,
13
+ ExecuteTransactionBlockDocument,
14
+ GetAllBalancesDocument,
15
+ GetBalanceDocument,
16
+ GetCoinsDocument,
17
+ GetDynamicFieldsDocument,
18
+ GetOwnedObjectsDocument,
19
+ GetReferenceGasPriceDocument,
20
+ GetTransactionBlockDocument,
21
+ MultiGetObjectsDocument,
22
+ VerifyZkLoginSignatureDocument,
23
+ ZkLoginIntentScope
24
+ } from "../../graphql/generated/queries.js";
25
+ import { ObjectError } from "../errors.js";
26
+ import { fromBase64, toBase64 } from "@mysten/utils";
27
+ import { normalizeStructTag, normalizeSuiAddress } from "../../utils/sui-types.js";
28
+ import { deriveDynamicFieldID } from "../../utils/dynamic-fields.js";
29
+ import { parseTransactionEffects } from "./utils.js";
30
+ class GraphQLTransport extends Experimental_CoreClient {
31
+ constructor(graphqlClient) {
32
+ super({ network: graphqlClient.network });
33
+ __privateAdd(this, _GraphQLTransport_instances);
34
+ __privateAdd(this, _graphqlClient);
35
+ __privateSet(this, _graphqlClient, graphqlClient);
36
+ }
37
+ async getObjects(options) {
38
+ const objects = [];
39
+ let hasNextPage = true;
40
+ let cursor = null;
41
+ while (hasNextPage) {
42
+ const objectsPage = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
43
+ query: MultiGetObjectsDocument,
44
+ variables: {
45
+ objectIds: options.objectIds,
46
+ cursor
47
+ }
48
+ }, (result) => result.objects);
49
+ objects.push(...objectsPage.nodes);
50
+ hasNextPage = objectsPage.pageInfo.hasNextPage;
51
+ cursor = objectsPage.pageInfo.endCursor ?? null;
52
+ }
53
+ return {
54
+ objects: options.objectIds.map((id) => normalizeSuiAddress(id)).map(
55
+ (id) => objects.find((obj) => obj.address === id) ?? new ObjectError("notFound", `Object ${id} not found`)
56
+ ).map((obj) => {
57
+ if (obj instanceof ObjectError) {
58
+ return obj;
59
+ }
60
+ return {
61
+ id: obj.address,
62
+ version: obj.version,
63
+ digest: obj.digest,
64
+ owner: mapOwner(obj.owner),
65
+ type: obj.asMoveObject?.contents?.type?.repr,
66
+ content: fromBase64(obj.asMoveObject?.contents?.bcs)
67
+ };
68
+ })
69
+ };
70
+ }
71
+ async getOwnedObjects(options) {
72
+ const objects = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
73
+ query: GetOwnedObjectsDocument,
74
+ variables: {
75
+ owner: options.address,
76
+ limit: options.limit,
77
+ cursor: options.cursor,
78
+ filter: options.type ? { type: options.type } : void 0
79
+ }
80
+ }, (result) => result.address?.objects);
81
+ return {
82
+ objects: objects.nodes.map((obj) => ({
83
+ id: obj.address,
84
+ version: obj.version,
85
+ digest: obj.digest,
86
+ owner: mapOwner(obj.owner),
87
+ type: obj.contents?.type?.repr,
88
+ content: fromBase64(obj.contents?.bcs)
89
+ })),
90
+ hasNextPage: objects.pageInfo.hasNextPage,
91
+ cursor: objects.pageInfo.endCursor ?? null
92
+ };
93
+ }
94
+ async getCoins(options) {
95
+ const coins = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
96
+ query: GetCoinsDocument,
97
+ variables: {
98
+ owner: options.address,
99
+ cursor: options.cursor,
100
+ first: options.limit,
101
+ type: options.coinType
102
+ }
103
+ }, (result) => result.address?.coins);
104
+ return {
105
+ cursor: coins.pageInfo.endCursor ?? null,
106
+ hasNextPage: coins.pageInfo.hasNextPage,
107
+ objects: coins.nodes.map((coin) => ({
108
+ id: coin.address,
109
+ version: coin.version,
110
+ digest: coin.digest,
111
+ owner: mapOwner(coin.owner),
112
+ type: coin.contents?.type?.repr,
113
+ balance: coin.coinBalance,
114
+ content: fromBase64(coin.contents?.bcs)
115
+ }))
116
+ };
117
+ }
118
+ async getBalance(options) {
119
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
120
+ query: GetBalanceDocument,
121
+ variables: { owner: options.address, type: options.coinType }
122
+ }, (result2) => result2.address?.balance);
123
+ return {
124
+ balance: {
125
+ coinType: result.coinType.repr,
126
+ balance: result.totalBalance
127
+ }
128
+ };
129
+ }
130
+ async getAllBalances(options) {
131
+ const balances = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
132
+ query: GetAllBalancesDocument,
133
+ variables: { owner: options.address }
134
+ }, (result) => result.address?.balances);
135
+ return {
136
+ cursor: balances.pageInfo.endCursor ?? null,
137
+ hasNextPage: balances.pageInfo.hasNextPage,
138
+ balances: balances.nodes.map((balance) => ({
139
+ coinType: balance.coinType.repr,
140
+ balance: balance.totalBalance
141
+ }))
142
+ };
143
+ }
144
+ async getTransaction(options) {
145
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
146
+ query: GetTransactionBlockDocument,
147
+ variables: { digest: options.digest }
148
+ }, (result2) => result2.transactionBlock);
149
+ return {
150
+ transaction: parseTransaction(result)
151
+ };
152
+ }
153
+ async executeTransaction(options) {
154
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
155
+ query: ExecuteTransactionBlockDocument,
156
+ variables: { txBytes: toBase64(options.transaction), signatures: options.signatures }
157
+ }, (result2) => result2.executeTransactionBlock);
158
+ if (result.errors) {
159
+ if (result.errors.length === 1) {
160
+ throw new Error(result.errors[0]);
161
+ }
162
+ throw new AggregateError(result.errors.map((error) => new Error(error)));
163
+ }
164
+ return {
165
+ transaction: parseTransaction(result.effects.transactionBlock)
166
+ };
167
+ }
168
+ async dryRunTransaction(options) {
169
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
170
+ query: DryRunTransactionBlockDocument,
171
+ variables: { txBytes: toBase64(options.transaction) }
172
+ }, (result2) => result2.dryRunTransactionBlock);
173
+ if (result.error) {
174
+ throw new Error(result.error);
175
+ }
176
+ return {
177
+ transaction: parseTransaction(result.transaction)
178
+ };
179
+ }
180
+ async getReferenceGasPrice() {
181
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
182
+ query: GetReferenceGasPriceDocument
183
+ }, (result2) => result2.epoch?.referenceGasPrice);
184
+ return {
185
+ referenceGasPrice: result.referenceGasPrice
186
+ };
187
+ }
188
+ async getDynamicFields(options) {
189
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
190
+ query: GetDynamicFieldsDocument,
191
+ variables: { parentId: options.parentId }
192
+ }, (result2) => result2.owner?.dynamicFields);
193
+ return {
194
+ dynamicFields: result.nodes.map((dynamicField) => {
195
+ const valueType = dynamicField.value?.__typename === "MoveObject" ? dynamicField.value.contents?.type?.repr : dynamicField.value?.type.repr;
196
+ return {
197
+ id: deriveDynamicFieldID(
198
+ options.parentId,
199
+ dynamicField.name?.type.repr,
200
+ dynamicField.name?.bcs
201
+ ),
202
+ type: normalizeStructTag(
203
+ dynamicField.value?.__typename === "MoveObject" ? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name?.type.repr}>,0x2::object::ID>` : `0x2::dynamic_field::Field<${dynamicField.name?.type.repr},${valueType}>`
204
+ ),
205
+ name: {
206
+ type: dynamicField.name?.type.repr,
207
+ bcs: fromBase64(dynamicField.name?.bcs)
208
+ },
209
+ valueType
210
+ };
211
+ }),
212
+ cursor: result.pageInfo.endCursor ?? null,
213
+ hasNextPage: result.pageInfo.hasNextPage
214
+ };
215
+ }
216
+ async verifyZkLoginSignature(options) {
217
+ const intentScope = options.intentScope === "TransactionData" ? ZkLoginIntentScope.TransactionData : ZkLoginIntentScope.PersonalMessage;
218
+ const result = await __privateMethod(this, _GraphQLTransport_instances, graphqlQuery_fn).call(this, {
219
+ query: VerifyZkLoginSignatureDocument,
220
+ variables: {
221
+ bytes: options.bytes,
222
+ signature: options.signature,
223
+ intentScope,
224
+ author: options.author
225
+ }
226
+ }, (result2) => result2.verifyZkloginSignature);
227
+ return {
228
+ success: result.success,
229
+ errors: result.errors
230
+ };
231
+ }
232
+ }
233
+ _graphqlClient = new WeakMap();
234
+ _GraphQLTransport_instances = new WeakSet();
235
+ graphqlQuery_fn = async function(options, getData) {
236
+ const { data, errors } = await __privateGet(this, _graphqlClient).query(options);
237
+ handleGraphQLErrors(errors);
238
+ const extractedData = data && (getData ? getData(data) : data);
239
+ if (extractedData == null) {
240
+ throw new Error("Missing response data");
241
+ }
242
+ return extractedData;
243
+ };
244
+ function handleGraphQLErrors(errors) {
245
+ if (!errors || errors.length === 0) return;
246
+ const errorInstances = errors.map((error) => new GraphQLResponseError(error));
247
+ if (errorInstances.length === 1) {
248
+ throw errorInstances[0];
249
+ }
250
+ throw new AggregateError(errorInstances);
251
+ }
252
+ class GraphQLResponseError extends Error {
253
+ constructor(error) {
254
+ super(error.message);
255
+ this.locations = error.locations;
256
+ }
257
+ }
258
+ function mapOwner(owner) {
259
+ switch (owner.__typename) {
260
+ case "AddressOwner":
261
+ return { $kind: "AddressOwner", AddressOwner: owner.owner?.asAddress?.address };
262
+ case "ConsensusV2":
263
+ return { $kind: "ConsensusV2", ConsensusV2: owner.authenticator.address };
264
+ case "Immutable":
265
+ return { $kind: "Immutable", Immutable: true };
266
+ case "Parent":
267
+ return { $kind: "ObjectOwner", ObjectOwner: owner.parent?.address };
268
+ case "Shared":
269
+ return { $kind: "Shared", Shared: owner.initialSharedVersion };
270
+ }
271
+ }
272
+ function parseTransaction(transaction) {
273
+ const objectTypes = {};
274
+ transaction.effects?.unchangedSharedObjects.nodes.forEach((node) => {
275
+ if (node.__typename === "SharedObjectRead") {
276
+ const type = node.object?.asMoveObject?.contents?.type.repr;
277
+ const address = node.object?.asMoveObject?.address;
278
+ if (type && address) {
279
+ objectTypes[address] = type;
280
+ }
281
+ }
282
+ });
283
+ transaction.effects?.objectChanges.nodes.forEach((node) => {
284
+ const address = node.address;
285
+ const type = node.inputState?.asMoveObject?.contents?.type.repr ?? node.outputState?.asMoveObject?.contents?.type.repr;
286
+ if (address && type) {
287
+ objectTypes[address] = type;
288
+ }
289
+ });
290
+ return {
291
+ digest: transaction.digest,
292
+ effects: parseTransactionEffects({
293
+ effects: new Uint8Array(transaction.effects?.bcs),
294
+ objectTypes
295
+ }),
296
+ bcs: transaction.bcs,
297
+ signatures: transaction.signatures
298
+ };
299
+ }
300
+ export {
301
+ GraphQLTransport
302
+ };
303
+ //# sourceMappingURL=graphql.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../../src/experimental/transports/graphql.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Experimental_CoreClient } from '../core.js';\nimport type { Experimental_SuiClientTypes } from '../types.js';\nimport type { GraphQLQueryOptions, SuiGraphQLClient } from '../../graphql/client.js';\nimport type {\n\tObject_Owner_FieldsFragment,\n\tObject_FieldsFragment,\n\tTransaction_FieldsFragment,\n} from '../../graphql/generated/queries.js';\nimport {\n\tDryRunTransactionBlockDocument,\n\tExecuteTransactionBlockDocument,\n\tGetAllBalancesDocument,\n\tGetBalanceDocument,\n\tGetCoinsDocument,\n\tGetDynamicFieldsDocument,\n\tGetOwnedObjectsDocument,\n\tGetReferenceGasPriceDocument,\n\tGetTransactionBlockDocument,\n\tMultiGetObjectsDocument,\n\tVerifyZkLoginSignatureDocument,\n\tZkLoginIntentScope,\n} from '../../graphql/generated/queries.js';\nimport { ObjectError } from '../errors.js';\nimport { fromBase64, toBase64 } from '@mysten/utils';\nimport { normalizeStructTag, normalizeSuiAddress } from '../../utils/sui-types.js';\nimport { deriveDynamicFieldID } from '../../utils/dynamic-fields.js';\nimport { parseTransactionEffects } from './utils.js';\n\nexport class GraphQLTransport extends Experimental_CoreClient {\n\t#graphqlClient: SuiGraphQLClient;\n\n\tconstructor(graphqlClient: SuiGraphQLClient) {\n\t\tsuper({ network: graphqlClient.network });\n\t\tthis.#graphqlClient = graphqlClient;\n\t}\n\n\tasync #graphqlQuery<\n\t\tResult = Record<string, unknown>,\n\t\tVariables = Record<string, unknown>,\n\t\tData = Result,\n\t>(\n\t\toptions: GraphQLQueryOptions<Result, Variables>,\n\t\tgetData?: (result: Result) => Data,\n\t): Promise<NonNullable<Data>> {\n\t\tconst { data, errors } = await this.#graphqlClient.query(options);\n\n\t\thandleGraphQLErrors(errors);\n\n\t\tconst extractedData = data && (getData ? getData(data) : data);\n\n\t\tif (extractedData == null) {\n\t\t\tthrow new Error('Missing response data');\n\t\t}\n\n\t\treturn extractedData as NonNullable<Data>;\n\t}\n\n\tasync getObjects(\n\t\toptions: Experimental_SuiClientTypes.GetObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetObjectsResponse> {\n\t\tconst objects: Object_FieldsFragment[] = [];\n\n\t\tlet hasNextPage = true;\n\t\tlet cursor: string | null = null;\n\n\t\twhile (hasNextPage) {\n\t\t\tconst objectsPage = await this.#graphqlQuery(\n\t\t\t\t{\n\t\t\t\t\tquery: MultiGetObjectsDocument,\n\t\t\t\t\tvariables: {\n\t\t\t\t\t\tobjectIds: options.objectIds,\n\t\t\t\t\t\tcursor,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t(result) => result.objects,\n\t\t\t);\n\n\t\t\tobjects.push(...objectsPage.nodes);\n\t\t\thasNextPage = objectsPage.pageInfo.hasNextPage;\n\t\t\tcursor = (objectsPage.pageInfo.endCursor ?? null) as string | null;\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: options.objectIds\n\t\t\t\t.map((id) => normalizeSuiAddress(id))\n\t\t\t\t.map(\n\t\t\t\t\t(id) =>\n\t\t\t\t\t\tobjects.find((obj) => obj.address === id) ??\n\t\t\t\t\t\tnew ObjectError('notFound', `Object ${id} not found`),\n\t\t\t\t)\n\t\t\t\t.map((obj) => {\n\t\t\t\t\tif (obj instanceof ObjectError) {\n\t\t\t\t\t\treturn obj;\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tid: obj.address,\n\t\t\t\t\t\tversion: obj.version,\n\t\t\t\t\t\tdigest: obj.digest!,\n\t\t\t\t\t\towner: mapOwner(obj.owner!),\n\t\t\t\t\t\ttype: obj.asMoveObject?.contents?.type?.repr!,\n\t\t\t\t\t\tcontent: fromBase64(obj.asMoveObject?.contents?.bcs!),\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t};\n\t}\n\tasync getOwnedObjects(\n\t\toptions: Experimental_SuiClientTypes.GetOwnedObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetOwnedObjectsResponse> {\n\t\tconst objects = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetOwnedObjectsDocument,\n\t\t\t\tvariables: {\n\t\t\t\t\towner: options.address,\n\t\t\t\t\tlimit: options.limit,\n\t\t\t\t\tcursor: options.cursor,\n\t\t\t\t\tfilter: options.type ? { type: options.type } : undefined,\n\t\t\t\t},\n\t\t\t},\n\t\t\t(result) => result.address?.objects,\n\t\t);\n\n\t\treturn {\n\t\t\tobjects: objects.nodes.map((obj) => ({\n\t\t\t\tid: obj.address,\n\t\t\t\tversion: obj.version,\n\t\t\t\tdigest: obj.digest!,\n\t\t\t\towner: mapOwner(obj.owner!),\n\t\t\t\ttype: obj.contents?.type?.repr!,\n\t\t\t\tcontent: fromBase64(obj.contents?.bcs!),\n\t\t\t})),\n\t\t\thasNextPage: objects.pageInfo.hasNextPage,\n\t\t\tcursor: objects.pageInfo.endCursor ?? null,\n\t\t};\n\t}\n\tasync getCoins(\n\t\toptions: Experimental_SuiClientTypes.GetCoinsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetCoinsResponse> {\n\t\tconst coins = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetCoinsDocument,\n\t\t\t\tvariables: {\n\t\t\t\t\towner: options.address,\n\t\t\t\t\tcursor: options.cursor,\n\t\t\t\t\tfirst: options.limit,\n\t\t\t\t\ttype: options.coinType,\n\t\t\t\t},\n\t\t\t},\n\t\t\t(result) => result.address?.coins,\n\t\t);\n\n\t\treturn {\n\t\t\tcursor: coins.pageInfo.endCursor ?? null,\n\t\t\thasNextPage: coins.pageInfo.hasNextPage,\n\t\t\tobjects: coins.nodes.map((coin) => ({\n\t\t\t\tid: coin.address,\n\t\t\t\tversion: coin.version,\n\t\t\t\tdigest: coin.digest!,\n\t\t\t\towner: mapOwner(coin.owner!),\n\t\t\t\ttype: coin.contents?.type?.repr!,\n\t\t\t\tbalance: coin.coinBalance,\n\t\t\t\tcontent: fromBase64(coin.contents?.bcs!),\n\t\t\t})),\n\t\t};\n\t}\n\n\tasync getBalance(\n\t\toptions: Experimental_SuiClientTypes.GetBalanceOptions,\n\t): Promise<Experimental_SuiClientTypes.GetBalanceResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetBalanceDocument,\n\t\t\t\tvariables: { owner: options.address, type: options.coinType },\n\t\t\t},\n\t\t\t(result) => result.address?.balance,\n\t\t);\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tcoinType: result.coinType.repr,\n\t\t\t\tbalance: result.totalBalance,\n\t\t\t},\n\t\t};\n\t}\n\tasync getAllBalances(\n\t\toptions: Experimental_SuiClientTypes.GetAllBalancesOptions,\n\t): Promise<Experimental_SuiClientTypes.GetAllBalancesResponse> {\n\t\tconst balances = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetAllBalancesDocument,\n\t\t\t\tvariables: { owner: options.address },\n\t\t\t},\n\t\t\t(result) => result.address?.balances,\n\t\t);\n\n\t\treturn {\n\t\t\tcursor: balances.pageInfo.endCursor ?? null,\n\t\t\thasNextPage: balances.pageInfo.hasNextPage,\n\t\t\tbalances: balances.nodes.map((balance) => ({\n\t\t\t\tcoinType: balance.coinType.repr,\n\t\t\t\tbalance: balance.totalBalance,\n\t\t\t})),\n\t\t};\n\t}\n\tasync getTransaction(\n\t\toptions: Experimental_SuiClientTypes.GetTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.GetTransactionResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetTransactionBlockDocument,\n\t\t\t\tvariables: { digest: options.digest },\n\t\t\t},\n\t\t\t(result) => result.transactionBlock,\n\t\t);\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(result),\n\t\t};\n\t}\n\tasync executeTransaction(\n\t\toptions: Experimental_SuiClientTypes.ExecuteTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.ExecuteTransactionResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: ExecuteTransactionBlockDocument,\n\t\t\t\tvariables: { txBytes: toBase64(options.transaction), signatures: options.signatures },\n\t\t\t},\n\t\t\t(result) => result.executeTransactionBlock,\n\t\t);\n\n\t\tif (result.errors) {\n\t\t\tif (result.errors.length === 1) {\n\t\t\t\tthrow new Error(result.errors[0]);\n\t\t\t}\n\t\t\tthrow new AggregateError(result.errors.map((error) => new Error(error)));\n\t\t}\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(result.effects.transactionBlock!),\n\t\t};\n\t}\n\tasync dryRunTransaction(\n\t\toptions: Experimental_SuiClientTypes.DryRunTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.DryRunTransactionResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: DryRunTransactionBlockDocument,\n\t\t\t\tvariables: { txBytes: toBase64(options.transaction) },\n\t\t\t},\n\t\t\t(result) => result.dryRunTransactionBlock,\n\t\t);\n\n\t\tif (result.error) {\n\t\t\tthrow new Error(result.error);\n\t\t}\n\n\t\treturn {\n\t\t\ttransaction: parseTransaction(result.transaction!),\n\t\t};\n\t}\n\tasync getReferenceGasPrice(): Promise<Experimental_SuiClientTypes.GetReferenceGasPriceResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetReferenceGasPriceDocument,\n\t\t\t},\n\t\t\t(result) => result.epoch?.referenceGasPrice,\n\t\t);\n\n\t\treturn {\n\t\t\treferenceGasPrice: result.referenceGasPrice,\n\t\t};\n\t}\n\n\tasync getDynamicFields(\n\t\toptions: Experimental_SuiClientTypes.GetDynamicFieldsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetDynamicFieldsResponse> {\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: GetDynamicFieldsDocument,\n\t\t\t\tvariables: { parentId: options.parentId },\n\t\t\t},\n\t\t\t(result) => result.owner?.dynamicFields,\n\t\t);\n\n\t\treturn {\n\t\t\tdynamicFields: result.nodes.map((dynamicField) => {\n\t\t\t\tconst valueType =\n\t\t\t\t\tdynamicField.value?.__typename === 'MoveObject'\n\t\t\t\t\t\t? dynamicField.value.contents?.type?.repr!\n\t\t\t\t\t\t: dynamicField.value?.type.repr!;\n\t\t\t\treturn {\n\t\t\t\t\tid: deriveDynamicFieldID(\n\t\t\t\t\t\toptions.parentId,\n\t\t\t\t\t\tdynamicField.name?.type.repr!,\n\t\t\t\t\t\tdynamicField.name?.bcs!,\n\t\t\t\t\t),\n\t\t\t\t\ttype: normalizeStructTag(\n\t\t\t\t\t\tdynamicField.value?.__typename === 'MoveObject'\n\t\t\t\t\t\t\t? `0x2::dynamic_field::Field<0x2::dynamic_object_field::Wrapper<${dynamicField.name?.type.repr}>,0x2::object::ID>`\n\t\t\t\t\t\t\t: `0x2::dynamic_field::Field<${dynamicField.name?.type.repr},${valueType}>`,\n\t\t\t\t\t),\n\t\t\t\t\tname: {\n\t\t\t\t\t\ttype: dynamicField.name?.type.repr!,\n\t\t\t\t\t\tbcs: fromBase64(dynamicField.name?.bcs!),\n\t\t\t\t\t},\n\t\t\t\t\tvalueType,\n\t\t\t\t};\n\t\t\t}),\n\t\t\tcursor: result.pageInfo.endCursor ?? null,\n\t\t\thasNextPage: result.pageInfo.hasNextPage,\n\t\t};\n\t}\n\n\tasync verifyZkLoginSignature(\n\t\toptions: Experimental_SuiClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<Experimental_SuiClientTypes.ZkLoginVerifyResponse> {\n\t\tconst intentScope =\n\t\t\toptions.intentScope === 'TransactionData'\n\t\t\t\t? ZkLoginIntentScope.TransactionData\n\t\t\t\t: ZkLoginIntentScope.PersonalMessage;\n\n\t\tconst result = await this.#graphqlQuery(\n\t\t\t{\n\t\t\t\tquery: VerifyZkLoginSignatureDocument,\n\t\t\t\tvariables: {\n\t\t\t\t\tbytes: options.bytes,\n\t\t\t\t\tsignature: options.signature,\n\t\t\t\t\tintentScope,\n\t\t\t\t\tauthor: options.author,\n\t\t\t\t},\n\t\t\t},\n\t\t\t(result) => result.verifyZkloginSignature,\n\t\t);\n\n\t\treturn {\n\t\t\tsuccess: result.success,\n\t\t\terrors: result.errors,\n\t\t};\n\t}\n}\nexport type GraphQLResponseErrors = Array<{\n\tmessage: string;\n\tlocations?: { line: number; column: number }[];\n\tpath?: (string | number)[];\n}>;\n\nfunction handleGraphQLErrors(errors: GraphQLResponseErrors | undefined): void {\n\tif (!errors || errors.length === 0) return;\n\n\tconst errorInstances = errors.map((error) => new GraphQLResponseError(error));\n\n\tif (errorInstances.length === 1) {\n\t\tthrow errorInstances[0];\n\t}\n\n\tthrow new AggregateError(errorInstances);\n}\n\nclass GraphQLResponseError extends Error {\n\tlocations?: Array<{ line: number; column: number }>;\n\n\tconstructor(error: GraphQLResponseErrors[0]) {\n\t\tsuper(error.message);\n\t\tthis.locations = error.locations;\n\t}\n}\n\nfunction mapOwner(owner: Object_Owner_FieldsFragment): Experimental_SuiClientTypes.ObjectOwner {\n\tswitch (owner.__typename) {\n\t\tcase 'AddressOwner':\n\t\t\treturn { $kind: 'AddressOwner', AddressOwner: owner.owner?.asAddress?.address };\n\t\tcase 'ConsensusV2':\n\t\t\treturn { $kind: 'ConsensusV2', ConsensusV2: owner.authenticator!.address };\n\t\tcase 'Immutable':\n\t\t\treturn { $kind: 'Immutable', Immutable: true };\n\t\tcase 'Parent':\n\t\t\treturn { $kind: 'ObjectOwner', ObjectOwner: owner.parent?.address };\n\t\tcase 'Shared':\n\t\t\treturn { $kind: 'Shared', Shared: owner.initialSharedVersion };\n\t}\n}\n\nfunction parseTransaction(\n\ttransaction: Transaction_FieldsFragment,\n): Experimental_SuiClientTypes.TransactionResponse {\n\tconst objectTypes: Record<string, string> = {};\n\n\ttransaction.effects?.unchangedSharedObjects.nodes.forEach((node) => {\n\t\tif (node.__typename === 'SharedObjectRead') {\n\t\t\tconst type = node.object?.asMoveObject?.contents?.type.repr;\n\t\t\tconst address = node.object?.asMoveObject?.address;\n\n\t\t\tif (type && address) {\n\t\t\t\tobjectTypes[address] = type;\n\t\t\t}\n\t\t}\n\t});\n\n\ttransaction.effects?.objectChanges.nodes.forEach((node) => {\n\t\tconst address = node.address;\n\t\tconst type =\n\t\t\tnode.inputState?.asMoveObject?.contents?.type.repr ??\n\t\t\tnode.outputState?.asMoveObject?.contents?.type.repr;\n\n\t\tif (address && type) {\n\t\t\tobjectTypes[address] = type;\n\t\t}\n\t});\n\n\treturn {\n\t\tdigest: transaction.digest!,\n\t\teffects: parseTransactionEffects({\n\t\t\teffects: new Uint8Array(transaction.effects?.bcs!),\n\t\t\tobjectTypes,\n\t\t}),\n\t\tbcs: transaction.bcs!,\n\t\tsignatures: transaction.signatures!,\n\t};\n}\n"],
5
+ "mappings": "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",
6
+ "names": ["result"]
7
+ }
@@ -56,14 +56,12 @@ export declare class JSONRpcTransport extends Experimental_CoreClient {
56
56
  bcs: Uint8Array<ArrayBufferLike>;
57
57
  };
58
58
  }>;
59
- getReferenceGasPrice(): Promise<{
59
+ getReferenceGasPrice(options?: Experimental_SuiClientTypes.GetReferenceGasPriceOptions): Promise<{
60
60
  referenceGasPrice: string;
61
61
  }>;
62
62
  getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions): Promise<{
63
63
  dynamicFields: {
64
64
  id: string;
65
- version: string;
66
- digest: string;
67
65
  type: string;
68
66
  name: {
69
67
  type: string;
@@ -73,4 +71,8 @@ export declare class JSONRpcTransport extends Experimental_CoreClient {
73
71
  hasNextPage: boolean;
74
72
  cursor: string | null;
75
73
  }>;
74
+ verifyZkLoginSignature(options: Experimental_SuiClientTypes.VerifyZkLoginSignatureOptions): Promise<{
75
+ success: boolean;
76
+ errors: string[];
77
+ }>;
76
78
  }
@@ -13,6 +13,7 @@ import { Transaction } from "../../transactions/Transaction.js";
13
13
  import { normalizeStructTag } from "../../utils/sui-types.js";
14
14
  import { Experimental_CoreClient } from "../core.js";
15
15
  import { ObjectError } from "../errors.js";
16
+ import { parseTransactionEffects } from "./utils.js";
16
17
  class JSONRpcTransport extends Experimental_CoreClient {
17
18
  constructor(jsonRpcClient) {
18
19
  super({ network: jsonRpcClient.network });
@@ -29,7 +30,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
29
30
  showOwner: true,
30
31
  showType: true,
31
32
  showBcs: true
32
- }
33
+ },
34
+ signal: options.signal
33
35
  });
34
36
  for (const [idx, object] of objects.entries()) {
35
37
  if (object.error) {
@@ -52,7 +54,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
52
54
  showOwner: true,
53
55
  showType: true,
54
56
  showBcs: true
55
- }
57
+ },
58
+ signal: options.signal
56
59
  });
57
60
  return {
58
61
  objects: objects.data.map((result) => {
@@ -68,7 +71,10 @@ class JSONRpcTransport extends Experimental_CoreClient {
68
71
  async getCoins(options) {
69
72
  const coins = await __privateGet(this, _jsonRpcClient).getCoins({
70
73
  owner: options.address,
71
- coinType: options.coinType
74
+ coinType: options.coinType,
75
+ limit: options.limit,
76
+ cursor: options.cursor,
77
+ signal: options.signal
72
78
  });
73
79
  return {
74
80
  objects: coins.data.map((coin) => {
@@ -97,7 +103,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
97
103
  async getBalance(options) {
98
104
  const balance = await __privateGet(this, _jsonRpcClient).getBalance({
99
105
  owner: options.address,
100
- coinType: options.coinType
106
+ coinType: options.coinType,
107
+ signal: options.signal
101
108
  });
102
109
  return {
103
110
  balance: {
@@ -108,7 +115,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
108
115
  }
109
116
  async getAllBalances(options) {
110
117
  const balances = await __privateGet(this, _jsonRpcClient).getAllBalances({
111
- owner: options.address
118
+ owner: options.address,
119
+ signal: options.signal
112
120
  });
113
121
  return {
114
122
  balances: balances.map((balance) => ({
@@ -127,7 +135,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
127
135
  showObjectChanges: true,
128
136
  showRawEffects: true,
129
137
  showEvents: true
130
- }
138
+ },
139
+ signal: options.signal
131
140
  });
132
141
  return {
133
142
  transaction: parseTransaction(transaction)
@@ -142,7 +151,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
142
151
  showEvents: true,
143
152
  showObjectChanges: true,
144
153
  showRawInput: true
145
- }
154
+ },
155
+ signal: options.signal
146
156
  });
147
157
  return {
148
158
  transaction: parseTransaction(transaction)
@@ -151,7 +161,8 @@ class JSONRpcTransport extends Experimental_CoreClient {
151
161
  async dryRunTransaction(options) {
152
162
  const tx = Transaction.from(options.transaction);
153
163
  const result = await __privateGet(this, _jsonRpcClient).dryRunTransactionBlock({
154
- transactionBlock: options.transaction
164
+ transactionBlock: options.transaction,
165
+ signal: options.signal
155
166
  });
156
167
  return {
157
168
  transaction: {
@@ -165,8 +176,10 @@ class JSONRpcTransport extends Experimental_CoreClient {
165
176
  }
166
177
  };
167
178
  }
168
- async getReferenceGasPrice() {
169
- const referenceGasPrice = await __privateGet(this, _jsonRpcClient).getReferenceGasPrice();
179
+ async getReferenceGasPrice(options) {
180
+ const referenceGasPrice = await __privateGet(this, _jsonRpcClient).getReferenceGasPrice({
181
+ signal: options?.signal
182
+ });
170
183
  return {
171
184
  referenceGasPrice: String(referenceGasPrice)
172
185
  };
@@ -178,20 +191,32 @@ class JSONRpcTransport extends Experimental_CoreClient {
178
191
  cursor: options.cursor
179
192
  });
180
193
  return {
181
- dynamicFields: dynamicFields.data.map((dynamicField) => ({
182
- id: dynamicField.objectId,
183
- version: dynamicField.version,
184
- digest: dynamicField.digest,
185
- type: dynamicField.objectType,
186
- name: {
187
- type: dynamicField.name.type,
188
- bcs: fromBase64(dynamicField.bcsName)
189
- }
190
- })),
194
+ dynamicFields: dynamicFields.data.map((dynamicField) => {
195
+ return {
196
+ id: dynamicField.objectId,
197
+ type: dynamicField.objectType,
198
+ name: {
199
+ type: dynamicField.name.type,
200
+ bcs: fromBase64(dynamicField.bcsName)
201
+ }
202
+ };
203
+ }),
191
204
  hasNextPage: dynamicFields.hasNextPage,
192
205
  cursor: dynamicFields.nextCursor
193
206
  };
194
207
  }
208
+ async verifyZkLoginSignature(options) {
209
+ const result = await __privateGet(this, _jsonRpcClient).verifyZkLoginSignature({
210
+ bytes: options.bytes,
211
+ signature: options.signature,
212
+ intentScope: options.intentScope,
213
+ author: options.author
214
+ });
215
+ return {
216
+ success: result.success,
217
+ errors: result.errors
218
+ };
219
+ }
195
220
  }
196
221
  _jsonRpcClient = new WeakMap();
197
222
  function parseObject(object) {
@@ -247,99 +272,22 @@ function parseOwner(owner) {
247
272
  }
248
273
  function parseTransaction(transaction) {
249
274
  const parsedTx = bcs.SenderSignedData.parse(fromBase64(transaction.rawTransaction))[0];
275
+ const objectTypes = {};
276
+ transaction.objectChanges?.forEach((change) => {
277
+ if (change.type !== "published") {
278
+ objectTypes[change.objectId] = change.objectType;
279
+ }
280
+ });
250
281
  return {
251
282
  digest: transaction.digest,
252
283
  effects: parseTransactionEffects({
253
284
  effects: new Uint8Array(transaction.rawEffects),
254
- objectChanges: transaction.objectChanges ?? null
285
+ objectTypes
255
286
  }),
256
287
  bcs: bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),
257
288
  signatures: parsedTx.txSignatures
258
289
  };
259
290
  }
260
- function parseTransactionEffects({
261
- effects,
262
- epoch,
263
- objectChanges
264
- }) {
265
- const parsed = bcs.TransactionEffects.parse(effects);
266
- const objectTypes = {};
267
- objectChanges?.forEach((change) => {
268
- if (change.type !== "published") {
269
- objectTypes[change.objectId] = change.objectType;
270
- }
271
- });
272
- switch (parsed.$kind) {
273
- case "V1":
274
- return parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });
275
- case "V2":
276
- return parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });
277
- default:
278
- throw new Error(
279
- `Unknown transaction effects version: ${parsed.$kind}`
280
- );
281
- }
282
- }
283
- function parseTransactionEffectsV1(_) {
284
- throw new Error("V1 effects are not supported yet");
285
- }
286
- function parseTransactionEffectsV2({
287
- bytes,
288
- effects,
289
- epoch,
290
- objectTypes
291
- }) {
292
- const changedObjects = effects.changedObjects.map(
293
- ([id, change]) => {
294
- return {
295
- id,
296
- inputState: change.inputState.$kind === "Exist" ? "Exists" : "DoesNotExist",
297
- inputVersion: change.inputState.Exist?.[0][0] ?? null,
298
- inputDigest: change.inputState.Exist?.[0][1] ?? null,
299
- inputOwner: change.inputState.Exist?.[1] ?? null,
300
- outputState: change.outputState.$kind === "NotExist" ? "DoesNotExist" : change.outputState.$kind,
301
- outputVersion: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[0] : change.outputState.ObjectWrite ? effects.lamportVersion : null,
302
- outputDigest: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[1] : change.outputState.ObjectWrite?.[0] ?? null,
303
- outputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,
304
- idOperation: change.idOperation.$kind,
305
- objectType: objectTypes[id] ?? null
306
- };
307
- }
308
- );
309
- return {
310
- bcs: bytes,
311
- digest: effects.transactionDigest,
312
- version: 2,
313
- status: effects.status.$kind === "Success" ? {
314
- success: true,
315
- error: null
316
- } : {
317
- success: false,
318
- // TODO: add command
319
- error: effects.status.Failed.error.$kind
320
- },
321
- epoch: epoch ?? null,
322
- gasUsed: effects.gasUsed,
323
- transactionDigest: effects.transactionDigest,
324
- gasObject: effects.gasObjectIndex === null ? null : changedObjects[effects.gasObjectIndex] ?? null,
325
- eventsDigest: effects.eventsDigest,
326
- dependencies: effects.dependencies,
327
- lamportVersion: effects.lamportVersion,
328
- changedObjects,
329
- unchangedSharedObjects: effects.unchangedSharedObjects.map(
330
- ([objectId, object]) => {
331
- return {
332
- kind: object.$kind,
333
- objectId,
334
- version: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[0] : object[object.$kind],
335
- digest: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[1] : null,
336
- objectType: objectTypes[objectId] ?? null
337
- };
338
- }
339
- ),
340
- auxiliaryDataDigest: effects.auxDataDigest
341
- };
342
- }
343
291
  function parseTransactionEffectsJson({
344
292
  bytes,
345
293
  effects,