@mysten/sui 2.20.4 → 2.22.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +14 -0
- package/dist/bcs/bcs.d.mts +6 -6
- package/dist/bcs/index.d.mts +20 -20
- package/dist/cryptography/signature.d.mts +8 -8
- package/dist/grpc/client.d.mts +46 -6
- package/dist/grpc/client.d.mts.map +1 -1
- package/dist/grpc/client.mjs.map +1 -1
- package/dist/grpc/core.d.mts +9 -1
- package/dist/grpc/core.d.mts.map +1 -1
- package/dist/grpc/core.mjs +54 -67
- package/dist/grpc/core.mjs.map +1 -1
- package/dist/grpc/index.d.mts +3 -3
- package/dist/grpc/index.mjs +2 -2
- package/dist/grpc/proto/sui/forking/v1alpha/forking_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/effects.d.mts +1 -1
- package/dist/grpc/proto/sui/rpc/v2/ledger_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/move_package_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/name_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/object.d.mts +1 -1
- package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/transaction.d.mts +1 -1
- package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
- package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.d.mts +1 -1
- package/dist/grpc/proto/types.d.mts +2 -2
- package/dist/transactions/Transaction.d.mts +9 -9
- package/dist/transactions/Transaction.d.mts.map +1 -1
- package/dist/version.mjs +1 -1
- package/dist/version.mjs.map +1 -1
- package/dist/zklogin/bcs.d.mts +14 -14
- package/dist/zklogin/bcs.d.mts.map +1 -1
- package/package.json +3 -3
- package/src/grpc/client.ts +92 -20
- package/src/grpc/core.ts +119 -121
- package/src/grpc/index.ts +19 -2
- package/src/version.ts +1 -1
package/dist/grpc/core.mjs
CHANGED
|
@@ -11,7 +11,8 @@ import { Owner_OwnerKind } from "./proto/sui/rpc/v2/owner.mjs";
|
|
|
11
11
|
import { applyGrpcResolvedTransaction, grpcTransactionToTransactionData, transactionDataToGrpcTransaction, transactionToGrpcTransaction } from "../client/transaction-resolver.mjs";
|
|
12
12
|
import { CommandArgumentError_CommandArgumentErrorKind } from "./proto/sui/rpc/v2/execution_status.mjs";
|
|
13
13
|
import { ChangedObject_IdOperation, ChangedObject_InputObjectState, ChangedObject_OutputObjectState, UnchangedConsensusObject_UnchangedConsensusObjectKind } from "./proto/sui/rpc/v2/effects.mjs";
|
|
14
|
-
import {
|
|
14
|
+
import { ExecutedTransaction } from "./proto/sui/rpc/v2/executed_transaction.mjs";
|
|
15
|
+
import { SimulateTransactionRequest_TransactionChecks, SimulateTransactionResponse } from "./proto/sui/rpc/v2/transaction_execution_service.mjs";
|
|
15
16
|
import { chunk, fromBase64, toBase64 } from "@mysten/utils";
|
|
16
17
|
|
|
17
18
|
//#region src/grpc/core.ts
|
|
@@ -195,70 +196,26 @@ var GrpcCoreClient = class extends CoreClient {
|
|
|
195
196
|
};
|
|
196
197
|
}
|
|
197
198
|
async getTransaction(options) {
|
|
198
|
-
const paths = [
|
|
199
|
-
"digest",
|
|
200
|
-
"transaction.digest",
|
|
201
|
-
"signatures",
|
|
202
|
-
"effects.status"
|
|
203
|
-
];
|
|
204
|
-
if (options.include?.transaction) paths.push("transaction.sender", "transaction.gas_payment", "transaction.expiration", "transaction.kind");
|
|
205
|
-
if (options.include?.bcs) paths.push("transaction.bcs");
|
|
206
|
-
if (options.include?.balanceChanges) paths.push("balance_changes");
|
|
207
|
-
if (options.include?.effects) paths.push("effects");
|
|
208
|
-
if (options.include?.events) paths.push("events");
|
|
209
|
-
if (options.include?.objectTypes) {
|
|
210
|
-
paths.push("effects.changed_objects.object_type");
|
|
211
|
-
paths.push("effects.changed_objects.object_id");
|
|
212
|
-
}
|
|
213
199
|
const { response } = await this.#client.ledgerService.getTransaction({
|
|
214
200
|
digest: options.digest,
|
|
215
|
-
readMask: { paths }
|
|
201
|
+
readMask: { paths: transactionReadMaskPaths(options.include) }
|
|
216
202
|
}, { abort: options.signal });
|
|
217
203
|
if (!response.transaction) throw new Error(`Transaction ${options.digest} not found`);
|
|
218
|
-
return
|
|
204
|
+
return withProtoJson(parseGrpcTransactionResponse(response.transaction, { include: options.include }), options.include, () => ExecutedTransaction.toJson(response.transaction));
|
|
219
205
|
}
|
|
220
206
|
async executeTransaction(options) {
|
|
221
|
-
const paths = [
|
|
222
|
-
"digest",
|
|
223
|
-
"transaction.digest",
|
|
224
|
-
"signatures",
|
|
225
|
-
"effects.status"
|
|
226
|
-
];
|
|
227
|
-
if (options.include?.transaction) paths.push("transaction.sender", "transaction.gas_payment", "transaction.expiration", "transaction.kind");
|
|
228
|
-
if (options.include?.bcs) paths.push("transaction.bcs");
|
|
229
|
-
if (options.include?.balanceChanges) paths.push("balance_changes");
|
|
230
|
-
if (options.include?.effects) paths.push("effects");
|
|
231
|
-
if (options.include?.events) paths.push("events");
|
|
232
|
-
if (options.include?.objectTypes) {
|
|
233
|
-
paths.push("effects.changed_objects.object_type");
|
|
234
|
-
paths.push("effects.changed_objects.object_id");
|
|
235
|
-
}
|
|
236
207
|
const { response } = await this.#client.transactionExecutionService.executeTransaction({
|
|
237
208
|
transaction: { bcs: { value: options.transaction } },
|
|
238
209
|
signatures: options.signatures.map((signature) => ({
|
|
239
210
|
bcs: { value: fromBase64(signature) },
|
|
240
211
|
signature: { oneofKind: void 0 }
|
|
241
212
|
})),
|
|
242
|
-
readMask: { paths }
|
|
213
|
+
readMask: { paths: transactionReadMaskPaths(options.include) }
|
|
243
214
|
}, { abort: options.signal });
|
|
244
|
-
return
|
|
215
|
+
return withProtoJson(parseGrpcTransactionResponse(response.transaction, { include: options.include }), options.include, () => ExecutedTransaction.toJson(response.transaction));
|
|
245
216
|
}
|
|
246
217
|
async simulateTransaction(options) {
|
|
247
|
-
const paths =
|
|
248
|
-
"transaction.digest",
|
|
249
|
-
"transaction.transaction.digest",
|
|
250
|
-
"transaction.signatures",
|
|
251
|
-
"transaction.effects.status"
|
|
252
|
-
];
|
|
253
|
-
if (options.include?.transaction) paths.push("transaction.transaction.sender", "transaction.transaction.gas_payment", "transaction.transaction.expiration", "transaction.transaction.kind");
|
|
254
|
-
if (options.include?.bcs) paths.push("transaction.transaction.bcs");
|
|
255
|
-
if (options.include?.balanceChanges) paths.push("transaction.balance_changes");
|
|
256
|
-
if (options.include?.effects) paths.push("transaction.effects");
|
|
257
|
-
if (options.include?.events) paths.push("transaction.events");
|
|
258
|
-
if (options.include?.objectTypes) {
|
|
259
|
-
paths.push("transaction.effects.changed_objects.object_type");
|
|
260
|
-
paths.push("transaction.effects.changed_objects.object_id");
|
|
261
|
-
}
|
|
218
|
+
const paths = transactionReadMaskPaths(options.include, "transaction.");
|
|
262
219
|
if (options.include?.commandResults) paths.push("command_outputs");
|
|
263
220
|
if (!(options.transaction instanceof Uint8Array)) await options.transaction.prepareForSerialization({ client: this });
|
|
264
221
|
const { response } = await this.#client.transactionExecutionService.simulateTransaction({
|
|
@@ -267,21 +224,7 @@ var GrpcCoreClient = class extends CoreClient {
|
|
|
267
224
|
doGasSelection: false,
|
|
268
225
|
checks: options.checksEnabled === false ? SimulateTransactionRequest_TransactionChecks.DISABLED : SimulateTransactionRequest_TransactionChecks.ENABLED
|
|
269
226
|
}, { abort: options.signal });
|
|
270
|
-
|
|
271
|
-
const commandResults = options.include?.commandResults && response.commandOutputs ? response.commandOutputs.map((output) => ({
|
|
272
|
-
returnValues: (output.returnValues ?? []).map((rv) => ({ bcs: rv.value?.value ?? null })),
|
|
273
|
-
mutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({ bcs: mr.value?.value ?? null }))
|
|
274
|
-
})) : void 0;
|
|
275
|
-
if (transactionResult.$kind === "Transaction") return {
|
|
276
|
-
$kind: "Transaction",
|
|
277
|
-
Transaction: transactionResult.Transaction,
|
|
278
|
-
commandResults
|
|
279
|
-
};
|
|
280
|
-
else return {
|
|
281
|
-
$kind: "FailedTransaction",
|
|
282
|
-
FailedTransaction: transactionResult.FailedTransaction,
|
|
283
|
-
commandResults
|
|
284
|
-
};
|
|
227
|
+
return withProtoJson(parseGrpcSimulateTransactionResponse(response, { include: options.include }), options.include, () => SimulateTransactionResponse.toJson(response));
|
|
285
228
|
}
|
|
286
229
|
async getReferenceGasPrice(options) {
|
|
287
230
|
return { referenceGasPrice: (await this.#client.ledgerService.getEpoch({ readMask: { paths: ["reference_gas_price"] } }, { abort: options?.signal })).response.epoch?.referenceGasPrice?.toString() ?? "" };
|
|
@@ -460,6 +403,31 @@ var GrpcCoreClient = class extends CoreClient {
|
|
|
460
403
|
};
|
|
461
404
|
}
|
|
462
405
|
};
|
|
406
|
+
function transactionReadMaskPaths(include, prefix = "") {
|
|
407
|
+
const paths = [
|
|
408
|
+
"digest",
|
|
409
|
+
"transaction.digest",
|
|
410
|
+
"signatures",
|
|
411
|
+
"effects.status"
|
|
412
|
+
];
|
|
413
|
+
if (include?.transaction) paths.push("transaction.sender", "transaction.gas_payment", "transaction.expiration", "transaction.kind");
|
|
414
|
+
if (include?.bcs) paths.push("transaction.bcs");
|
|
415
|
+
if (include?.balanceChanges) paths.push("balance_changes");
|
|
416
|
+
if (include?.effects) paths.push("effects");
|
|
417
|
+
if (include?.events) paths.push("events");
|
|
418
|
+
if (include?.objectTypes) {
|
|
419
|
+
paths.push("effects.changed_objects.object_type");
|
|
420
|
+
paths.push("effects.changed_objects.object_id");
|
|
421
|
+
}
|
|
422
|
+
return prefix ? paths.map((path) => prefix + path) : paths;
|
|
423
|
+
}
|
|
424
|
+
function withProtoJson(result, include, getProtoJson) {
|
|
425
|
+
if (!include?.protoJson) return result;
|
|
426
|
+
return {
|
|
427
|
+
...result,
|
|
428
|
+
protoJson: getProtoJson()
|
|
429
|
+
};
|
|
430
|
+
}
|
|
463
431
|
function mapDisplayProto(include, display) {
|
|
464
432
|
if (!include) return void 0;
|
|
465
433
|
if (display === void 0) return null;
|
|
@@ -723,7 +691,8 @@ function parseTransactionEffects({ effects }) {
|
|
|
723
691
|
auxiliaryDataDigest: effects.auxiliaryDataDigest ?? null
|
|
724
692
|
};
|
|
725
693
|
}
|
|
726
|
-
function
|
|
694
|
+
function parseGrpcTransactionResponse(transaction, options) {
|
|
695
|
+
const include = options?.include;
|
|
727
696
|
const objectTypes = {};
|
|
728
697
|
if (include?.objectTypes) transaction.effects?.changedObjects?.forEach((change) => {
|
|
729
698
|
if (change.objectId && change.objectType) objectTypes[change.objectId] = change.objectType;
|
|
@@ -786,6 +755,24 @@ function parseTransaction(transaction, include) {
|
|
|
786
755
|
FailedTransaction: result
|
|
787
756
|
};
|
|
788
757
|
}
|
|
758
|
+
function parseGrpcSimulateTransactionResponse(response, options) {
|
|
759
|
+
const include = options?.include;
|
|
760
|
+
const transactionResult = parseGrpcTransactionResponse(response.transaction, { include });
|
|
761
|
+
const commandResults = include?.commandResults && response.commandOutputs ? response.commandOutputs.map((output) => ({
|
|
762
|
+
returnValues: (output.returnValues ?? []).map((rv) => ({ bcs: rv.value?.value ?? null })),
|
|
763
|
+
mutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({ bcs: mr.value?.value ?? null }))
|
|
764
|
+
})) : void 0;
|
|
765
|
+
if (transactionResult.$kind === "Transaction") return {
|
|
766
|
+
$kind: "Transaction",
|
|
767
|
+
Transaction: transactionResult.Transaction,
|
|
768
|
+
commandResults
|
|
769
|
+
};
|
|
770
|
+
return {
|
|
771
|
+
$kind: "FailedTransaction",
|
|
772
|
+
FailedTransaction: transactionResult.FailedTransaction,
|
|
773
|
+
commandResults
|
|
774
|
+
};
|
|
775
|
+
}
|
|
789
776
|
function parseNormalizedSuiMoveType(type) {
|
|
790
777
|
let reference = null;
|
|
791
778
|
if (type.reference === OpenSignature_Reference.IMMUTABLE) reference = "immutable";
|
|
@@ -826,5 +813,5 @@ function parseNormalizedSuiMoveTypeBody(type) {
|
|
|
826
813
|
}
|
|
827
814
|
|
|
828
815
|
//#endregion
|
|
829
|
-
export { GrpcCoreClient };
|
|
816
|
+
export { GrpcCoreClient, parseGrpcSimulateTransactionResponse, parseGrpcTransactionResponse };
|
|
830
817
|
//# sourceMappingURL=core.mjs.map
|
package/dist/grpc/core.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.mjs","names":["#client","bcs"],"sources":["../../src/grpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CoreClientOptions, SuiClientTypes } from '../client/index.js';\nimport { CoreClient, formatMoveAbortMessage, SimulationError } from '../client/index.js';\nimport { raceSignal } from '../client/mvr.js';\nimport type { SuiGrpcClient } from './client.js';\nimport type { Owner } from './proto/sui/rpc/v2/owner.js';\nimport { Owner_OwnerKind } from './proto/sui/rpc/v2/owner.js';\nimport { chunk, fromBase64, toBase64 } from '@mysten/utils';\nimport type { ExecutedTransaction } from './proto/sui/rpc/v2/executed_transaction.js';\nimport type { TransactionEffects } from './proto/sui/rpc/v2/effects.js';\nimport {\n\tUnchangedConsensusObject_UnchangedConsensusObjectKind,\n\tChangedObject_IdOperation,\n\tChangedObject_InputObjectState,\n\tChangedObject_OutputObjectState,\n} from './proto/sui/rpc/v2/effects.js';\nimport type {\n\tExecutionError as GrpcExecutionError,\n\tMoveAbort as GrpcMoveAbort,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport {\n\tExecutionError_ExecutionErrorKind,\n\tCommandArgumentError_CommandArgumentErrorKind,\n\tTypeArgumentError_TypeArgumentErrorKind,\n\tPackageUpgradeError_PackageUpgradeErrorKind,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\nimport { TransactionDataBuilder } from '../transactions/index.js';\nimport { bcs } from '../bcs/index.js';\nimport { normalizeStructTag, normalizeSuiAddress } from '../utils/sui-types.js';\nimport { SUI_TYPE_ARG } from '../utils/constants.js';\nimport type { OpenSignature, OpenSignatureBody } from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tAbility,\n\tFunctionDescriptor_Visibility,\n\tOpenSignature_Reference,\n\tOpenSignatureBody_Type,\n} from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tapplyGrpcResolvedTransaction,\n\ttransactionDataToGrpcTransaction,\n\ttransactionToGrpcTransaction,\n\tgrpcTransactionToTransactionData,\n} from '../client/transaction-resolver.js';\nimport { Value } from './proto/google/protobuf/struct.js';\nimport { SimulateTransactionRequest_TransactionChecks } from './proto/sui/rpc/v2/transaction_execution_service.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\nexport class GrpcCoreClient extends CoreClient {\n\t#client: SuiGrpcClient;\n\tconstructor({ client, ...options }: GrpcCoreClientOptions) {\n\t\tsuper(options);\n\t\tthis.#client = client;\n\t}\n\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.GetObjectsResponse<Include>> {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tfor (const batch of batches) {\n\t\t\tconst response = await this.#client.ledgerService.batchGetObjects(\n\t\t\t\t{\n\t\t\t\t\trequests: batch.map((id) => ({ objectId: id })),\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\tresults.push(\n\t\t\t\t...response.response.objects.map((object): SuiClientTypes.Object<Include> | Error => {\n\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t// TODO: improve error handling\n\t\t\t\t\t\treturn new Error(object.result.error.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\treturn new Error('Unexpected result type');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\t\t\t\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\t\t\t\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\tconst type =\n\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t? object.result.object.json\n\t\t\t\t\t\t\t? (Value.toJson(object.result.object.json) as Record<string, unknown>)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.ListOwnedObjectsResponse<Include>> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: options.type\n\t\t\t\t\t? (await this.mvr.resolveType({ type: options.type, signal: options.signal })).type\n\t\t\t\t\t: undefined,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst objects = response.response.objects.map(\n\t\t\t(object): SuiClientTypes.Object<Include> => ({\n\t\t\t\tobjectId: object.objectId!,\n\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\tdigest: object.digest!,\n\t\t\t\tcontent: object.contents?.value as SuiClientTypes.Object<Include>['content'],\n\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\ttype: object.objectType!,\n\t\t\t\tpreviousTransaction: (object.previousTransaction ??\n\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\tobjectBcs: object.bcs?.value as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\tjson: (options.include?.json\n\t\t\t\t\t? object.json\n\t\t\t\t\t\t? (Value.toJson(object.json) as Record<string, unknown>)\n\t\t\t\t\t\t: null\n\t\t\t\t\t: undefined) as SuiClientTypes.Object<Include>['json'],\n\t\t\t\tdisplay: mapDisplayProto(\n\t\t\t\t\toptions.include?.display,\n\t\t\t\t\tobject.display,\n\t\t\t\t) as SuiClientTypes.Object<Include>['display'],\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tobjects,\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\tasync listCoins(\n\t\toptions: SuiClientTypes.ListCoinsOptions,\n\t): Promise<SuiClientTypes.ListCoinsResponse> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id', 'balance'];\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: `0x2::coin::Coin<${(await this.mvr.resolveType({ type: coinType, signal: options.signal })).type}>`,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tobjects: response.response.objects.map(\n\t\t\t\t(object): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\t\tdigest: object.digest!,\n\t\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\t\ttype: object.objectType!,\n\t\t\t\t\tbalance: object.balance?.toString()!,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\n\tasync getBalance(\n\t\toptions: SuiClientTypes.GetBalanceOptions,\n\t): Promise<SuiClientTypes.GetBalanceResponse> {\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\t\tconst result = await this.#client.stateService.getBalance(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tcoinType: (await this.mvr.resolveType({ type: coinType, signal: options.signal })).type,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tbalance: result.response.balance?.balance?.toString() ?? '0',\n\t\t\t\tcoinType: result.response.balance?.coinType ?? coinType,\n\t\t\t\tcoinBalance: result.response.balance?.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: result.response.balance?.addressBalance?.toString() ?? '0',\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (\n\t\t\tawait this.mvr.resolveType({ type: options.coinType, signal: options.signal })\n\t\t).type;\n\n\t\tlet response;\n\t\ttry {\n\t\t\t({ response } = await this.#client.stateService.getCoinInfo(\n\t\t\t\t{\n\t\t\t\t\tcoinType,\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t));\n\t\t} catch (error) {\n\t\t\t// Don't swallow cancellation — only treat the coin as missing on real errors.\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\tif (!response.metadata) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: response.metadata.id ?? null,\n\t\t\t\tdecimals: response.metadata.decimals ?? 0,\n\t\t\t\tname: response.metadata.name ?? '',\n\t\t\t\tsymbol: response.metadata.symbol ?? '',\n\t\t\t\tdescription: response.metadata.description ?? '',\n\t\t\t\ticonUrl: response.metadata.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listBalances(\n\t\toptions: SuiClientTypes.ListBalancesOptions,\n\t): Promise<SuiClientTypes.ListBalancesResponse> {\n\t\tconst result = await this.#client.stateService.listBalances(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\thasNextPage: !!result.response.nextPageToken,\n\t\t\tcursor: result.response.nextPageToken ? toBase64(result.response.nextPageToken) : null,\n\t\t\tbalances: result.response.balances.map((balance) => ({\n\t\t\t\tbalance: balance.balance?.toString() ?? '0',\n\t\t\t\tcoinType: balance.coinType!,\n\t\t\t\tcoinBalance: balance.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: balance.addressBalance?.toString() ?? '0',\n\t\t\t})),\n\t\t};\n\t}\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\t\tif (options.include?.transaction) {\n\t\t\tpaths.push(\n\t\t\t\t'transaction.sender',\n\t\t\t\t'transaction.gas_payment',\n\t\t\t\t'transaction.expiration',\n\t\t\t\t'transaction.kind',\n\t\t\t);\n\t\t}\n\t\tif (options.include?.bcs) {\n\t\t\tpaths.push('transaction.bcs');\n\t\t}\n\t\tif (options.include?.balanceChanges) {\n\t\t\tpaths.push('balance_changes');\n\t\t}\n\t\tif (options.include?.effects) {\n\t\t\tpaths.push('effects');\n\t\t}\n\t\tif (options.include?.events) {\n\t\t\tpaths.push('events');\n\t\t}\n\t\tif (options.include?.objectTypes) {\n\t\t\tpaths.push('effects.changed_objects.object_type');\n\t\t\tpaths.push('effects.changed_objects.object_id');\n\t\t}\n\n\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t{\n\t\t\t\tdigest: options.digest,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tif (!response.transaction) {\n\t\t\tthrow new Error(`Transaction ${options.digest} not found`);\n\t\t}\n\n\t\treturn parseTransaction(response.transaction, options.include);\n\t}\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\t\tif (options.include?.transaction) {\n\t\t\tpaths.push(\n\t\t\t\t'transaction.sender',\n\t\t\t\t'transaction.gas_payment',\n\t\t\t\t'transaction.expiration',\n\t\t\t\t'transaction.kind',\n\t\t\t);\n\t\t}\n\t\tif (options.include?.bcs) {\n\t\t\tpaths.push('transaction.bcs');\n\t\t}\n\t\tif (options.include?.balanceChanges) {\n\t\t\tpaths.push('balance_changes');\n\t\t}\n\t\tif (options.include?.effects) {\n\t\t\tpaths.push('effects');\n\t\t}\n\t\tif (options.include?.events) {\n\t\t\tpaths.push('events');\n\t\t}\n\t\tif (options.include?.objectTypes) {\n\t\t\tpaths.push('effects.changed_objects.object_type');\n\t\t\tpaths.push('effects.changed_objects.object_id');\n\t\t}\n\n\t\tconst { response } = await this.#client.transactionExecutionService.executeTransaction(\n\t\t\t{\n\t\t\t\ttransaction: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsignatures: options.signatures.map((signature) => ({\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn parseTransaction(response.transaction!, options.include);\n\t}\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tconst paths = [\n\t\t\t'transaction.digest',\n\t\t\t'transaction.transaction.digest',\n\t\t\t'transaction.signatures',\n\t\t\t'transaction.effects.status',\n\t\t];\n\t\tif (options.include?.transaction) {\n\t\t\tpaths.push(\n\t\t\t\t'transaction.transaction.sender',\n\t\t\t\t'transaction.transaction.gas_payment',\n\t\t\t\t'transaction.transaction.expiration',\n\t\t\t\t'transaction.transaction.kind',\n\t\t\t);\n\t\t}\n\t\tif (options.include?.bcs) {\n\t\t\tpaths.push('transaction.transaction.bcs');\n\t\t}\n\t\tif (options.include?.balanceChanges) {\n\t\t\tpaths.push('transaction.balance_changes');\n\t\t}\n\t\tif (options.include?.effects) {\n\t\t\tpaths.push('transaction.effects');\n\t\t}\n\t\tif (options.include?.events) {\n\t\t\tpaths.push('transaction.events');\n\t\t}\n\t\tif (options.include?.objectTypes) {\n\t\t\t// Use effects.changed_objects to match JSON-RPC behavior (which uses objectChanges)\n\t\t\tpaths.push('transaction.effects.changed_objects.object_type');\n\t\t\tpaths.push('transaction.effects.changed_objects.object_id');\n\t\t}\n\t\tif (options.include?.commandResults) {\n\t\t\tpaths.push('command_outputs');\n\t\t}\n\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.prepareForSerialization({ client: this });\n\t\t}\n\n\t\tconst { response } = await this.#client.transactionExecutionService.simulateTransaction(\n\t\t\t{\n\t\t\t\ttransaction:\n\t\t\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tbcs: {\n\t\t\t\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: transactionToGrpcTransaction(options.transaction),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t\tdoGasSelection: false,\n\t\t\t\tchecks:\n\t\t\t\t\toptions.checksEnabled === false\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst transactionResult = parseTransaction(response.transaction!, options.include);\n\n\t\t// Add command results if requested\n\t\tconst commandResults =\n\t\t\toptions.include?.commandResults && response.commandOutputs\n\t\t\t\t? response.commandOutputs.map((output) => ({\n\t\t\t\t\t\treturnValues: (output.returnValues ?? []).map((rv) => ({\n\t\t\t\t\t\t\tbcs: rv.value?.value ?? null,\n\t\t\t\t\t\t})),\n\t\t\t\t\t\tmutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({\n\t\t\t\t\t\t\tbcs: mr.value?.value ?? null,\n\t\t\t\t\t\t})),\n\t\t\t\t\t}))\n\t\t\t\t: undefined;\n\n\t\tif (transactionResult.$kind === 'Transaction') {\n\t\t\treturn {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: transactionResult.Transaction,\n\t\t\t\tcommandResults:\n\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t};\n\t\t} else {\n\t\t\treturn {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: transactionResult.FailedTransaction,\n\t\t\t\tcommandResults:\n\t\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t\t};\n\t\t}\n\t}\n\tasync getReferenceGasPrice(\n\t\toptions?: SuiClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<SuiClientTypes.GetReferenceGasPriceResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: ['reference_gas_price'],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\treturn {\n\t\t\treferenceGasPrice: response.response.epoch?.referenceGasPrice?.toString() ?? '',\n\t\t};\n\t}\n\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: { paths: ['protocol_config'] },\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst protocolConfig = response.response.epoch?.protocolConfig;\n\t\tif (!protocolConfig) {\n\t\t\tthrow new Error('Protocol config not found in response');\n\t\t}\n\n\t\tconst featureFlags: Record<string, boolean> = { ...protocolConfig.featureFlags };\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tif (protocolConfig.attributes) {\n\t\t\tfor (const [key, value] of Object.entries(protocolConfig.attributes)) {\n\t\t\t\tattributes[key] = value ?? null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: protocolConfig.protocolVersion?.toString() ?? (null as never),\n\t\t\t\tfeatureFlags,\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'system_state.version',\n\t\t\t\t\t\t'system_state.epoch',\n\t\t\t\t\t\t'system_state.protocol_version',\n\t\t\t\t\t\t'system_state.reference_gas_price',\n\t\t\t\t\t\t'system_state.epoch_start_timestamp_ms',\n\t\t\t\t\t\t'system_state.safe_mode',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_computation_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rebates',\n\t\t\t\t\t\t'system_state.safe_mode_non_refundable_storage_fee',\n\t\t\t\t\t\t'system_state.parameters',\n\t\t\t\t\t\t'system_state.storage_fund',\n\t\t\t\t\t\t'system_state.stake_subsidy',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst epoch = response.response.epoch;\n\t\tconst systemState = epoch?.systemState;\n\t\tif (!systemState) {\n\t\t\tthrow new Error('System state not found in response');\n\t\t}\n\n\t\tconst startMs = epoch?.start?.seconds\n\t\t\t? Number(epoch.start.seconds) * 1000 + Math.floor((epoch.start.nanos || 0) / 1_000_000)\n\t\t\t: systemState.epochStartTimestampMs\n\t\t\t\t? Number(systemState.epochStartTimestampMs)\n\t\t\t\t: (null as never);\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.version?.toString() ?? (null as never),\n\t\t\t\tepoch: systemState.epoch?.toString() ?? (null as never),\n\t\t\t\tprotocolVersion: systemState.protocolVersion?.toString() ?? (null as never),\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: startMs.toString(),\n\t\t\t\tsafeMode: systemState.safeMode ?? false,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeComputationRewards:\n\t\t\t\t\tsystemState.safeModeComputationRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates?.toString() ?? (null as never),\n\t\t\t\tsafeModeNonRefundableStorageFee:\n\t\t\t\t\tsystemState.safeModeNonRefundableStorageFee?.toString() ?? (null as never),\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.parameters?.epochDurationMs?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyStartEpoch:\n\t\t\t\t\t\tsystemState.parameters?.stakeSubsidyStartEpoch?.toString() ?? (null as never),\n\t\t\t\t\tmaxValidatorCount:\n\t\t\t\t\t\tsystemState.parameters?.maxValidatorCount?.toString() ?? (null as never),\n\t\t\t\t\tminValidatorJoiningStake:\n\t\t\t\t\t\tsystemState.parameters?.minValidatorJoiningStake?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeThreshold:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeThreshold?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeGracePeriod:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeGracePeriod?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates:\n\t\t\t\t\t\tsystemState.storageFund?.totalObjectStorageRebates?.toString() ?? (null as never),\n\t\t\t\t\tnonRefundableBalance:\n\t\t\t\t\t\tsystemState.storageFund?.nonRefundableBalance?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidy?.balance?.toString() ?? (null as never),\n\t\t\t\t\tdistributionCounter:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.distributionCounter?.toString() ?? (null as never),\n\t\t\t\t\tcurrentDistributionAmount:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.currentDistributionAmount?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyPeriodLength:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyPeriodLength?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyDecreaseRate:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyDecreaseRate ?? (null as never),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listDynamicFields(\n\t\toptions: SuiClientTypes.ListDynamicFieldsOptions,\n\t): Promise<SuiClientTypes.ListDynamicFieldsResponse> {\n\t\treturn this.#client.listDynamicFields(options);\n\t}\n\n\tasync verifyZkLoginSignature(\n\t\toptions: SuiClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<SuiClientTypes.ZkLoginVerifyResponse> {\n\t\tconst messageBytes = fromBase64(options.bytes);\n\n\t\t// For PersonalMessage, the server expects BCS-encoded vector<u8>\n\t\t// For TransactionData, the server expects the raw BCS-encoded TransactionData as-is\n\t\tconst messageValue =\n\t\t\toptions.intentScope === 'PersonalMessage'\n\t\t\t\t? bcs.byteVector().serialize(messageBytes).toBytes()\n\t\t\t\t: messageBytes;\n\n\t\tconst { response } = await this.#client.signatureVerificationService.verifySignature(\n\t\t\t{\n\t\t\t\tmessage: {\n\t\t\t\t\tname: options.intentScope,\n\t\t\t\t\tvalue: messageValue,\n\t\t\t\t},\n\t\t\t\tsignature: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(options.signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taddress: options.address,\n\t\t\t\tjwks: [],\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tsuccess: response.isValid ?? false,\n\t\t\terrors: response.reason ? [response.reason] : [],\n\t\t};\n\t}\n\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name =\n\t\t\t(\n\t\t\t\tawait this.#client.nameService.reverseLookupName(\n\t\t\t\t\t{\n\t\t\t\t\t\taddress: options.address,\n\t\t\t\t\t},\n\t\t\t\t\t{ abort: options.signal },\n\t\t\t\t)\n\t\t\t).response.record?.name ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (\n\t\t\tawait this.mvr.resolvePackage({ package: options.packageId, signal: options.signal })\n\t\t).package;\n\t\tconst { response } = await this.#client.movePackageService.getFunction(\n\t\t\t{\n\t\t\t\tpackageId: resolvedPackageId,\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tlet visibility: 'public' | 'private' | 'friend' | 'unknown' = 'unknown';\n\n\t\tswitch (response.function?.visibility) {\n\t\t\tcase FunctionDescriptor_Visibility.PUBLIC:\n\t\t\t\tvisibility = 'public';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.PRIVATE:\n\t\t\t\tvisibility = 'private';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.FRIEND:\n\t\t\t\tvisibility = 'friend';\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: response.function?.name!,\n\t\t\t\tvisibility,\n\t\t\t\tisEntry: response.function?.isEntry ?? false,\n\t\t\t\ttypeParameters:\n\t\t\t\t\tresponse.function?.typeParameters?.map(({ constraints }) => ({\n\t\t\t\t\t\tisPhantom: false,\n\t\t\t\t\t\tconstraints:\n\t\t\t\t\t\t\tconstraints.map((constraint) => {\n\t\t\t\t\t\t\t\tswitch (constraint) {\n\t\t\t\t\t\t\t\t\tcase Ability.COPY:\n\t\t\t\t\t\t\t\t\t\treturn 'copy';\n\t\t\t\t\t\t\t\t\tcase Ability.DROP:\n\t\t\t\t\t\t\t\t\t\treturn 'drop';\n\t\t\t\t\t\t\t\t\tcase Ability.STORE:\n\t\t\t\t\t\t\t\t\t\treturn 'store';\n\t\t\t\t\t\t\t\t\tcase Ability.KEY:\n\t\t\t\t\t\t\t\t\t\treturn 'key';\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn 'unknown';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) ?? [],\n\t\t\t\t\t})) ?? [],\n\t\t\t\tparameters:\n\t\t\t\t\tresponse.function?.parameters?.map((param) => parseNormalizedSuiMoveType(param)) ?? [],\n\t\t\t\treturns: response.function?.returns?.map((ret) => parseNormalizedSuiMoveType(ret)) ?? [],\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getChainIdentifier(\n\t\toptions?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\t// The result is cached and shared across callers, so the underlying request must\n\t\t// not carry any single caller's signal. Isolate cancellation per-caller instead.\n\t\treturn raceSignal(\n\t\t\tPromise.resolve(\n\t\t\t\tthis.cache.read(['chainIdentifier'], async () => {\n\t\t\t\t\tconst { response } = await this.#client.ledgerService.getServiceInfo({});\n\t\t\t\t\tif (!response.chainId) {\n\t\t\t\t\t\tthrow new Error('Chain identifier not found in service info');\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchainIdentifier: response.chainId,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t),\n\t\t\toptions?.signal,\n\t\t);\n\t}\n\n\tresolveTransactionPlugin() {\n\t\tconst client = this.#client;\n\t\treturn async function resolveTransactionData(\n\t\t\ttransactionData: TransactionDataBuilder,\n\t\t\toptions: BuildTransactionOptions,\n\t\t\tnext: () => Promise<void>,\n\t\t) {\n\t\t\tconst snapshot = transactionData.snapshot();\n\t\t\t// If sender is not set, use a dummy address for resolution purposes\n\t\t\t// The resolved transaction will not include the sender if it wasn't set originally\n\t\t\tif (!snapshot.sender) {\n\t\t\t\tsnapshot.sender = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\t\t\t}\n\t\t\tconst grpcTransaction = transactionDataToGrpcTransaction(snapshot);\n\n\t\t\tlet response;\n\t\t\ttry {\n\t\t\t\tconst result = await client.transactionExecutionService.simulateTransaction({\n\t\t\t\t\ttransaction: grpcTransaction,\n\t\t\t\t\tdoGasSelection:\n\t\t\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null),\n\t\t\t\t\t// Kind-only txns are never executed directly and do not have sender, so skip validation checks.\n\t\t\t\t\tchecks: options.onlyTransactionKind\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t'transaction.transaction.sender',\n\t\t\t\t\t\t\t'transaction.transaction.gas_payment',\n\t\t\t\t\t\t\t'transaction.transaction.expiration',\n\t\t\t\t\t\t\t'transaction.transaction.kind',\n\t\t\t\t\t\t\t'transaction.effects.status',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tresponse = result.response;\n\t\t\t} catch (error) {\n\t\t\t\t// https://github.com/timostamm/protobuf-ts/pull/739\n\t\t\t\tif (error instanceof Error && error.message) {\n\t\t\t\t\tthrow new SimulationError(decodeURIComponent(error.message), { cause: error });\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\tresponse.transaction?.effects?.status &&\n\t\t\t\t!response.transaction.effects.status.success\n\t\t\t) {\n\t\t\t\tconst executionError = response.transaction.effects.status.error\n\t\t\t\t\t? parseGrpcExecutionError(response.transaction.effects.status.error)\n\t\t\t\t\t: undefined;\n\t\t\t\tconst errorMessage = executionError?.message ?? 'Transaction failed';\n\t\t\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\t\t\texecutionError,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!response.transaction?.transaction) {\n\t\t\t\tthrow new Error('simulateTransaction did not return resolved transaction data');\n\t\t\t}\n\n\t\t\tapplyGrpcResolvedTransaction(transactionData, response.transaction.transaction, options);\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction mapDisplayProto(\n\tinclude: boolean | undefined,\n\tdisplay: { output?: Value; errors?: Value } | undefined,\n): SuiClientTypes.Display | null | undefined {\n\tif (!include) return undefined;\n\tif (display === undefined) return null;\n\treturn {\n\t\toutput:\n\t\t\tdisplay.output !== undefined\n\t\t\t\t? (Value.toJson(display.output) as Record<string, unknown> | null)\n\t\t\t\t: null,\n\t\terrors:\n\t\t\tdisplay.errors !== undefined\n\t\t\t\t? (Value.toJson(display.errors) as Record<string, string> | null)\n\t\t\t\t: null,\n\t};\n}\n\nfunction mapOwner(owner: Owner | null | undefined): SuiClientTypes.ObjectOwner | null {\n\tif (!owner) {\n\t\treturn null;\n\t}\n\tif (owner.kind === Owner_OwnerKind.IMMUTABLE) {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.ADDRESS) {\n\t\treturn {\n\t\t\tAddressOwner: owner.address!,\n\t\t\t$kind: 'AddressOwner',\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.OBJECT) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.address!,\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.SHARED) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.version?.toString()!,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.CONSENSUS_ADDRESS) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.version?.toString()!,\n\t\t\t\towner: owner.address!,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Unknown owner kind ${JSON.stringify(owner, (_k, v) => (typeof v === 'bigint' ? v.toString() : v))}`,\n\t);\n}\n\nfunction parseGrpcExecutionError(error: GrpcExecutionError): SuiClientTypes.ExecutionError {\n\tconst message = error.description ?? 'Unknown error';\n\tconst command = error.command != null ? Number(error.command) : undefined;\n\tconst details = error.errorDetails;\n\n\tswitch (details?.oneofKind) {\n\t\tcase 'abort': {\n\t\t\tconst abort = details.abort;\n\t\t\tconst cleverError = abort.cleverError;\n\t\t\treturn {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation: abort.location,\n\t\t\t\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\t\t\t\tcleverError: cleverError\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlineNumber:\n\t\t\t\t\t\t\t\t\tcleverError.lineNumber != null ? Number(cleverError.lineNumber) : undefined,\n\t\t\t\t\t\t\t\tconstantName: cleverError.constantName,\n\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\tcleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t\t\t\t? cleverError.value.rendered\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: parseMoveAbort(abort),\n\t\t\t};\n\t\t}\n\n\t\tcase 'sizeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tsize: Number(details.sizeError.size ?? 0n),\n\t\t\t\t\tmaxSize: Number(details.sizeError.maxSize ?? 0n),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'commandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: details.commandArgumentError.argument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.commandArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'typeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: details.typeArgumentError.typeArgument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.typeArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'packageUpgradeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: mapErrorName(details.packageUpgradeError.kind),\n\t\t\t\t\tpackageId: details.packageUpgradeError.packageId,\n\t\t\t\t\tdigest: details.packageUpgradeError.digest,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'indexError':\n\t\t\treturn {\n\t\t\t\t$kind: 'IndexError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tIndexError: {\n\t\t\t\t\tindex: details.indexError.index,\n\t\t\t\t\tsubresult: details.indexError.subresult,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'coinDenyListError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tcoinType: details.coinDenyListError.coinType!,\n\t\t\t\t\taddress: details.coinDenyListError.address,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'congestedObjects':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjects: details.congestedObjects.objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'objectId':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjectId: details.objectId,\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nfunction parseMoveAbort(abort: GrpcMoveAbort): SuiClientTypes.MoveAbort {\n\treturn {\n\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\tlocation: { ...abort.location },\n\t\tcleverError: abort.cleverError\n\t\t\t? {\n\t\t\t\t\terrorCode:\n\t\t\t\t\t\tabort.cleverError.errorCode != null ? Number(abort.cleverError.errorCode) : undefined,\n\t\t\t\t\tlineNumber:\n\t\t\t\t\t\tabort.cleverError.lineNumber != null ? Number(abort.cleverError.lineNumber) : undefined,\n\t\t\t\t\tconstantName: abort.cleverError.constantName,\n\t\t\t\t\tconstantType: abort.cleverError.constantType,\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tabort.cleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t? abort.cleverError.value.rendered\n\t\t\t\t\t\t\t: abort.cleverError.value?.oneofKind === 'raw'\n\t\t\t\t\t\t\t\t? toBase64(abort.cleverError.value.raw)\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction mapErrorName(\n\tkind:\n\t\t| ExecutionError_ExecutionErrorKind\n\t\t| CommandArgumentError_CommandArgumentErrorKind\n\t\t| TypeArgumentError_TypeArgumentErrorKind\n\t\t| PackageUpgradeError_PackageUpgradeErrorKind\n\t\t| undefined,\n): string {\n\tif (kind == null) {\n\t\treturn 'Unknown';\n\t}\n\tconst name = CommandArgumentError_CommandArgumentErrorKind[kind];\n\tif (!name || name.endsWith('_UNKNOWN')) {\n\t\treturn 'Unknown';\n\t}\n\treturn name\n\t\t.split('_')\n\t\t.map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n\t\t.join('');\n}\n\nfunction mapIdOperation(\n\toperation: ChangedObject_IdOperation | undefined,\n): null | 'Created' | 'Deleted' | 'Unknown' | 'None' {\n\tif (operation == null) {\n\t\treturn null;\n\t}\n\tswitch (operation) {\n\t\tcase ChangedObject_IdOperation.CREATED:\n\t\t\treturn 'Created';\n\t\tcase ChangedObject_IdOperation.DELETED:\n\t\t\treturn 'Deleted';\n\t\tcase ChangedObject_IdOperation.NONE:\n\t\tcase ChangedObject_IdOperation.ID_OPERATION_UNKNOWN:\n\t\t\treturn 'None';\n\t\tdefault:\n\t\t\toperation satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapInputObjectState(\n\tstate: ChangedObject_InputObjectState | undefined,\n): null | 'Exists' | 'DoesNotExist' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_InputObjectState.EXISTS:\n\t\t\treturn 'Exists';\n\t\tcase ChangedObject_InputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_InputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapOutputObjectState(\n\tstate: ChangedObject_OutputObjectState | undefined,\n): null | 'ObjectWrite' | 'PackageWrite' | 'DoesNotExist' | 'AccumulatorWriteV1' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_OutputObjectState.OBJECT_WRITE:\n\t\t\treturn 'ObjectWrite';\n\t\tcase ChangedObject_OutputObjectState.PACKAGE_WRITE:\n\t\t\treturn 'PackageWrite';\n\t\tcase ChangedObject_OutputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_OutputObjectState.ACCUMULATOR_WRITE:\n\t\t\treturn 'AccumulatorWriteV1';\n\t\tcase ChangedObject_OutputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapUnchangedConsensusObjectKind(\n\tkind: UnchangedConsensusObject_UnchangedConsensusObjectKind | undefined,\n): null | SuiClientTypes.UnchangedConsensusObject['kind'] {\n\tif (kind == null) {\n\t\treturn null;\n\t}\n\tswitch (kind) {\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.UNCHANGED_CONSENSUS_OBJECT_KIND_UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_ONLY_ROOT:\n\t\t\treturn 'ReadOnlyRoot';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.MUTATE_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'MutateConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'ReadConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.CANCELED:\n\t\t\treturn 'Cancelled';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.PER_EPOCH_CONFIG:\n\t\t\treturn 'PerEpochConfig';\n\t\tdefault:\n\t\t\tkind satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nexport function parseTransactionEffects({\n\teffects,\n}: {\n\teffects: TransactionEffects | undefined;\n}): SuiClientTypes.TransactionEffects | null {\n\tif (!effects) {\n\t\treturn null;\n\t}\n\n\tconst changedObjects = effects.changedObjects.map((change): SuiClientTypes.ChangedObject => {\n\t\treturn {\n\t\t\tobjectId: change.objectId!,\n\t\t\tinputState: mapInputObjectState(change.inputState)!,\n\t\t\tinputVersion: change.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: change.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(change.inputOwner),\n\t\t\toutputState: mapOutputObjectState(change.outputState)!,\n\t\t\toutputVersion: change.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: change.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(change.outputOwner),\n\t\t\tidOperation: mapIdOperation(change.idOperation)!,\n\t\t};\n\t});\n\n\treturn {\n\t\tbcs: effects.bcs?.value!,\n\n\t\tversion: 2,\n\t\tstatus: effects.status?.success\n\t\t\t? {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\terror: null,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: parseGrpcExecutionError(effects.status!.error!),\n\t\t\t\t},\n\t\tgasUsed: {\n\t\t\tcomputationCost: effects.gasUsed?.computationCost?.toString()!,\n\t\t\tstorageCost: effects.gasUsed?.storageCost?.toString()!,\n\t\t\tstorageRebate: effects.gasUsed?.storageRebate?.toString()!,\n\t\t\tnonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()!,\n\t\t},\n\t\ttransactionDigest: effects.transactionDigest!,\n\t\tgasObject: {\n\t\t\tobjectId: effects.gasObject?.objectId!,\n\t\t\tinputState: mapInputObjectState(effects.gasObject?.inputState)!,\n\t\t\tinputVersion: effects.gasObject?.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: effects.gasObject?.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(effects.gasObject?.inputOwner),\n\t\t\toutputState: mapOutputObjectState(effects.gasObject?.outputState)!,\n\t\t\toutputVersion: effects.gasObject?.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: effects.gasObject?.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(effects.gasObject?.outputOwner),\n\t\t\tidOperation: mapIdOperation(effects.gasObject?.idOperation)!,\n\t\t},\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion?.toString() ?? null,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t(object): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: mapUnchangedConsensusObjectKind(object.kind)!,\n\t\t\t\t\t// TODO: we are inconsistent about id vs objectId\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString() ?? null,\n\t\t\t\t\tdigest: object.digest ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxiliaryDataDigest ?? null,\n\t};\n}\n\nfunction parseTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\ttransaction: ExecutedTransaction,\n\tinclude?: Include,\n): SuiClientTypes.TransactionResult<Include> {\n\tconst objectTypes: Record<string, string> = {};\n\tif (include?.objectTypes) {\n\t\ttransaction.effects?.changedObjects?.forEach((change) => {\n\t\t\tif (change.objectId && change.objectType) {\n\t\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tif (include?.transaction) {\n\t\tconst tx = transaction.transaction;\n\n\t\tif (!tx) {\n\t\t\tthrow new Error('Transaction data is required but missing from gRPC response');\n\t\t}\n\n\t\tconst resolved = grpcTransactionToTransactionData(tx);\n\t\ttransactionData = {\n\t\t\tgasData: resolved.gasData,\n\t\t\tsender: resolved.sender,\n\t\t\texpiration: resolved.expiration,\n\t\t\tcommands: resolved.commands,\n\t\t\tinputs: resolved.inputs,\n\t\t\tversion: resolved.version,\n\t\t};\n\t}\n\n\tconst bcsBytes = include?.bcs ? transaction.transaction?.bcs?.value : undefined;\n\n\tconst effects = include?.effects\n\t\t? parseTransactionEffects({\n\t\t\t\teffects: transaction.effects,\n\t\t\t})\n\t\t: undefined;\n\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status?.success\n\t\t? { success: true, error: null }\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: transaction.effects?.status?.error\n\t\t\t\t\t? parseGrpcExecutionError(transaction.effects.status.error)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\t\t\tmessage: 'Transaction failed',\n\t\t\t\t\t\t\tUnknown: null,\n\t\t\t\t\t\t},\n\t\t\t};\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest!,\n\t\tepoch: transaction.effects?.epoch?.toString() ?? null,\n\t\tstatus,\n\t\teffects: effects as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures: transaction.signatures?.map((sig) => toBase64(sig.bcs?.value!)) ?? [],\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: change.coinType!,\n\t\t\t\t\taddress: change.address!,\n\t\t\t\t\tamount: change.amount!,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.events.map((event) => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\teventType: event.eventType!,\n\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: OpenSignature): SuiClientTypes.OpenSignature {\n\tlet reference: 'mutable' | 'immutable' | null = null;\n\n\tif (type.reference === OpenSignature_Reference.IMMUTABLE) {\n\t\treference = 'immutable';\n\t} else if (type.reference === OpenSignature_Reference.MUTABLE) {\n\t\treference = 'mutable';\n\t}\n\n\treturn {\n\t\treference,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type.body!),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(type: OpenSignatureBody): SuiClientTypes.OpenSignatureBody {\n\tswitch (type.type) {\n\t\tcase OpenSignatureBody_Type.TYPE_UNKNOWN:\n\t\t\treturn { $kind: 'unknown' };\n\t\tcase OpenSignatureBody_Type.ADDRESS:\n\t\t\treturn { $kind: 'address' };\n\t\tcase OpenSignatureBody_Type.BOOL:\n\t\t\treturn { $kind: 'bool' };\n\t\tcase OpenSignatureBody_Type.U8:\n\t\t\treturn { $kind: 'u8' };\n\t\tcase OpenSignatureBody_Type.U16:\n\t\t\treturn { $kind: 'u16' };\n\t\tcase OpenSignatureBody_Type.U32:\n\t\t\treturn { $kind: 'u32' };\n\t\tcase OpenSignatureBody_Type.U64:\n\t\t\treturn { $kind: 'u64' };\n\t\tcase OpenSignatureBody_Type.U128:\n\t\t\treturn { $kind: 'u128' };\n\t\tcase OpenSignatureBody_Type.U256:\n\t\t\treturn { $kind: 'u256' };\n\t\tcase OpenSignatureBody_Type.VECTOR:\n\t\t\treturn {\n\t\t\t\t$kind: 'vector',\n\t\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.typeParameterInstantiation[0]),\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.DATATYPE:\n\t\t\treturn {\n\t\t\t\t$kind: 'datatype',\n\t\t\t\tdatatype: {\n\t\t\t\t\ttypeName: type.typeName!,\n\t\t\t\t\ttypeParameters: type.typeParameterInstantiation.map((t) =>\n\t\t\t\t\t\tparseNormalizedSuiMoveTypeBody(t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.TYPE_PARAMETER:\n\t\t\treturn {\n\t\t\t\t$kind: 'typeParameter',\n\t\t\t\tindex: type.typeParameter!,\n\t\t\t};\n\t\tdefault:\n\t\t\treturn { $kind: 'unknown' };\n\t}\n}\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"core.mjs","names":["#client","bcs"],"sources":["../../src/grpc/core.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { CoreClientOptions, SuiClientTypes } from '../client/index.js';\nimport { CoreClient, formatMoveAbortMessage, SimulationError } from '../client/index.js';\nimport { raceSignal } from '../client/mvr.js';\nimport type { SuiGrpcClient } from './client.js';\nimport type { Owner } from './proto/sui/rpc/v2/owner.js';\nimport { Owner_OwnerKind } from './proto/sui/rpc/v2/owner.js';\nimport { chunk, fromBase64, toBase64 } from '@mysten/utils';\nimport type { TransactionEffects } from './proto/sui/rpc/v2/effects.js';\nimport {\n\tUnchangedConsensusObject_UnchangedConsensusObjectKind,\n\tChangedObject_IdOperation,\n\tChangedObject_InputObjectState,\n\tChangedObject_OutputObjectState,\n} from './proto/sui/rpc/v2/effects.js';\nimport type {\n\tExecutionError as GrpcExecutionError,\n\tMoveAbort as GrpcMoveAbort,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport {\n\tExecutionError_ExecutionErrorKind,\n\tCommandArgumentError_CommandArgumentErrorKind,\n\tTypeArgumentError_TypeArgumentErrorKind,\n\tPackageUpgradeError_PackageUpgradeErrorKind,\n} from './proto/sui/rpc/v2/execution_status.js';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\nimport { TransactionDataBuilder } from '../transactions/index.js';\nimport { bcs } from '../bcs/index.js';\nimport { normalizeStructTag, normalizeSuiAddress } from '../utils/sui-types.js';\nimport { SUI_TYPE_ARG } from '../utils/constants.js';\nimport type { OpenSignature, OpenSignatureBody } from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tAbility,\n\tFunctionDescriptor_Visibility,\n\tOpenSignature_Reference,\n\tOpenSignatureBody_Type,\n} from './proto/sui/rpc/v2/move_package.js';\nimport {\n\tapplyGrpcResolvedTransaction,\n\ttransactionDataToGrpcTransaction,\n\ttransactionToGrpcTransaction,\n\tgrpcTransactionToTransactionData,\n} from '../client/transaction-resolver.js';\nimport { Value } from './proto/google/protobuf/struct.js';\nimport { ExecutedTransaction } from './proto/sui/rpc/v2/executed_transaction.js';\nimport {\n\tSimulateTransactionRequest_TransactionChecks,\n\tSimulateTransactionResponse,\n} from './proto/sui/rpc/v2/transaction_execution_service.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\n\nexport class GrpcCoreClient extends CoreClient {\n\t#client: SuiGrpcClient;\n\tconstructor({ client, ...options }: GrpcCoreClientOptions) {\n\t\tsuper(options);\n\t\tthis.#client = client;\n\t}\n\n\tasync getObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.GetObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.GetObjectsResponse<Include>> {\n\t\tconst batches = chunk(options.objectIds, 50);\n\t\tconst results: SuiClientTypes.GetObjectsResponse<Include>['objects'] = [];\n\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tfor (const batch of batches) {\n\t\t\tconst response = await this.#client.ledgerService.batchGetObjects(\n\t\t\t\t{\n\t\t\t\t\trequests: batch.map((id) => ({ objectId: id })),\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\tresults.push(\n\t\t\t\t...response.response.objects.map((object): SuiClientTypes.Object<Include> | Error => {\n\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t// TODO: improve error handling\n\t\t\t\t\t\treturn new Error(object.result.error.message);\n\t\t\t\t\t}\n\n\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\treturn new Error('Unexpected result type');\n\t\t\t\t\t}\n\n\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\t\t\t\t// Package objects have type \"package\" which is not a struct tag, so don't normalize it\n\t\t\t\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\tconst type =\n\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t? object.result.object.json\n\t\t\t\t\t\t\t? (Value.toJson(object.result.object.json) as Record<string, unknown>)\n\t\t\t\t\t\t\t: null\n\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t);\n\n\t\t\t\t\treturn {\n\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\ttype,\n\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t);\n\t\t}\n\n\t\treturn {\n\t\t\tobjects: results,\n\t\t};\n\t}\n\tasync listOwnedObjects<Include extends SuiClientTypes.ObjectInclude = {}>(\n\t\toptions: SuiClientTypes.ListOwnedObjectsOptions<Include>,\n\t): Promise<SuiClientTypes.ListOwnedObjectsResponse<Include>> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id'];\n\t\tif (options.include?.content) {\n\t\t\tpaths.push('contents');\n\t\t}\n\t\tif (options.include?.previousTransaction) {\n\t\t\tpaths.push('previous_transaction');\n\t\t}\n\t\tif (options.include?.objectBcs) {\n\t\t\tpaths.push('bcs');\n\t\t}\n\t\tif (options.include?.json) {\n\t\t\tpaths.push('json');\n\t\t}\n\t\tif (options.include?.display) {\n\t\t\tpaths.push('display');\n\t\t}\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: options.type\n\t\t\t\t\t? (await this.mvr.resolveType({ type: options.type, signal: options.signal })).type\n\t\t\t\t\t: undefined,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst objects = response.response.objects.map(\n\t\t\t(object): SuiClientTypes.Object<Include> => ({\n\t\t\t\tobjectId: object.objectId!,\n\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\tdigest: object.digest!,\n\t\t\t\tcontent: object.contents?.value as SuiClientTypes.Object<Include>['content'],\n\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\ttype: object.objectType!,\n\t\t\t\tpreviousTransaction: (object.previousTransaction ??\n\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\tobjectBcs: object.bcs?.value as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\tjson: (options.include?.json\n\t\t\t\t\t? object.json\n\t\t\t\t\t\t? (Value.toJson(object.json) as Record<string, unknown>)\n\t\t\t\t\t\t: null\n\t\t\t\t\t: undefined) as SuiClientTypes.Object<Include>['json'],\n\t\t\t\tdisplay: mapDisplayProto(\n\t\t\t\t\toptions.include?.display,\n\t\t\t\t\tobject.display,\n\t\t\t\t) as SuiClientTypes.Object<Include>['display'],\n\t\t\t}),\n\t\t);\n\n\t\treturn {\n\t\t\tobjects,\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\tasync listCoins(\n\t\toptions: SuiClientTypes.ListCoinsOptions,\n\t): Promise<SuiClientTypes.ListCoinsResponse> {\n\t\tconst paths = ['owner', 'object_type', 'digest', 'version', 'object_id', 'balance'];\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\n\t\tconst response = await this.#client.stateService.listOwnedObjects(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tobjectType: `0x2::coin::Coin<${(await this.mvr.resolveType({ type: coinType, signal: options.signal })).type}>`,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tobjects: response.response.objects.map(\n\t\t\t\t(object): SuiClientTypes.Coin => ({\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString()!,\n\t\t\t\t\tdigest: object.digest!,\n\t\t\t\t\towner: mapOwner(object.owner)!,\n\t\t\t\t\ttype: object.objectType!,\n\t\t\t\t\tbalance: object.balance?.toString()!,\n\t\t\t\t}),\n\t\t\t),\n\t\t\tcursor: response.response.nextPageToken ? toBase64(response.response.nextPageToken) : null,\n\t\t\thasNextPage: response.response.nextPageToken !== undefined,\n\t\t};\n\t}\n\n\tasync getBalance(\n\t\toptions: SuiClientTypes.GetBalanceOptions,\n\t): Promise<SuiClientTypes.GetBalanceResponse> {\n\t\tconst coinType = options.coinType ?? SUI_TYPE_ARG;\n\t\tconst result = await this.#client.stateService.getBalance(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tcoinType: (await this.mvr.resolveType({ type: coinType, signal: options.signal })).type,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tbalance: {\n\t\t\t\tbalance: result.response.balance?.balance?.toString() ?? '0',\n\t\t\t\tcoinType: result.response.balance?.coinType ?? coinType,\n\t\t\t\tcoinBalance: result.response.balance?.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: result.response.balance?.addressBalance?.toString() ?? '0',\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCoinMetadata(\n\t\toptions: SuiClientTypes.GetCoinMetadataOptions,\n\t): Promise<SuiClientTypes.GetCoinMetadataResponse> {\n\t\tconst coinType = (\n\t\t\tawait this.mvr.resolveType({ type: options.coinType, signal: options.signal })\n\t\t).type;\n\n\t\tlet response;\n\t\ttry {\n\t\t\t({ response } = await this.#client.stateService.getCoinInfo(\n\t\t\t\t{\n\t\t\t\t\tcoinType,\n\t\t\t\t},\n\t\t\t\t{ abort: options.signal },\n\t\t\t));\n\t\t} catch (error) {\n\t\t\t// Don't swallow cancellation — only treat the coin as missing on real errors.\n\t\t\tif (options.signal?.aborted) {\n\t\t\t\tthrow error;\n\t\t\t}\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\tif (!response.metadata) {\n\t\t\treturn { coinMetadata: null };\n\t\t}\n\n\t\treturn {\n\t\t\tcoinMetadata: {\n\t\t\t\tid: response.metadata.id ?? null,\n\t\t\t\tdecimals: response.metadata.decimals ?? 0,\n\t\t\t\tname: response.metadata.name ?? '',\n\t\t\t\tsymbol: response.metadata.symbol ?? '',\n\t\t\t\tdescription: response.metadata.description ?? '',\n\t\t\t\ticonUrl: response.metadata.iconUrl ?? null,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listBalances(\n\t\toptions: SuiClientTypes.ListBalancesOptions,\n\t): Promise<SuiClientTypes.ListBalancesResponse> {\n\t\tconst result = await this.#client.stateService.listBalances(\n\t\t\t{\n\t\t\t\towner: options.owner,\n\t\t\t\tpageToken: options.cursor ? fromBase64(options.cursor) : undefined,\n\t\t\t\tpageSize: options.limit,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\thasNextPage: !!result.response.nextPageToken,\n\t\t\tcursor: result.response.nextPageToken ? toBase64(result.response.nextPageToken) : null,\n\t\t\tbalances: result.response.balances.map((balance) => ({\n\t\t\t\tbalance: balance.balance?.toString() ?? '0',\n\t\t\t\tcoinType: balance.coinType!,\n\t\t\t\tcoinBalance: balance.coinBalance?.toString() ?? '0',\n\t\t\t\taddressBalance: balance.addressBalance?.toString() ?? '0',\n\t\t\t})),\n\t\t};\n\t}\n\tasync getTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.GetTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t{\n\t\t\t\tdigest: options.digest,\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tif (!response.transaction) {\n\t\t\tthrow new Error(`Transaction ${options.digest} not found`);\n\t\t}\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync executeTransaction<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ExecuteTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.TransactionResult<Include>> {\n\t\tconst { response } = await this.#client.transactionExecutionService.executeTransaction(\n\t\t\t{\n\t\t\t\ttransaction: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\tsignatures: options.signatures.map((signature) => ({\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t})),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcTransactionResponse(response.transaction!, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t);\n\t}\n\tasync simulateTransaction<Include extends SuiClientTypes.SimulateTransactionInclude = {}>(\n\t\toptions: SuiClientTypes.SimulateTransactionOptions<Include>,\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\tconst paths = transactionReadMaskPaths(options.include, 'transaction.');\n\t\tif (options.include?.commandResults) {\n\t\t\tpaths.push('command_outputs');\n\t\t}\n\n\t\tif (!(options.transaction instanceof Uint8Array)) {\n\t\t\tawait options.transaction.prepareForSerialization({ client: this });\n\t\t}\n\n\t\tconst { response } = await this.#client.transactionExecutionService.simulateTransaction(\n\t\t\t{\n\t\t\t\ttransaction:\n\t\t\t\t\toptions.transaction instanceof Uint8Array\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tbcs: {\n\t\t\t\t\t\t\t\t\tvalue: options.transaction,\n\t\t\t\t\t\t\t\t},\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: transactionToGrpcTransaction(options.transaction),\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths,\n\t\t\t\t},\n\t\t\t\tdoGasSelection: false,\n\t\t\t\tchecks:\n\t\t\t\t\toptions.checksEnabled === false\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn withProtoJson(\n\t\t\tparseGrpcSimulateTransactionResponse(response, { include: options.include }),\n\t\t\toptions.include,\n\t\t\t() => SimulateTransactionResponse.toJson(response),\n\t\t);\n\t}\n\tasync getReferenceGasPrice(\n\t\toptions?: SuiClientTypes.GetReferenceGasPriceOptions,\n\t): Promise<SuiClientTypes.GetReferenceGasPriceResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: ['reference_gas_price'],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\treturn {\n\t\t\treferenceGasPrice: response.response.epoch?.referenceGasPrice?.toString() ?? '',\n\t\t};\n\t}\n\n\tasync getProtocolConfig(\n\t\toptions?: SuiClientTypes.GetProtocolConfigOptions,\n\t): Promise<SuiClientTypes.GetProtocolConfigResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: { paths: ['protocol_config'] },\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst protocolConfig = response.response.epoch?.protocolConfig;\n\t\tif (!protocolConfig) {\n\t\t\tthrow new Error('Protocol config not found in response');\n\t\t}\n\n\t\tconst featureFlags: Record<string, boolean> = { ...protocolConfig.featureFlags };\n\t\tconst attributes: Record<string, string | null> = {};\n\t\tif (protocolConfig.attributes) {\n\t\t\tfor (const [key, value] of Object.entries(protocolConfig.attributes)) {\n\t\t\t\tattributes[key] = value ?? null;\n\t\t\t}\n\t\t}\n\n\t\treturn {\n\t\t\tprotocolConfig: {\n\t\t\t\tprotocolVersion: protocolConfig.protocolVersion?.toString() ?? (null as never),\n\t\t\t\tfeatureFlags,\n\t\t\t\tattributes,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getCurrentSystemState(\n\t\toptions?: SuiClientTypes.GetCurrentSystemStateOptions,\n\t): Promise<SuiClientTypes.GetCurrentSystemStateResponse> {\n\t\tconst response = await this.#client.ledgerService.getEpoch(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'system_state.version',\n\t\t\t\t\t\t'system_state.epoch',\n\t\t\t\t\t\t'system_state.protocol_version',\n\t\t\t\t\t\t'system_state.reference_gas_price',\n\t\t\t\t\t\t'system_state.epoch_start_timestamp_ms',\n\t\t\t\t\t\t'system_state.safe_mode',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_computation_rewards',\n\t\t\t\t\t\t'system_state.safe_mode_storage_rebates',\n\t\t\t\t\t\t'system_state.safe_mode_non_refundable_storage_fee',\n\t\t\t\t\t\t'system_state.parameters',\n\t\t\t\t\t\t'system_state.storage_fund',\n\t\t\t\t\t\t'system_state.stake_subsidy',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t},\n\t\t\t{ abort: options?.signal },\n\t\t);\n\n\t\tconst epoch = response.response.epoch;\n\t\tconst systemState = epoch?.systemState;\n\t\tif (!systemState) {\n\t\t\tthrow new Error('System state not found in response');\n\t\t}\n\n\t\tconst startMs = epoch?.start?.seconds\n\t\t\t? Number(epoch.start.seconds) * 1000 + Math.floor((epoch.start.nanos || 0) / 1_000_000)\n\t\t\t: systemState.epochStartTimestampMs\n\t\t\t\t? Number(systemState.epochStartTimestampMs)\n\t\t\t\t: (null as never);\n\n\t\treturn {\n\t\t\tsystemState: {\n\t\t\t\tsystemStateVersion: systemState.version?.toString() ?? (null as never),\n\t\t\t\tepoch: systemState.epoch?.toString() ?? (null as never),\n\t\t\t\tprotocolVersion: systemState.protocolVersion?.toString() ?? (null as never),\n\t\t\t\treferenceGasPrice: systemState.referenceGasPrice?.toString() ?? (null as never),\n\t\t\t\tepochStartTimestampMs: startMs.toString(),\n\t\t\t\tsafeMode: systemState.safeMode ?? false,\n\t\t\t\tsafeModeStorageRewards: systemState.safeModeStorageRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeComputationRewards:\n\t\t\t\t\tsystemState.safeModeComputationRewards?.toString() ?? (null as never),\n\t\t\t\tsafeModeStorageRebates: systemState.safeModeStorageRebates?.toString() ?? (null as never),\n\t\t\t\tsafeModeNonRefundableStorageFee:\n\t\t\t\t\tsystemState.safeModeNonRefundableStorageFee?.toString() ?? (null as never),\n\t\t\t\tparameters: {\n\t\t\t\t\tepochDurationMs: systemState.parameters?.epochDurationMs?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyStartEpoch:\n\t\t\t\t\t\tsystemState.parameters?.stakeSubsidyStartEpoch?.toString() ?? (null as never),\n\t\t\t\t\tmaxValidatorCount:\n\t\t\t\t\t\tsystemState.parameters?.maxValidatorCount?.toString() ?? (null as never),\n\t\t\t\t\tminValidatorJoiningStake:\n\t\t\t\t\t\tsystemState.parameters?.minValidatorJoiningStake?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeThreshold:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeThreshold?.toString() ?? (null as never),\n\t\t\t\t\tvalidatorLowStakeGracePeriod:\n\t\t\t\t\t\tsystemState.parameters?.validatorLowStakeGracePeriod?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstorageFund: {\n\t\t\t\t\ttotalObjectStorageRebates:\n\t\t\t\t\t\tsystemState.storageFund?.totalObjectStorageRebates?.toString() ?? (null as never),\n\t\t\t\t\tnonRefundableBalance:\n\t\t\t\t\t\tsystemState.storageFund?.nonRefundableBalance?.toString() ?? (null as never),\n\t\t\t\t},\n\t\t\t\tstakeSubsidy: {\n\t\t\t\t\tbalance: systemState.stakeSubsidy?.balance?.toString() ?? (null as never),\n\t\t\t\t\tdistributionCounter:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.distributionCounter?.toString() ?? (null as never),\n\t\t\t\t\tcurrentDistributionAmount:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.currentDistributionAmount?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyPeriodLength:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyPeriodLength?.toString() ?? (null as never),\n\t\t\t\t\tstakeSubsidyDecreaseRate:\n\t\t\t\t\t\tsystemState.stakeSubsidy?.stakeSubsidyDecreaseRate ?? (null as never),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync listDynamicFields(\n\t\toptions: SuiClientTypes.ListDynamicFieldsOptions,\n\t): Promise<SuiClientTypes.ListDynamicFieldsResponse> {\n\t\treturn this.#client.listDynamicFields(options);\n\t}\n\n\tasync verifyZkLoginSignature(\n\t\toptions: SuiClientTypes.VerifyZkLoginSignatureOptions,\n\t): Promise<SuiClientTypes.ZkLoginVerifyResponse> {\n\t\tconst messageBytes = fromBase64(options.bytes);\n\n\t\t// For PersonalMessage, the server expects BCS-encoded vector<u8>\n\t\t// For TransactionData, the server expects the raw BCS-encoded TransactionData as-is\n\t\tconst messageValue =\n\t\t\toptions.intentScope === 'PersonalMessage'\n\t\t\t\t? bcs.byteVector().serialize(messageBytes).toBytes()\n\t\t\t\t: messageBytes;\n\n\t\tconst { response } = await this.#client.signatureVerificationService.verifySignature(\n\t\t\t{\n\t\t\t\tmessage: {\n\t\t\t\t\tname: options.intentScope,\n\t\t\t\t\tvalue: messageValue,\n\t\t\t\t},\n\t\t\t\tsignature: {\n\t\t\t\t\tbcs: {\n\t\t\t\t\t\tvalue: fromBase64(options.signature),\n\t\t\t\t\t},\n\t\t\t\t\tsignature: {\n\t\t\t\t\t\toneofKind: undefined,\n\t\t\t\t\t},\n\t\t\t\t},\n\t\t\t\taddress: options.address,\n\t\t\t\tjwks: [],\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\treturn {\n\t\t\tsuccess: response.isValid ?? false,\n\t\t\terrors: response.reason ? [response.reason] : [],\n\t\t};\n\t}\n\n\tasync defaultNameServiceName(\n\t\toptions: SuiClientTypes.DefaultNameServiceNameOptions,\n\t): Promise<SuiClientTypes.DefaultNameServiceNameResponse> {\n\t\tconst name =\n\t\t\t(\n\t\t\t\tawait this.#client.nameService.reverseLookupName(\n\t\t\t\t\t{\n\t\t\t\t\t\taddress: options.address,\n\t\t\t\t\t},\n\t\t\t\t\t{ abort: options.signal },\n\t\t\t\t)\n\t\t\t).response.record?.name ?? null;\n\t\treturn {\n\t\t\tdata: {\n\t\t\t\tname,\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getMoveFunction(\n\t\toptions: SuiClientTypes.GetMoveFunctionOptions,\n\t): Promise<SuiClientTypes.GetMoveFunctionResponse> {\n\t\tconst resolvedPackageId = (\n\t\t\tawait this.mvr.resolvePackage({ package: options.packageId, signal: options.signal })\n\t\t).package;\n\t\tconst { response } = await this.#client.movePackageService.getFunction(\n\t\t\t{\n\t\t\t\tpackageId: resolvedPackageId,\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: options.name,\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tlet visibility: 'public' | 'private' | 'friend' | 'unknown' = 'unknown';\n\n\t\tswitch (response.function?.visibility) {\n\t\t\tcase FunctionDescriptor_Visibility.PUBLIC:\n\t\t\t\tvisibility = 'public';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.PRIVATE:\n\t\t\t\tvisibility = 'private';\n\t\t\t\tbreak;\n\t\t\tcase FunctionDescriptor_Visibility.FRIEND:\n\t\t\t\tvisibility = 'friend';\n\t\t\t\tbreak;\n\t\t}\n\n\t\treturn {\n\t\t\tfunction: {\n\t\t\t\tpackageId: normalizeSuiAddress(resolvedPackageId),\n\t\t\t\tmoduleName: options.moduleName,\n\t\t\t\tname: response.function?.name!,\n\t\t\t\tvisibility,\n\t\t\t\tisEntry: response.function?.isEntry ?? false,\n\t\t\t\ttypeParameters:\n\t\t\t\t\tresponse.function?.typeParameters?.map(({ constraints }) => ({\n\t\t\t\t\t\tisPhantom: false,\n\t\t\t\t\t\tconstraints:\n\t\t\t\t\t\t\tconstraints.map((constraint) => {\n\t\t\t\t\t\t\t\tswitch (constraint) {\n\t\t\t\t\t\t\t\t\tcase Ability.COPY:\n\t\t\t\t\t\t\t\t\t\treturn 'copy';\n\t\t\t\t\t\t\t\t\tcase Ability.DROP:\n\t\t\t\t\t\t\t\t\t\treturn 'drop';\n\t\t\t\t\t\t\t\t\tcase Ability.STORE:\n\t\t\t\t\t\t\t\t\t\treturn 'store';\n\t\t\t\t\t\t\t\t\tcase Ability.KEY:\n\t\t\t\t\t\t\t\t\t\treturn 'key';\n\t\t\t\t\t\t\t\t\tdefault:\n\t\t\t\t\t\t\t\t\t\treturn 'unknown';\n\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t}) ?? [],\n\t\t\t\t\t})) ?? [],\n\t\t\t\tparameters:\n\t\t\t\t\tresponse.function?.parameters?.map((param) => parseNormalizedSuiMoveType(param)) ?? [],\n\t\t\t\treturns: response.function?.returns?.map((ret) => parseNormalizedSuiMoveType(ret)) ?? [],\n\t\t\t},\n\t\t};\n\t}\n\n\tasync getChainIdentifier(\n\t\toptions?: SuiClientTypes.GetChainIdentifierOptions,\n\t): Promise<SuiClientTypes.GetChainIdentifierResponse> {\n\t\t// The result is cached and shared across callers, so the underlying request must\n\t\t// not carry any single caller's signal. Isolate cancellation per-caller instead.\n\t\treturn raceSignal(\n\t\t\tPromise.resolve(\n\t\t\t\tthis.cache.read(['chainIdentifier'], async () => {\n\t\t\t\t\tconst { response } = await this.#client.ledgerService.getServiceInfo({});\n\t\t\t\t\tif (!response.chainId) {\n\t\t\t\t\t\tthrow new Error('Chain identifier not found in service info');\n\t\t\t\t\t}\n\t\t\t\t\treturn {\n\t\t\t\t\t\tchainIdentifier: response.chainId,\n\t\t\t\t\t};\n\t\t\t\t}),\n\t\t\t),\n\t\t\toptions?.signal,\n\t\t);\n\t}\n\n\tresolveTransactionPlugin() {\n\t\tconst client = this.#client;\n\t\treturn async function resolveTransactionData(\n\t\t\ttransactionData: TransactionDataBuilder,\n\t\t\toptions: BuildTransactionOptions,\n\t\t\tnext: () => Promise<void>,\n\t\t) {\n\t\t\tconst snapshot = transactionData.snapshot();\n\t\t\t// If sender is not set, use a dummy address for resolution purposes\n\t\t\t// The resolved transaction will not include the sender if it wasn't set originally\n\t\t\tif (!snapshot.sender) {\n\t\t\t\tsnapshot.sender = '0x0000000000000000000000000000000000000000000000000000000000000000';\n\t\t\t}\n\t\t\tconst grpcTransaction = transactionDataToGrpcTransaction(snapshot);\n\n\t\t\tlet response;\n\t\t\ttry {\n\t\t\t\tconst result = await client.transactionExecutionService.simulateTransaction({\n\t\t\t\t\ttransaction: grpcTransaction,\n\t\t\t\t\tdoGasSelection:\n\t\t\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null),\n\t\t\t\t\t// Kind-only txns are never executed directly and do not have sender, so skip validation checks.\n\t\t\t\t\tchecks: options.onlyTransactionKind\n\t\t\t\t\t\t? SimulateTransactionRequest_TransactionChecks.DISABLED\n\t\t\t\t\t\t: SimulateTransactionRequest_TransactionChecks.ENABLED,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: [\n\t\t\t\t\t\t\t'transaction.transaction.sender',\n\t\t\t\t\t\t\t'transaction.transaction.gas_payment',\n\t\t\t\t\t\t\t'transaction.transaction.expiration',\n\t\t\t\t\t\t\t'transaction.transaction.kind',\n\t\t\t\t\t\t\t'transaction.effects.status',\n\t\t\t\t\t\t],\n\t\t\t\t\t},\n\t\t\t\t});\n\t\t\t\tresponse = result.response;\n\t\t\t} catch (error) {\n\t\t\t\t// https://github.com/timostamm/protobuf-ts/pull/739\n\t\t\t\tif (error instanceof Error && error.message) {\n\t\t\t\t\tthrow new SimulationError(decodeURIComponent(error.message), { cause: error });\n\t\t\t\t}\n\t\t\t\tthrow error;\n\t\t\t}\n\n\t\t\tif (\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\tresponse.transaction?.effects?.status &&\n\t\t\t\t!response.transaction.effects.status.success\n\t\t\t) {\n\t\t\t\tconst executionError = response.transaction.effects.status.error\n\t\t\t\t\t? parseGrpcExecutionError(response.transaction.effects.status.error)\n\t\t\t\t\t: undefined;\n\t\t\t\tconst errorMessage = executionError?.message ?? 'Transaction failed';\n\t\t\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\t\t\texecutionError,\n\t\t\t\t});\n\t\t\t}\n\n\t\t\tif (!response.transaction?.transaction) {\n\t\t\t\tthrow new Error('simulateTransaction did not return resolved transaction data');\n\t\t\t}\n\n\t\t\tapplyGrpcResolvedTransaction(transactionData, response.transaction.transaction, options);\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction transactionReadMaskPaths(\n\tinclude: SuiClientTypes.TransactionInclude | undefined,\n\tprefix = '',\n) {\n\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\tif (include?.transaction) {\n\t\tpaths.push(\n\t\t\t'transaction.sender',\n\t\t\t'transaction.gas_payment',\n\t\t\t'transaction.expiration',\n\t\t\t'transaction.kind',\n\t\t);\n\t}\n\tif (include?.bcs) {\n\t\tpaths.push('transaction.bcs');\n\t}\n\tif (include?.balanceChanges) {\n\t\tpaths.push('balance_changes');\n\t}\n\tif (include?.effects) {\n\t\tpaths.push('effects');\n\t}\n\tif (include?.events) {\n\t\tpaths.push('events');\n\t}\n\tif (include?.objectTypes) {\n\t\tpaths.push('effects.changed_objects.object_type');\n\t\tpaths.push('effects.changed_objects.object_id');\n\t}\n\n\treturn prefix ? paths.map((path) => prefix + path) : paths;\n}\n\nfunction withProtoJson<Result>(\n\tresult: Result,\n\tinclude: ({ protoJson?: boolean } & object) | undefined,\n\tgetProtoJson: () => unknown,\n): Result {\n\tif (!include?.protoJson) {\n\t\treturn result;\n\t}\n\n\treturn {\n\t\t...result,\n\t\tprotoJson: getProtoJson(),\n\t};\n}\n\nfunction mapDisplayProto(\n\tinclude: boolean | undefined,\n\tdisplay: { output?: Value; errors?: Value } | undefined,\n): SuiClientTypes.Display | null | undefined {\n\tif (!include) return undefined;\n\tif (display === undefined) return null;\n\treturn {\n\t\toutput:\n\t\t\tdisplay.output !== undefined\n\t\t\t\t? (Value.toJson(display.output) as Record<string, unknown> | null)\n\t\t\t\t: null,\n\t\terrors:\n\t\t\tdisplay.errors !== undefined\n\t\t\t\t? (Value.toJson(display.errors) as Record<string, string> | null)\n\t\t\t\t: null,\n\t};\n}\n\nfunction mapOwner(owner: Owner | null | undefined): SuiClientTypes.ObjectOwner | null {\n\tif (!owner) {\n\t\treturn null;\n\t}\n\tif (owner.kind === Owner_OwnerKind.IMMUTABLE) {\n\t\treturn {\n\t\t\t$kind: 'Immutable',\n\t\t\tImmutable: true,\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.ADDRESS) {\n\t\treturn {\n\t\t\tAddressOwner: owner.address!,\n\t\t\t$kind: 'AddressOwner',\n\t\t};\n\t}\n\tif (owner.kind === Owner_OwnerKind.OBJECT) {\n\t\treturn {\n\t\t\t$kind: 'ObjectOwner',\n\t\t\tObjectOwner: owner.address!,\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.SHARED) {\n\t\treturn {\n\t\t\t$kind: 'Shared',\n\t\t\tShared: {\n\t\t\t\tinitialSharedVersion: owner.version?.toString()!,\n\t\t\t},\n\t\t};\n\t}\n\n\tif (owner.kind === Owner_OwnerKind.CONSENSUS_ADDRESS) {\n\t\treturn {\n\t\t\t$kind: 'ConsensusAddressOwner',\n\t\t\tConsensusAddressOwner: {\n\t\t\t\tstartVersion: owner.version?.toString()!,\n\t\t\t\towner: owner.address!,\n\t\t\t},\n\t\t};\n\t}\n\n\tthrow new Error(\n\t\t`Unknown owner kind ${JSON.stringify(owner, (_k, v) => (typeof v === 'bigint' ? v.toString() : v))}`,\n\t);\n}\n\nfunction parseGrpcExecutionError(error: GrpcExecutionError): SuiClientTypes.ExecutionError {\n\tconst message = error.description ?? 'Unknown error';\n\tconst command = error.command != null ? Number(error.command) : undefined;\n\tconst details = error.errorDetails;\n\n\tswitch (details?.oneofKind) {\n\t\tcase 'abort': {\n\t\t\tconst abort = details.abort;\n\t\t\tconst cleverError = abort.cleverError;\n\t\t\treturn {\n\t\t\t\t$kind: 'MoveAbort',\n\t\t\t\tmessage: formatMoveAbortMessage({\n\t\t\t\t\tcommand,\n\t\t\t\t\tlocation: abort.location,\n\t\t\t\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\t\t\t\tcleverError: cleverError\n\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\tlineNumber:\n\t\t\t\t\t\t\t\t\tcleverError.lineNumber != null ? Number(cleverError.lineNumber) : undefined,\n\t\t\t\t\t\t\t\tconstantName: cleverError.constantName,\n\t\t\t\t\t\t\t\tvalue:\n\t\t\t\t\t\t\t\t\tcleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t\t\t\t? cleverError.value.rendered\n\t\t\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t: undefined,\n\t\t\t\t}),\n\t\t\t\tcommand,\n\t\t\t\tMoveAbort: parseMoveAbort(abort),\n\t\t\t};\n\t\t}\n\n\t\tcase 'sizeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'SizeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tSizeError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tsize: Number(details.sizeError.size ?? 0n),\n\t\t\t\t\tmaxSize: Number(details.sizeError.maxSize ?? 0n),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'commandArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CommandArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCommandArgumentError: {\n\t\t\t\t\targument: details.commandArgumentError.argument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.commandArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'typeArgumentError':\n\t\t\treturn {\n\t\t\t\t$kind: 'TypeArgumentError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tTypeArgumentError: {\n\t\t\t\t\ttypeArgument: details.typeArgumentError.typeArgument ?? 0,\n\t\t\t\t\tname: mapErrorName(details.typeArgumentError.kind),\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'packageUpgradeError':\n\t\t\treturn {\n\t\t\t\t$kind: 'PackageUpgradeError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tPackageUpgradeError: {\n\t\t\t\t\tname: mapErrorName(details.packageUpgradeError.kind),\n\t\t\t\t\tpackageId: details.packageUpgradeError.packageId,\n\t\t\t\t\tdigest: details.packageUpgradeError.digest,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'indexError':\n\t\t\treturn {\n\t\t\t\t$kind: 'IndexError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tIndexError: {\n\t\t\t\t\tindex: details.indexError.index,\n\t\t\t\t\tsubresult: details.indexError.subresult,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'coinDenyListError':\n\t\t\treturn {\n\t\t\t\t$kind: 'CoinDenyListError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCoinDenyListError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tcoinType: details.coinDenyListError.coinType!,\n\t\t\t\t\taddress: details.coinDenyListError.address,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'congestedObjects':\n\t\t\treturn {\n\t\t\t\t$kind: 'CongestedObjects',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tCongestedObjects: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjects: details.congestedObjects.objects,\n\t\t\t\t},\n\t\t\t};\n\n\t\tcase 'objectId':\n\t\t\treturn {\n\t\t\t\t$kind: 'ObjectIdError',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tObjectIdError: {\n\t\t\t\t\tname: mapErrorName(error.kind),\n\t\t\t\t\tobjectId: details.objectId,\n\t\t\t\t},\n\t\t\t};\n\n\t\tdefault:\n\t\t\treturn {\n\t\t\t\t$kind: 'Unknown',\n\t\t\t\tmessage,\n\t\t\t\tcommand,\n\t\t\t\tUnknown: null,\n\t\t\t};\n\t}\n}\n\nfunction parseMoveAbort(abort: GrpcMoveAbort): SuiClientTypes.MoveAbort {\n\treturn {\n\t\tabortCode: String(abort.abortCode ?? 0n),\n\t\tlocation: { ...abort.location },\n\t\tcleverError: abort.cleverError\n\t\t\t? {\n\t\t\t\t\terrorCode:\n\t\t\t\t\t\tabort.cleverError.errorCode != null ? Number(abort.cleverError.errorCode) : undefined,\n\t\t\t\t\tlineNumber:\n\t\t\t\t\t\tabort.cleverError.lineNumber != null ? Number(abort.cleverError.lineNumber) : undefined,\n\t\t\t\t\tconstantName: abort.cleverError.constantName,\n\t\t\t\t\tconstantType: abort.cleverError.constantType,\n\t\t\t\t\tvalue:\n\t\t\t\t\t\tabort.cleverError.value?.oneofKind === 'rendered'\n\t\t\t\t\t\t\t? abort.cleverError.value.rendered\n\t\t\t\t\t\t\t: abort.cleverError.value?.oneofKind === 'raw'\n\t\t\t\t\t\t\t\t? toBase64(abort.cleverError.value.raw)\n\t\t\t\t\t\t\t\t: undefined,\n\t\t\t\t}\n\t\t\t: undefined,\n\t};\n}\n\nfunction mapErrorName(\n\tkind:\n\t\t| ExecutionError_ExecutionErrorKind\n\t\t| CommandArgumentError_CommandArgumentErrorKind\n\t\t| TypeArgumentError_TypeArgumentErrorKind\n\t\t| PackageUpgradeError_PackageUpgradeErrorKind\n\t\t| undefined,\n): string {\n\tif (kind == null) {\n\t\treturn 'Unknown';\n\t}\n\tconst name = CommandArgumentError_CommandArgumentErrorKind[kind];\n\tif (!name || name.endsWith('_UNKNOWN')) {\n\t\treturn 'Unknown';\n\t}\n\treturn name\n\t\t.split('_')\n\t\t.map((word) => word.charAt(0) + word.slice(1).toLowerCase())\n\t\t.join('');\n}\n\nfunction mapIdOperation(\n\toperation: ChangedObject_IdOperation | undefined,\n): null | 'Created' | 'Deleted' | 'Unknown' | 'None' {\n\tif (operation == null) {\n\t\treturn null;\n\t}\n\tswitch (operation) {\n\t\tcase ChangedObject_IdOperation.CREATED:\n\t\t\treturn 'Created';\n\t\tcase ChangedObject_IdOperation.DELETED:\n\t\t\treturn 'Deleted';\n\t\tcase ChangedObject_IdOperation.NONE:\n\t\tcase ChangedObject_IdOperation.ID_OPERATION_UNKNOWN:\n\t\t\treturn 'None';\n\t\tdefault:\n\t\t\toperation satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapInputObjectState(\n\tstate: ChangedObject_InputObjectState | undefined,\n): null | 'Exists' | 'DoesNotExist' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_InputObjectState.EXISTS:\n\t\t\treturn 'Exists';\n\t\tcase ChangedObject_InputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_InputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapOutputObjectState(\n\tstate: ChangedObject_OutputObjectState | undefined,\n): null | 'ObjectWrite' | 'PackageWrite' | 'DoesNotExist' | 'AccumulatorWriteV1' | 'Unknown' {\n\tif (state == null) {\n\t\treturn null;\n\t}\n\tswitch (state) {\n\t\tcase ChangedObject_OutputObjectState.OBJECT_WRITE:\n\t\t\treturn 'ObjectWrite';\n\t\tcase ChangedObject_OutputObjectState.PACKAGE_WRITE:\n\t\t\treturn 'PackageWrite';\n\t\tcase ChangedObject_OutputObjectState.DOES_NOT_EXIST:\n\t\t\treturn 'DoesNotExist';\n\t\tcase ChangedObject_OutputObjectState.ACCUMULATOR_WRITE:\n\t\t\treturn 'AccumulatorWriteV1';\n\t\tcase ChangedObject_OutputObjectState.UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tdefault:\n\t\t\tstate satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nfunction mapUnchangedConsensusObjectKind(\n\tkind: UnchangedConsensusObject_UnchangedConsensusObjectKind | undefined,\n): null | SuiClientTypes.UnchangedConsensusObject['kind'] {\n\tif (kind == null) {\n\t\treturn null;\n\t}\n\tswitch (kind) {\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.UNCHANGED_CONSENSUS_OBJECT_KIND_UNKNOWN:\n\t\t\treturn 'Unknown';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_ONLY_ROOT:\n\t\t\treturn 'ReadOnlyRoot';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.MUTATE_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'MutateConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.READ_CONSENSUS_STREAM_ENDED:\n\t\t\treturn 'ReadConsensusStreamEnded';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.CANCELED:\n\t\t\treturn 'Cancelled';\n\t\tcase UnchangedConsensusObject_UnchangedConsensusObjectKind.PER_EPOCH_CONFIG:\n\t\t\treturn 'PerEpochConfig';\n\t\tdefault:\n\t\t\tkind satisfies never;\n\t\t\treturn 'Unknown';\n\t}\n}\n\nexport function parseTransactionEffects({\n\teffects,\n}: {\n\teffects: TransactionEffects | undefined;\n}): SuiClientTypes.TransactionEffects | null {\n\tif (!effects) {\n\t\treturn null;\n\t}\n\n\tconst changedObjects = effects.changedObjects.map((change): SuiClientTypes.ChangedObject => {\n\t\treturn {\n\t\t\tobjectId: change.objectId!,\n\t\t\tinputState: mapInputObjectState(change.inputState)!,\n\t\t\tinputVersion: change.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: change.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(change.inputOwner),\n\t\t\toutputState: mapOutputObjectState(change.outputState)!,\n\t\t\toutputVersion: change.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: change.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(change.outputOwner),\n\t\t\tidOperation: mapIdOperation(change.idOperation)!,\n\t\t};\n\t});\n\n\treturn {\n\t\tbcs: effects.bcs?.value!,\n\n\t\tversion: 2,\n\t\tstatus: effects.status?.success\n\t\t\t? {\n\t\t\t\t\tsuccess: true,\n\t\t\t\t\terror: null,\n\t\t\t\t}\n\t\t\t: {\n\t\t\t\t\tsuccess: false,\n\t\t\t\t\terror: parseGrpcExecutionError(effects.status!.error!),\n\t\t\t\t},\n\t\tgasUsed: {\n\t\t\tcomputationCost: effects.gasUsed?.computationCost?.toString()!,\n\t\t\tstorageCost: effects.gasUsed?.storageCost?.toString()!,\n\t\t\tstorageRebate: effects.gasUsed?.storageRebate?.toString()!,\n\t\t\tnonRefundableStorageFee: effects.gasUsed?.nonRefundableStorageFee?.toString()!,\n\t\t},\n\t\ttransactionDigest: effects.transactionDigest!,\n\t\tgasObject: {\n\t\t\tobjectId: effects.gasObject?.objectId!,\n\t\t\tinputState: mapInputObjectState(effects.gasObject?.inputState)!,\n\t\t\tinputVersion: effects.gasObject?.inputVersion?.toString() ?? null,\n\t\t\tinputDigest: effects.gasObject?.inputDigest ?? null,\n\t\t\tinputOwner: mapOwner(effects.gasObject?.inputOwner),\n\t\t\toutputState: mapOutputObjectState(effects.gasObject?.outputState)!,\n\t\t\toutputVersion: effects.gasObject?.outputVersion?.toString() ?? null,\n\t\t\toutputDigest: effects.gasObject?.outputDigest ?? null,\n\t\t\toutputOwner: mapOwner(effects.gasObject?.outputOwner),\n\t\t\tidOperation: mapIdOperation(effects.gasObject?.idOperation)!,\n\t\t},\n\t\teventsDigest: effects.eventsDigest ?? null,\n\t\tdependencies: effects.dependencies,\n\t\tlamportVersion: effects.lamportVersion?.toString() ?? null,\n\t\tchangedObjects,\n\t\tunchangedConsensusObjects: effects.unchangedConsensusObjects.map(\n\t\t\t(object): SuiClientTypes.UnchangedConsensusObject => {\n\t\t\t\treturn {\n\t\t\t\t\tkind: mapUnchangedConsensusObjectKind(object.kind)!,\n\t\t\t\t\t// TODO: we are inconsistent about id vs objectId\n\t\t\t\t\tobjectId: object.objectId!,\n\t\t\t\t\tversion: object.version?.toString() ?? null,\n\t\t\t\t\tdigest: object.digest ?? null,\n\t\t\t\t};\n\t\t\t},\n\t\t),\n\t\tauxiliaryDataDigest: effects.auxiliaryDataDigest ?? null,\n\t};\n}\n\nexport function parseGrpcTransactionResponse<\n\tInclude extends SuiClientTypes.TransactionInclude = {},\n>(\n\ttransaction: ExecutedTransaction,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.TransactionInclude;\n\t},\n): SuiClientTypes.TransactionResult<Include> {\n\tconst include = options?.include;\n\tconst objectTypes: Record<string, string> = {};\n\tif (include?.objectTypes) {\n\t\ttransaction.effects?.changedObjects?.forEach((change) => {\n\t\t\tif (change.objectId && change.objectType) {\n\t\t\t\tobjectTypes[change.objectId] = change.objectType;\n\t\t\t}\n\t\t});\n\t}\n\n\tlet transactionData: SuiClientTypes.TransactionData | undefined;\n\tif (include?.transaction) {\n\t\tconst tx = transaction.transaction;\n\n\t\tif (!tx) {\n\t\t\tthrow new Error('Transaction data is required but missing from gRPC response');\n\t\t}\n\n\t\tconst resolved = grpcTransactionToTransactionData(tx);\n\t\ttransactionData = {\n\t\t\tgasData: resolved.gasData,\n\t\t\tsender: resolved.sender,\n\t\t\texpiration: resolved.expiration,\n\t\t\tcommands: resolved.commands,\n\t\t\tinputs: resolved.inputs,\n\t\t\tversion: resolved.version,\n\t\t};\n\t}\n\n\tconst bcsBytes = include?.bcs ? transaction.transaction?.bcs?.value : undefined;\n\n\tconst effects = include?.effects\n\t\t? parseTransactionEffects({\n\t\t\t\teffects: transaction.effects,\n\t\t\t})\n\t\t: undefined;\n\n\tconst status: SuiClientTypes.ExecutionStatus = transaction.effects?.status?.success\n\t\t? { success: true, error: null }\n\t\t: {\n\t\t\t\tsuccess: false,\n\t\t\t\terror: transaction.effects?.status?.error\n\t\t\t\t\t? parseGrpcExecutionError(transaction.effects.status.error)\n\t\t\t\t\t: {\n\t\t\t\t\t\t\t$kind: 'Unknown',\n\t\t\t\t\t\t\tmessage: 'Transaction failed',\n\t\t\t\t\t\t\tUnknown: null,\n\t\t\t\t\t\t},\n\t\t\t};\n\n\tconst result: SuiClientTypes.Transaction<Include> = {\n\t\tdigest: transaction.digest!,\n\t\tepoch: transaction.effects?.epoch?.toString() ?? null,\n\t\tstatus,\n\t\teffects: effects as SuiClientTypes.Transaction<Include>['effects'],\n\t\tobjectTypes: (include?.objectTypes\n\t\t\t? objectTypes\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['objectTypes'],\n\t\ttransaction: transactionData as SuiClientTypes.Transaction<Include>['transaction'],\n\t\tbcs: bcsBytes as SuiClientTypes.Transaction<Include>['bcs'],\n\t\tsignatures: transaction.signatures?.map((sig) => toBase64(sig.bcs?.value!)) ?? [],\n\t\tbalanceChanges: (include?.balanceChanges\n\t\t\t? (transaction.balanceChanges?.map((change) => ({\n\t\t\t\t\tcoinType: change.coinType!,\n\t\t\t\t\taddress: change.address!,\n\t\t\t\t\tamount: change.amount!,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['balanceChanges'],\n\t\tevents: (include?.events\n\t\t\t? (transaction.events?.events.map((event) => ({\n\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\teventType: event.eventType!,\n\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t})) ?? [])\n\t\t\t: undefined) as SuiClientTypes.Transaction<Include>['events'],\n\t};\n\n\treturn status.success\n\t\t? {\n\t\t\t\t$kind: 'Transaction',\n\t\t\t\tTransaction: result,\n\t\t\t}\n\t\t: {\n\t\t\t\t$kind: 'FailedTransaction',\n\t\t\t\tFailedTransaction: result,\n\t\t\t};\n}\n\nexport function parseGrpcSimulateTransactionResponse<\n\tInclude extends SuiClientTypes.SimulateTransactionInclude = {},\n>(\n\tresponse: SimulateTransactionResponse,\n\toptions?: {\n\t\tinclude?: Include & SuiClientTypes.SimulateTransactionInclude;\n\t},\n): SuiClientTypes.SimulateTransactionResult<Include> {\n\tconst include = options?.include;\n\tconst transactionResult = parseGrpcTransactionResponse(response.transaction!, { include });\n\n\tconst commandResults =\n\t\tinclude?.commandResults && response.commandOutputs\n\t\t\t? response.commandOutputs.map((output) => ({\n\t\t\t\t\treturnValues: (output.returnValues ?? []).map((rv) => ({\n\t\t\t\t\t\tbcs: rv.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t\tmutatedReferences: (output.mutatedByRef ?? []).map((mr) => ({\n\t\t\t\t\t\tbcs: mr.value?.value ?? null,\n\t\t\t\t\t})),\n\t\t\t\t}))\n\t\t\t: undefined;\n\n\tif (transactionResult.$kind === 'Transaction') {\n\t\treturn {\n\t\t\t$kind: 'Transaction',\n\t\t\tTransaction: transactionResult.Transaction,\n\t\t\tcommandResults:\n\t\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t\t};\n\t}\n\n\treturn {\n\t\t$kind: 'FailedTransaction',\n\t\tFailedTransaction: transactionResult.FailedTransaction,\n\t\tcommandResults:\n\t\t\tcommandResults as SuiClientTypes.SimulateTransactionResult<Include>['commandResults'],\n\t};\n}\n\nfunction parseNormalizedSuiMoveType(type: OpenSignature): SuiClientTypes.OpenSignature {\n\tlet reference: 'mutable' | 'immutable' | null = null;\n\n\tif (type.reference === OpenSignature_Reference.IMMUTABLE) {\n\t\treference = 'immutable';\n\t} else if (type.reference === OpenSignature_Reference.MUTABLE) {\n\t\treference = 'mutable';\n\t}\n\n\treturn {\n\t\treference,\n\t\tbody: parseNormalizedSuiMoveTypeBody(type.body!),\n\t};\n}\n\nfunction parseNormalizedSuiMoveTypeBody(type: OpenSignatureBody): SuiClientTypes.OpenSignatureBody {\n\tswitch (type.type) {\n\t\tcase OpenSignatureBody_Type.TYPE_UNKNOWN:\n\t\t\treturn { $kind: 'unknown' };\n\t\tcase OpenSignatureBody_Type.ADDRESS:\n\t\t\treturn { $kind: 'address' };\n\t\tcase OpenSignatureBody_Type.BOOL:\n\t\t\treturn { $kind: 'bool' };\n\t\tcase OpenSignatureBody_Type.U8:\n\t\t\treturn { $kind: 'u8' };\n\t\tcase OpenSignatureBody_Type.U16:\n\t\t\treturn { $kind: 'u16' };\n\t\tcase OpenSignatureBody_Type.U32:\n\t\t\treturn { $kind: 'u32' };\n\t\tcase OpenSignatureBody_Type.U64:\n\t\t\treturn { $kind: 'u64' };\n\t\tcase OpenSignatureBody_Type.U128:\n\t\t\treturn { $kind: 'u128' };\n\t\tcase OpenSignatureBody_Type.U256:\n\t\t\treturn { $kind: 'u256' };\n\t\tcase OpenSignatureBody_Type.VECTOR:\n\t\t\treturn {\n\t\t\t\t$kind: 'vector',\n\t\t\t\tvector: parseNormalizedSuiMoveTypeBody(type.typeParameterInstantiation[0]),\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.DATATYPE:\n\t\t\treturn {\n\t\t\t\t$kind: 'datatype',\n\t\t\t\tdatatype: {\n\t\t\t\t\ttypeName: type.typeName!,\n\t\t\t\t\ttypeParameters: type.typeParameterInstantiation.map((t) =>\n\t\t\t\t\t\tparseNormalizedSuiMoveTypeBody(t),\n\t\t\t\t\t),\n\t\t\t\t},\n\t\t\t};\n\t\tcase OpenSignatureBody_Type.TYPE_PARAMETER:\n\t\t\treturn {\n\t\t\t\t$kind: 'typeParameter',\n\t\t\t\tindex: type.typeParameter!,\n\t\t\t};\n\t\tdefault:\n\t\t\treturn { $kind: 'unknown' };\n\t}\n}\n"],"mappings":"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"}
|
package/dist/grpc/index.d.mts
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { GrpcCoreClient, GrpcCoreClientOptions } from "./core.mjs";
|
|
2
|
-
import { SuiGrpcClient, SuiGrpcClientOptions, isSuiGrpcClient } from "./client.mjs";
|
|
1
|
+
import { GrpcCoreClient, GrpcCoreClientOptions, parseGrpcSimulateTransactionResponse, parseGrpcTransactionResponse } from "./core.mjs";
|
|
2
|
+
import { GrpcExecuteTransactionOptions, GrpcGetTransactionOptions, GrpcSignAndExecuteTransactionOptions, GrpcSimulateTransactionInclude, GrpcSimulateTransactionOptions, GrpcSimulateTransactionProtoJson, GrpcSimulateTransactionResult, GrpcTransactionInclude, GrpcTransactionProtoJson, GrpcTransactionResult, GrpcWaitForTransactionOptions, SuiGrpcClient, SuiGrpcClientOptions, isSuiGrpcClient } from "./client.mjs";
|
|
3
3
|
import { types_d_exports } from "./proto/types.mjs";
|
|
4
4
|
import { GrpcWebFetchTransport, GrpcWebOptions } from "@protobuf-ts/grpcweb-transport";
|
|
5
5
|
import { RpcTransport } from "@protobuf-ts/runtime-rpc";
|
|
6
|
-
export { GrpcCoreClient, type GrpcCoreClientOptions, types_d_exports as GrpcTypes, GrpcWebFetchTransport, type GrpcWebOptions, type RpcTransport, SuiGrpcClient, type SuiGrpcClientOptions, isSuiGrpcClient };
|
|
6
|
+
export { GrpcCoreClient, type GrpcCoreClientOptions, type GrpcExecuteTransactionOptions, type GrpcGetTransactionOptions, type GrpcSignAndExecuteTransactionOptions, type GrpcSimulateTransactionInclude, type GrpcSimulateTransactionOptions, type GrpcSimulateTransactionProtoJson, type GrpcSimulateTransactionResult, type GrpcTransactionInclude, type GrpcTransactionProtoJson, type GrpcTransactionResult, types_d_exports as GrpcTypes, type GrpcWaitForTransactionOptions, GrpcWebFetchTransport, type GrpcWebOptions, type RpcTransport, SuiGrpcClient, type SuiGrpcClientOptions, isSuiGrpcClient, parseGrpcSimulateTransactionResponse, parseGrpcTransactionResponse };
|
package/dist/grpc/index.mjs
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { GrpcCoreClient } from "./core.mjs";
|
|
1
|
+
import { GrpcCoreClient, parseGrpcSimulateTransactionResponse, parseGrpcTransactionResponse } from "./core.mjs";
|
|
2
2
|
import { SuiGrpcClient, isSuiGrpcClient } from "./client.mjs";
|
|
3
3
|
import { types_exports } from "./proto/types.mjs";
|
|
4
4
|
import { GrpcWebFetchTransport } from "@protobuf-ts/grpcweb-transport";
|
|
5
5
|
|
|
6
|
-
export { GrpcCoreClient, types_exports as GrpcTypes, GrpcWebFetchTransport, SuiGrpcClient, isSuiGrpcClient };
|
|
6
|
+
export { GrpcCoreClient, types_exports as GrpcTypes, GrpcWebFetchTransport, SuiGrpcClient, isSuiGrpcClient, parseGrpcSimulateTransactionResponse, parseGrpcTransactionResponse };
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { AdvanceCheckpointRequest, AdvanceCheckpointResponse, AdvanceClockRequest, AdvanceClockResponse, GetStatusRequest, GetStatusResponse } from "./forking_service.mjs";
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
2
|
+
import * as _protobuf_ts_runtime6 from "@protobuf-ts/runtime";
|
|
3
|
+
import * as _protobuf_ts_runtime_rpc6 from "@protobuf-ts/runtime-rpc";
|
|
4
4
|
import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
|
|
5
5
|
|
|
6
6
|
//#region src/grpc/proto/sui/forking/v1alpha/forking_service.client.d.ts
|
|
@@ -37,9 +37,9 @@ interface IForkingServiceClient {
|
|
|
37
37
|
declare class ForkingServiceClient implements IForkingServiceClient, ServiceInfo {
|
|
38
38
|
private readonly _transport;
|
|
39
39
|
typeName: string;
|
|
40
|
-
methods:
|
|
40
|
+
methods: _protobuf_ts_runtime_rpc6.MethodInfo<any, any>[];
|
|
41
41
|
options: {
|
|
42
|
-
[extensionName: string]:
|
|
42
|
+
[extensionName: string]: _protobuf_ts_runtime6.JsonValue;
|
|
43
43
|
};
|
|
44
44
|
constructor(_transport: RpcTransport);
|
|
45
45
|
/**
|
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { Bcs } from "./bcs.mjs";
|
|
2
1
|
import { Owner } from "./owner.mjs";
|
|
2
|
+
import { Bcs } from "./bcs.mjs";
|
|
3
3
|
import { ObjectReference } from "./object_reference.mjs";
|
|
4
4
|
import { GasCostSummary } from "./gas_cost_summary.mjs";
|
|
5
5
|
import { ExecutionStatus } from "./execution_status.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { BatchGetObjectsRequest, BatchGetObjectsResponse, BatchGetTransactionsRequest, BatchGetTransactionsResponse, GetCheckpointRequest, GetCheckpointResponse, GetEpochRequest, GetEpochResponse, GetObjectRequest, GetObjectResponse, GetServiceInfoRequest, GetServiceInfoResponse, GetTransactionRequest, GetTransactionResponse } from "./ledger_service.mjs";
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
2
|
+
import * as _protobuf_ts_runtime0 from "@protobuf-ts/runtime";
|
|
3
|
+
import * as _protobuf_ts_runtime_rpc0 from "@protobuf-ts/runtime-rpc";
|
|
4
4
|
import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
|
|
5
5
|
|
|
6
6
|
//#region src/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts
|
|
@@ -45,9 +45,9 @@ interface ILedgerServiceClient {
|
|
|
45
45
|
declare class LedgerServiceClient implements ILedgerServiceClient, ServiceInfo {
|
|
46
46
|
private readonly _transport;
|
|
47
47
|
typeName: string;
|
|
48
|
-
methods:
|
|
48
|
+
methods: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
|
|
49
49
|
options: {
|
|
50
|
-
[extensionName: string]:
|
|
50
|
+
[extensionName: string]: _protobuf_ts_runtime0.JsonValue;
|
|
51
51
|
};
|
|
52
52
|
constructor(_transport: RpcTransport);
|
|
53
53
|
/**
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { GetDatatypeRequest, GetDatatypeResponse, GetFunctionRequest, GetFunctionResponse, GetPackageRequest, GetPackageResponse, ListPackageVersionsRequest, ListPackageVersionsResponse } from "./move_package_service.mjs";
|
|
2
|
-
import * as
|
|
3
|
-
import * as
|
|
2
|
+
import * as _protobuf_ts_runtime1 from "@protobuf-ts/runtime";
|
|
3
|
+
import * as _protobuf_ts_runtime_rpc1 from "@protobuf-ts/runtime-rpc";
|
|
4
4
|
import { RpcOptions, RpcTransport, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
|
|
5
5
|
|
|
6
6
|
//#region src/grpc/proto/sui/rpc/v2/move_package_service.client.d.ts
|
|
@@ -31,9 +31,9 @@ interface IMovePackageServiceClient {
|
|
|
31
31
|
declare class MovePackageServiceClient implements IMovePackageServiceClient, ServiceInfo {
|
|
32
32
|
private readonly _transport;
|
|
33
33
|
typeName: string;
|
|
34
|
-
methods:
|
|
34
|
+
methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
|
|
35
35
|
options: {
|
|
36
|
-
[extensionName: string]:
|
|
36
|
+
[extensionName: string]: _protobuf_ts_runtime1.JsonValue;
|
|
37
37
|
};
|
|
38
38
|
constructor(_transport: RpcTransport);
|
|
39
39
|
/**
|