@mysten/sui 2.26.0 → 2.26.1

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 CHANGED
@@ -1,5 +1,16 @@
1
1
  # @mysten/sui.js
2
2
 
3
+ ## 2.26.1
4
+
5
+ ### Patch Changes
6
+
7
+ - c8d3046: Restore backwards-compatible `ObjectError.code` values for gRPC object lookups. Missing
8
+ objects now report the long-standing `notExists` code (instead of the raw gRPC status number `'5'`
9
+ introduced in 2.26.0), so handlers written against earlier releases keep working on every
10
+ transport. Other gRPC statuses use the status name (for example `'INTERNAL'`) as the code, and
11
+ unrecognized statuses map to `'unknown'`. The transport-neutral `reason` field is unchanged and
12
+ remains the preferred way to detect missing objects.
13
+
3
14
  ## 2.26.0
4
15
 
5
16
  ### Minor Changes
@@ -1,21 +1,21 @@
1
1
  import { TypeTag as TypeTag$1 } from "./types.mjs";
2
- import * as _mysten_bcs1226 from "@mysten/bcs";
2
+ import * as _mysten_bcs1206 from "@mysten/bcs";
3
3
  import { BcsType } from "@mysten/bcs";
4
4
 
5
5
  //#region src/bcs/bcs.d.ts
6
6
  declare const TypeTag: BcsType<string, string | TypeTag$1, string>;
7
- declare function IntentMessage<T extends BcsType<any>>(T: T): _mysten_bcs1226.BcsStruct<{
8
- intent: _mysten_bcs1226.BcsStruct<{
9
- scope: _mysten_bcs1226.BcsEnum<{
7
+ declare function IntentMessage<T extends BcsType<any>>(T: T): _mysten_bcs1206.BcsStruct<{
8
+ intent: _mysten_bcs1206.BcsStruct<{
9
+ scope: _mysten_bcs1206.BcsEnum<{
10
10
  TransactionData: null;
11
11
  TransactionEffects: null;
12
12
  CheckpointSummary: null;
13
13
  PersonalMessage: null;
14
14
  }, "IntentScope">;
15
- version: _mysten_bcs1226.BcsEnum<{
15
+ version: _mysten_bcs1206.BcsEnum<{
16
16
  V0: null;
17
17
  }, "IntentVersion">;
18
- appId: _mysten_bcs1226.BcsEnum<{
18
+ appId: _mysten_bcs1206.BcsEnum<{
19
19
  Sui: null;
20
20
  }, "AppId">;
21
21
  }, string>;
@@ -545,7 +545,7 @@ declare const suiBcs: {
545
545
  version: string;
546
546
  digest: string;
547
547
  };
548
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
548
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
549
549
  FundsWithdrawal: {
550
550
  reservation: {
551
551
  MaxAmountU64: string;
@@ -560,7 +560,7 @@ declare const suiBcs: {
560
560
  Sponsor: true;
561
561
  }, "Sender" | "Sponsor">;
562
562
  };
563
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
563
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
564
564
  Pure: {
565
565
  bytes: string | Uint8Array<ArrayBufferLike>;
566
566
  };
@@ -793,7 +793,7 @@ declare const suiBcs: {
793
793
  TransactionEffects: true;
794
794
  CheckpointSummary: true;
795
795
  PersonalMessage: true;
796
- }, "TransactionEffects" | "TransactionData" | "CheckpointSummary" | "PersonalMessage">;
796
+ }, "TransactionData" | "TransactionEffects" | "CheckpointSummary" | "PersonalMessage">;
797
797
  version: {
798
798
  V0: true;
799
799
  $kind: "V0";
@@ -827,7 +827,7 @@ declare const suiBcs: {
827
827
  version: string;
828
828
  digest: string;
829
829
  };
830
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
830
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
831
831
  FundsWithdrawal: {
832
832
  reservation: {
833
833
  MaxAmountU64: string;
@@ -842,7 +842,7 @@ declare const suiBcs: {
842
842
  Sponsor: true;
843
843
  }, "Sender" | "Sponsor">;
844
844
  };
845
- }, "Object" | "Pure" | "FundsWithdrawal">[];
845
+ }, "Pure" | "Object" | "FundsWithdrawal">[];
846
846
  commands: _mysten_bcs0.EnumOutputShapeWithKeys<{
847
847
  MoveCall: {
848
848
  package: string;
@@ -981,7 +981,7 @@ declare const suiBcs: {
981
981
  startVersion: string;
982
982
  owner: string;
983
983
  };
984
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
984
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
985
985
  };
986
986
  $kind: "RawObject";
987
987
  }[];
@@ -1113,7 +1113,7 @@ declare const suiBcs: {
1113
1113
  version: string;
1114
1114
  digest: string;
1115
1115
  };
1116
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
1116
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
1117
1117
  FundsWithdrawal: {
1118
1118
  reservation: {
1119
1119
  MaxAmountU64: string;
@@ -1128,7 +1128,7 @@ declare const suiBcs: {
1128
1128
  Sponsor: true;
1129
1129
  }, "Sender" | "Sponsor">;
1130
1130
  };
1131
- }, "Object" | "Pure" | "FundsWithdrawal">[];
1131
+ }, "Pure" | "Object" | "FundsWithdrawal">[];
1132
1132
  commands: _mysten_bcs0.EnumOutputShapeWithKeys<{
1133
1133
  MoveCall: {
1134
1134
  package: string;
@@ -1210,7 +1210,7 @@ declare const suiBcs: {
1210
1210
  };
1211
1211
  }, "MoveCall" | "TransferObjects" | "SplitCoins" | "MergeCoins" | "Publish" | "MakeMoveVec" | "Upgrade">[];
1212
1212
  };
1213
- }, "EndOfEpochTransaction" | "ProgrammableSystemTransaction" | "ProgrammableTransaction" | "ChangeEpoch" | "Genesis" | "ConsensusCommitPrologue" | "AuthenticatorStateUpdate" | "RandomnessStateUpdate" | "ConsensusCommitPrologueV2" | "ConsensusCommitPrologueV3" | "ConsensusCommitPrologueV4">;
1213
+ }, "ProgrammableTransaction" | "ChangeEpoch" | "Genesis" | "ConsensusCommitPrologue" | "AuthenticatorStateUpdate" | "EndOfEpochTransaction" | "RandomnessStateUpdate" | "ConsensusCommitPrologueV2" | "ConsensusCommitPrologueV3" | "ConsensusCommitPrologueV4" | "ProgrammableSystemTransaction">;
1214
1214
  sender: string;
1215
1215
  gasData: {
1216
1216
  payment: {
@@ -1233,7 +1233,7 @@ declare const suiBcs: {
1233
1233
  chain: string;
1234
1234
  nonce: number;
1235
1235
  };
1236
- }, "Epoch" | "None" | "ValidDuring">;
1236
+ }, "None" | "Epoch" | "ValidDuring">;
1237
1237
  };
1238
1238
  $kind: "V1";
1239
1239
  };
@@ -1823,7 +1823,7 @@ declare const suiBcs: {
1823
1823
  version: string;
1824
1824
  digest: string;
1825
1825
  };
1826
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
1826
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
1827
1827
  FundsWithdrawal: {
1828
1828
  reservation: {
1829
1829
  MaxAmountU64: string;
@@ -1838,7 +1838,7 @@ declare const suiBcs: {
1838
1838
  Sponsor: true;
1839
1839
  }, "Sender" | "Sponsor">;
1840
1840
  };
1841
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
1841
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
1842
1842
  Pure: {
1843
1843
  bytes: string | Uint8Array<ArrayBufferLike>;
1844
1844
  };
@@ -2119,7 +2119,7 @@ declare const suiBcs: {
2119
2119
  startVersion: string;
2120
2120
  owner: string;
2121
2121
  };
2122
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
2122
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
2123
2123
  };
2124
2124
  $kind: "RawObject";
2125
2125
  }[], Iterable<{
@@ -2395,7 +2395,7 @@ declare const suiBcs: {
2395
2395
  version: string;
2396
2396
  digest: string;
2397
2397
  };
2398
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
2398
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
2399
2399
  FundsWithdrawal: {
2400
2400
  reservation: {
2401
2401
  MaxAmountU64: string;
@@ -2410,7 +2410,7 @@ declare const suiBcs: {
2410
2410
  Sponsor: true;
2411
2411
  }, "Sender" | "Sponsor">;
2412
2412
  };
2413
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2413
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2414
2414
  Pure: {
2415
2415
  bytes: string | Uint8Array<ArrayBufferLike>;
2416
2416
  };
@@ -2707,7 +2707,7 @@ declare const suiBcs: {
2707
2707
  version: string;
2708
2708
  digest: string;
2709
2709
  };
2710
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
2710
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
2711
2711
  FundsWithdrawal: {
2712
2712
  reservation: {
2713
2713
  MaxAmountU64: string;
@@ -2722,7 +2722,7 @@ declare const suiBcs: {
2722
2722
  Sponsor: true;
2723
2723
  }, "Sender" | "Sponsor">;
2724
2724
  };
2725
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2725
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2726
2726
  Pure: {
2727
2727
  bytes: string | Uint8Array<ArrayBufferLike>;
2728
2728
  };
@@ -3003,7 +3003,7 @@ declare const suiBcs: {
3003
3003
  startVersion: string;
3004
3004
  owner: string;
3005
3005
  };
3006
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
3006
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
3007
3007
  };
3008
3008
  $kind: "RawObject";
3009
3009
  }[], Iterable<{
@@ -3279,7 +3279,7 @@ declare const suiBcs: {
3279
3279
  version: string;
3280
3280
  digest: string;
3281
3281
  };
3282
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
3282
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
3283
3283
  FundsWithdrawal: {
3284
3284
  reservation: {
3285
3285
  MaxAmountU64: string;
@@ -3294,7 +3294,7 @@ declare const suiBcs: {
3294
3294
  Sponsor: true;
3295
3295
  }, "Sender" | "Sponsor">;
3296
3296
  };
3297
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3297
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3298
3298
  Pure: {
3299
3299
  bytes: string | Uint8Array<ArrayBufferLike>;
3300
3300
  };
@@ -3567,7 +3567,7 @@ declare const suiBcs: {
3567
3567
  version: string;
3568
3568
  digest: string;
3569
3569
  };
3570
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
3570
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
3571
3571
  FundsWithdrawal: {
3572
3572
  reservation: {
3573
3573
  MaxAmountU64: string;
@@ -3582,7 +3582,7 @@ declare const suiBcs: {
3582
3582
  Sponsor: true;
3583
3583
  }, "Sender" | "Sponsor">;
3584
3584
  };
3585
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3585
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3586
3586
  Pure: {
3587
3587
  bytes: string | Uint8Array<ArrayBufferLike>;
3588
3588
  };
@@ -3863,7 +3863,7 @@ declare const suiBcs: {
3863
3863
  startVersion: string;
3864
3864
  owner: string;
3865
3865
  };
3866
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
3866
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
3867
3867
  };
3868
3868
  $kind: "RawObject";
3869
3869
  }[], Iterable<{
@@ -4139,7 +4139,7 @@ declare const suiBcs: {
4139
4139
  version: string;
4140
4140
  digest: string;
4141
4141
  };
4142
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
4142
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
4143
4143
  FundsWithdrawal: {
4144
4144
  reservation: {
4145
4145
  MaxAmountU64: string;
@@ -4154,7 +4154,7 @@ declare const suiBcs: {
4154
4154
  Sponsor: true;
4155
4155
  }, "Sender" | "Sponsor">;
4156
4156
  };
4157
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
4157
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
4158
4158
  Pure: {
4159
4159
  bytes: string | Uint8Array<ArrayBufferLike>;
4160
4160
  };
@@ -4608,7 +4608,7 @@ declare const suiBcs: {
4608
4608
  startVersion: string;
4609
4609
  owner: string;
4610
4610
  };
4611
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4611
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4612
4612
  objectId: string | Uint8Array<ArrayBufferLike>;
4613
4613
  version: string | number | bigint;
4614
4614
  digest: string;
@@ -4641,7 +4641,7 @@ declare const suiBcs: {
4641
4641
  startVersion: string;
4642
4642
  owner: string;
4643
4643
  };
4644
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4644
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4645
4645
  objectId: string | Uint8Array<ArrayBufferLike>;
4646
4646
  version: string | number | bigint;
4647
4647
  digest: string;
@@ -4674,7 +4674,7 @@ declare const suiBcs: {
4674
4674
  startVersion: string;
4675
4675
  owner: string;
4676
4676
  };
4677
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4677
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4678
4678
  objectId: string | Uint8Array<ArrayBufferLike>;
4679
4679
  version: string | number | bigint;
4680
4680
  digest: string;
@@ -4941,7 +4941,7 @@ declare const suiBcs: {
4941
4941
  startVersion: string;
4942
4942
  owner: string;
4943
4943
  };
4944
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">];
4944
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">];
4945
4945
  }, "NotExist" | "Exist">;
4946
4946
  outputState: _mysten_bcs0.EnumOutputShapeWithKeys<{
4947
4947
  NotExist: true;
@@ -4956,7 +4956,7 @@ declare const suiBcs: {
4956
4956
  startVersion: string;
4957
4957
  owner: string;
4958
4958
  };
4959
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">];
4959
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">];
4960
4960
  PackageWrite: [string, string];
4961
4961
  AccumulatorWriteV1: {
4962
4962
  address: {
@@ -5042,7 +5042,7 @@ declare const suiBcs: {
5042
5042
  ReadConsensusStreamEnded: string;
5043
5043
  Cancelled: string;
5044
5044
  PerEpochConfig: true;
5045
- }, "MutateConsensusStreamEnded" | "PerEpochConfig" | "ReadConsensusStreamEnded" | "ReadOnlyRoot" | "Cancelled">][], Iterable<readonly [string | Uint8Array<ArrayBufferLike>, _mysten_bcs0.EnumInputShape<{
5045
+ }, "ReadOnlyRoot" | "MutateConsensusStreamEnded" | "ReadConsensusStreamEnded" | "Cancelled" | "PerEpochConfig">][], Iterable<readonly [string | Uint8Array<ArrayBufferLike>, _mysten_bcs0.EnumInputShape<{
5046
5046
  ReadOnlyRoot: readonly [string | number | bigint, string];
5047
5047
  MutateConsensusStreamEnded: string | number | bigint;
5048
5048
  ReadConsensusStreamEnded: string | number | bigint;
@@ -5088,7 +5088,7 @@ declare const suiBcs: {
5088
5088
  version: string;
5089
5089
  digest: string;
5090
5090
  };
5091
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
5091
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
5092
5092
  FundsWithdrawal: {
5093
5093
  reservation: {
5094
5094
  MaxAmountU64: string;
@@ -5103,7 +5103,7 @@ declare const suiBcs: {
5103
5103
  Sponsor: true;
5104
5104
  }, "Sender" | "Sponsor">;
5105
5105
  };
5106
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5106
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5107
5107
  Pure: {
5108
5108
  bytes: string | Uint8Array<ArrayBufferLike>;
5109
5109
  };
@@ -5384,7 +5384,7 @@ declare const suiBcs: {
5384
5384
  startVersion: string;
5385
5385
  owner: string;
5386
5386
  };
5387
- }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
5387
+ }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
5388
5388
  };
5389
5389
  $kind: "RawObject";
5390
5390
  }[], Iterable<{
@@ -5660,7 +5660,7 @@ declare const suiBcs: {
5660
5660
  version: string;
5661
5661
  digest: string;
5662
5662
  };
5663
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
5663
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
5664
5664
  FundsWithdrawal: {
5665
5665
  reservation: {
5666
5666
  MaxAmountU64: string;
@@ -5675,7 +5675,7 @@ declare const suiBcs: {
5675
5675
  Sponsor: true;
5676
5676
  }, "Sender" | "Sponsor">;
5677
5677
  };
5678
- }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5678
+ }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5679
5679
  Pure: {
5680
5680
  bytes: string | Uint8Array<ArrayBufferLike>;
5681
5681
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/grpc/core.ts"],"mappings":"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"}
1
+ {"version":3,"file":"core.d.mts","names":[],"sources":["../../src/grpc/core.ts"],"mappings":"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"}
@@ -61,10 +61,14 @@ var GrpcCoreClient = class extends CoreClient {
61
61
  results.push(...response.response.objects.map((object, index) => {
62
62
  if (object.result.oneofKind === "error") {
63
63
  const error = object.result.error;
64
- const reason = error.code === GrpcStatusCode.NOT_FOUND ? "notFound" : "unknown";
65
- return new ObjectError(String(error.code), error.message, {
64
+ if (error.code === GrpcStatusCode.NOT_FOUND) return new ObjectError("notExists", error.message, {
66
65
  cause: error,
67
- reason,
66
+ reason: "notFound",
67
+ objectId: batch[index]
68
+ });
69
+ return new ObjectError(GrpcStatusCode[error.code] ?? "unknown", error.message, {
70
+ cause: error,
71
+ reason: "unknown",
68
72
  objectId: batch[index]
69
73
  });
70
74
  }
@@ -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, ObjectErrorReason, SuiClientTypes } from '../client/index.js';\nimport {\n\tCoreClient,\n\tformatMoveAbortMessage,\n\tObjectError,\n\tSimulationError,\n\tTransactionError,\n} 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 { setAddressBalanceTransactionExpirationFromSimulatedEpoch } from '../client/address-balance-transaction-expiration.js';\nimport { transactionBytesHaveEmptyGasPayment } from '../client/utils.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';\nimport type { QueryEnd, QueryOptions } from './proto/sui/rpc/v2/query_options.js';\nimport { Ordering, QueryEndReason } from './proto/sui/rpc/v2/query_options.js';\nimport type { ResolvedPagination } from '../client/query-filters.js';\nimport { RpcError } from '@protobuf-ts/runtime-rpc';\nimport { GrpcStatusCode } from '@protobuf-ts/grpcweb-transport';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { toGrpcEventFilter, toGrpcTransactionFilter } from './filters.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\n\nfunction isNameServiceResolutionMiss(error: unknown): boolean {\n\tif (!(error instanceof RpcError)) return false;\n\tif (error.code === GrpcStatusCode[GrpcStatusCode.NOT_FOUND]) return true;\n\tif (error.code !== GrpcStatusCode[GrpcStatusCode.RESOURCE_EXHAUSTED]) return false;\n\n\ttry {\n\t\t// The gRPC service currently reports expired names as RESOURCE_EXHAUSTED without a\n\t\t// structured reason. grpc-web URI-encodes status messages, so decode before matching while\n\t\t// preserving unrelated RESOURCE_EXHAUSTED failures such as capacity limits.\n\t\treturn decodeURIComponent(error.message) === 'name has expired';\n\t} catch {\n\t\treturn false;\n\t}\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(\n\t\t\t\t\t(object, index): SuiClientTypes.Object<Include> | ObjectError => {\n\t\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t\tconst error = object.result.error;\n\t\t\t\t\t\t\tconst reason: ObjectErrorReason =\n\t\t\t\t\t\t\t\terror.code === GrpcStatusCode.NOT_FOUND ? 'notFound' : 'unknown';\n\t\t\t\t\t\t\treturn new ObjectError(String(error.code), error.message, {\n\t\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t\t\treason,\n\t\t\t\t\t\t\t\tobjectId: batch[index],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\t\treturn new ObjectError('unknown', 'Unexpected result type', {\n\t\t\t\t\t\t\t\treason: 'unknown',\n\t\t\t\t\t\t\t\tobjectId: batch[index],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\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\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\t\tconst type =\n\t\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t\t? object.result.object.json\n\t\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\t: null\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t\t};\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\ttry {\n\t\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t\t{\n\t\t\t\t\tdigest: options.digest,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\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\tif (!response.transaction) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest);\n\t\t\t}\n\n\t\t\treturn withProtoJson(\n\t\t\t\tparseGrpcTransactionResponse(response.transaction, { include: options.include }),\n\t\t\t\toptions.include,\n\t\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof RpcError && error.code === GrpcStatusCode[GrpcStatusCode.NOT_FOUND]) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest, { cause: error });\n\t\t\t}\n\t\t\tthrow error;\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> & { doGasSelection?: boolean },\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\t// The simulated transaction is nested one level deeper in the response\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\t// A gas payment explicitly set to an empty list means gas is paid from the sender's\n\t\t// address balance, so the server needs to perform gas selection rather than simulating\n\t\t// with a mocked gas coin.\n\t\tconst doGasSelection =\n\t\t\toptions.doGasSelection ??\n\t\t\t(options.transaction instanceof Uint8Array\n\t\t\t\t? transactionBytesHaveEmptyGasPayment(options.transaction)\n\t\t\t\t: options.transaction.getData().gasData.payment?.length === 0);\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,\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 listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst paths = transactionReadMaskPaths(options.include);\n\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\tconst pagination = resolvePagination(options);\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst call = this.#client.ledgerService.listTransactions(\n\t\t\t{\n\t\t\t\treadMask: { paths },\n\t\t\t\tfilter: filter && toGrpcTransactionFilter(filter),\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst transactions: SuiClientTypes.TransactionResult<Include>[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.transaction) {\n\t\t\t\tif (transactions.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\ttransactions.push(\n\t\t\t\t\t\tparseGrpcTransactionResponse(frame.transaction, { include: options.include }),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\ttransactions,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst pagination = resolvePagination(options);\n\t\tconst call = this.#client.ledgerService.listEvents(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'package_id',\n\t\t\t\t\t\t'module',\n\t\t\t\t\t\t'sender',\n\t\t\t\t\t\t'event_type',\n\t\t\t\t\t\t'contents',\n\t\t\t\t\t\t'json',\n\t\t\t\t\t\t'checkpoint',\n\t\t\t\t\t\t'transaction_digest',\n\t\t\t\t\t\t'event_index',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tfilter: options.filter\n\t\t\t\t\t? toGrpcEventFilter(await resolveEventFilter(this.mvr, options.filter, options.signal))\n\t\t\t\t\t: undefined,\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst events: SuiClientTypes.EventEntry[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.event) {\n\t\t\t\tif (events.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\tconst event = frame.event;\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\t\teventType: normalizeStructTag(event.eventType!),\n\t\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t\t\tcheckpoint: event.checkpoint?.toString() ?? null,\n\t\t\t\t\t\ttransactionDigest: event.transactionDigest!,\n\t\t\t\t\t\teventIndex: event.eventIndex!,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\tevents,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\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 resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\ttry {\n\t\t\tconst { response } = await this.#client.nameService.lookupName(\n\t\t\t\t{ name: options.name },\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\treturn { address: response.record?.targetAddress ?? null };\n\t\t} catch (error) {\n\t\t\tif (isNameServiceResolutionMiss(error)) {\n\t\t\t\treturn { address: null };\n\t\t\t}\n\n\t\t\tthrow error;\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\t\t\tconst doGasSelection =\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null);\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// 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\t'transaction.effects.epoch',\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\t\t\tawait setAddressBalanceTransactionExpirationFromSimulatedEpoch({\n\t\t\t\ttransactionData,\n\t\t\t\tclient,\n\t\t\t\tepoch: response.transaction.effects?.epoch,\n\t\t\t\toriginalTransactionData: snapshot,\n\t\t\t\tisTransactionKindOnly: !!options.onlyTransactionKind,\n\t\t\t\tdoGasSelection,\n\t\t\t});\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction toGrpcQueryOptions(pagination: ResolvedPagination, limit: number): QueryOptions {\n\treturn {\n\t\tlimit,\n\t\tordering: pagination.descending ? Ordering.DESCENDING : Ordering.ASCENDING,\n\t\tafter: pagination.after ? fromBase64(pagination.after) : undefined,\n\t\tbefore: pagination.before ? fromBase64(pagination.before) : undefined,\n\t};\n}\n\nfunction transactionReadMaskPaths(\n\tinclude: SuiClientTypes.TransactionInclude | undefined,\n\tprefix = '',\n): string[] {\n\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\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\t// Use effects.changed_objects to match JSON-RPC behavior (which uses objectChanges)\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\t// gas_object is unset when the transaction has no gas object (system\n\t\t// transactions, or gas paid from an address balance)\n\t\tgasObject: effects.gasObject\n\t\t\t? {\n\t\t\t\t\tobjectId: effects.gasObject.objectId!,\n\t\t\t\t\tinputState: mapInputObjectState(effects.gasObject.inputState)!,\n\t\t\t\t\tinputVersion: effects.gasObject.inputVersion?.toString() ?? null,\n\t\t\t\t\tinputDigest: effects.gasObject.inputDigest ?? null,\n\t\t\t\t\tinputOwner: mapOwner(effects.gasObject.inputOwner),\n\t\t\t\t\toutputState: mapOutputObjectState(effects.gasObject.outputState)!,\n\t\t\t\t\toutputVersion: effects.gasObject.outputVersion?.toString() ?? null,\n\t\t\t\t\toutputDigest: effects.gasObject.outputDigest ?? null,\n\t\t\t\t\toutputOwner: mapOwner(effects.gasObject.outputOwner),\n\t\t\t\t\tidOperation: mapIdOperation(effects.gasObject.idOperation)!,\n\t\t\t\t}\n\t\t\t: null,\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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"}
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 {\n\tCoreClient,\n\tformatMoveAbortMessage,\n\tObjectError,\n\tSimulationError,\n\tTransactionError,\n} 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 { setAddressBalanceTransactionExpirationFromSimulatedEpoch } from '../client/address-balance-transaction-expiration.js';\nimport { transactionBytesHaveEmptyGasPayment } from '../client/utils.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';\nimport type { QueryEnd, QueryOptions } from './proto/sui/rpc/v2/query_options.js';\nimport { Ordering, QueryEndReason } from './proto/sui/rpc/v2/query_options.js';\nimport type { ResolvedPagination } from '../client/query-filters.js';\nimport { RpcError } from '@protobuf-ts/runtime-rpc';\nimport { GrpcStatusCode } from '@protobuf-ts/grpcweb-transport';\nimport {\n\tresolveEventFilter,\n\tresolvePagination,\n\tresolveTransactionFilter,\n\tvalidateTransactionQuery,\n} from '../client/query-filters.js';\nimport { toGrpcEventFilter, toGrpcTransactionFilter } from './filters.js';\n\nexport interface GrpcCoreClientOptions extends CoreClientOptions {\n\tclient: SuiGrpcClient;\n}\n\nfunction isNameServiceResolutionMiss(error: unknown): boolean {\n\tif (!(error instanceof RpcError)) return false;\n\tif (error.code === GrpcStatusCode[GrpcStatusCode.NOT_FOUND]) return true;\n\tif (error.code !== GrpcStatusCode[GrpcStatusCode.RESOURCE_EXHAUSTED]) return false;\n\n\ttry {\n\t\t// The gRPC service currently reports expired names as RESOURCE_EXHAUSTED without a\n\t\t// structured reason. grpc-web URI-encodes status messages, so decode before matching while\n\t\t// preserving unrelated RESOURCE_EXHAUSTED failures such as capacity limits.\n\t\treturn decodeURIComponent(error.message) === 'name has expired';\n\t} catch {\n\t\treturn false;\n\t}\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(\n\t\t\t\t\t(object, index): SuiClientTypes.Object<Include> | ObjectError => {\n\t\t\t\t\t\tif (object.result.oneofKind === 'error') {\n\t\t\t\t\t\t\tconst error = object.result.error;\n\t\t\t\t\t\t\tif (error.code === GrpcStatusCode.NOT_FOUND) {\n\t\t\t\t\t\t\t\t// Special case for backwards compatibility: missing objects reuse\n\t\t\t\t\t\t\t\t// the long-standing JSON-RPC `notExists` code instead of the gRPC\n\t\t\t\t\t\t\t\t// status name, so handlers written against earlier releases keep\n\t\t\t\t\t\t\t\t// working.\n\t\t\t\t\t\t\t\treturn new ObjectError('notExists', error.message, {\n\t\t\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t\t\t\treason: 'notFound',\n\t\t\t\t\t\t\t\t\tobjectId: batch[index],\n\t\t\t\t\t\t\t\t});\n\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t// Other statuses use the gRPC status name (for example `INTERNAL`),\n\t\t\t\t\t\t\t// never the raw status number.\n\t\t\t\t\t\t\treturn new ObjectError(GrpcStatusCode[error.code] ?? 'unknown', error.message, {\n\t\t\t\t\t\t\t\tcause: error,\n\t\t\t\t\t\t\t\treason: 'unknown',\n\t\t\t\t\t\t\t\tobjectId: batch[index],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tif (object.result.oneofKind !== 'object') {\n\t\t\t\t\t\t\treturn new ObjectError('unknown', 'Unexpected result type', {\n\t\t\t\t\t\t\t\treason: 'unknown',\n\t\t\t\t\t\t\t\tobjectId: batch[index],\n\t\t\t\t\t\t\t});\n\t\t\t\t\t\t}\n\n\t\t\t\t\t\tconst bcsContent = object.result.object.contents?.value ?? undefined;\n\t\t\t\t\t\tconst objectBcs = object.result.object.bcs?.value ?? undefined;\n\n\t\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\t\tconst objectType = object.result.object.objectType;\n\t\t\t\t\t\tconst type =\n\t\t\t\t\t\t\tobjectType && objectType.includes('::')\n\t\t\t\t\t\t\t\t? normalizeStructTag(objectType)\n\t\t\t\t\t\t\t\t: (objectType ?? '');\n\n\t\t\t\t\t\tconst jsonContent = options.include?.json\n\t\t\t\t\t\t\t? object.result.object.json\n\t\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\t: null\n\t\t\t\t\t\t\t: undefined;\n\n\t\t\t\t\t\tconst displayData = mapDisplayProto(\n\t\t\t\t\t\t\toptions.include?.display,\n\t\t\t\t\t\t\tobject.result.object.display,\n\t\t\t\t\t\t);\n\n\t\t\t\t\t\treturn {\n\t\t\t\t\t\t\tobjectId: object.result.object.objectId!,\n\t\t\t\t\t\t\tversion: object.result.object.version?.toString()!,\n\t\t\t\t\t\t\tdigest: object.result.object.digest!,\n\t\t\t\t\t\t\tcontent: bcsContent as SuiClientTypes.Object<Include>['content'],\n\t\t\t\t\t\t\towner: mapOwner(object.result.object.owner)!,\n\t\t\t\t\t\t\ttype,\n\t\t\t\t\t\t\tpreviousTransaction: (object.result.object.previousTransaction ??\n\t\t\t\t\t\t\t\tundefined) as SuiClientTypes.Object<Include>['previousTransaction'],\n\t\t\t\t\t\t\tobjectBcs: objectBcs as SuiClientTypes.Object<Include>['objectBcs'],\n\t\t\t\t\t\t\tjson: jsonContent as SuiClientTypes.Object<Include>['json'],\n\t\t\t\t\t\t\tdisplay: displayData as SuiClientTypes.Object<Include>['display'],\n\t\t\t\t\t\t};\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\ttry {\n\t\t\tconst { response } = await this.#client.ledgerService.getTransaction(\n\t\t\t\t{\n\t\t\t\t\tdigest: options.digest,\n\t\t\t\t\treadMask: {\n\t\t\t\t\t\tpaths: transactionReadMaskPaths(options.include),\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\tif (!response.transaction) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest);\n\t\t\t}\n\n\t\t\treturn withProtoJson(\n\t\t\t\tparseGrpcTransactionResponse(response.transaction, { include: options.include }),\n\t\t\t\toptions.include,\n\t\t\t\t() => ExecutedTransaction.toJson(response.transaction!),\n\t\t\t);\n\t\t} catch (error) {\n\t\t\tif (error instanceof RpcError && error.code === GrpcStatusCode[GrpcStatusCode.NOT_FOUND]) {\n\t\t\t\tthrow new TransactionError('notFound', options.digest, { cause: error });\n\t\t\t}\n\t\t\tthrow error;\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> & { doGasSelection?: boolean },\n\t): Promise<SuiClientTypes.SimulateTransactionResult<Include>> {\n\t\t// The simulated transaction is nested one level deeper in the response\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\t// A gas payment explicitly set to an empty list means gas is paid from the sender's\n\t\t// address balance, so the server needs to perform gas selection rather than simulating\n\t\t// with a mocked gas coin.\n\t\tconst doGasSelection =\n\t\t\toptions.doGasSelection ??\n\t\t\t(options.transaction instanceof Uint8Array\n\t\t\t\t? transactionBytesHaveEmptyGasPayment(options.transaction)\n\t\t\t\t: options.transaction.getData().gasData.payment?.length === 0);\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,\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 listTransactions<Include extends SuiClientTypes.TransactionInclude = {}>(\n\t\toptions: SuiClientTypes.ListTransactionsOptions<Include>,\n\t): Promise<SuiClientTypes.ListTransactionsResponse<Include>> {\n\t\tconst paths = transactionReadMaskPaths(options.include);\n\n\t\tconst filter = options.filter\n\t\t\t? await resolveTransactionFilter(this.mvr, options.filter, options.signal)\n\t\t\t: undefined;\n\t\tconst pagination = resolvePagination(options);\n\t\tvalidateTransactionQuery(filter, pagination);\n\n\t\tconst call = this.#client.ledgerService.listTransactions(\n\t\t\t{\n\t\t\t\treadMask: { paths },\n\t\t\t\tfilter: filter && toGrpcTransactionFilter(filter),\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst transactions: SuiClientTypes.TransactionResult<Include>[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.transaction) {\n\t\t\t\tif (transactions.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\ttransactions.push(\n\t\t\t\t\t\tparseGrpcTransactionResponse(frame.transaction, { include: options.include }),\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\ttransactions,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\n\t}\n\n\tasync listEvents(\n\t\toptions: SuiClientTypes.ListEventsOptions,\n\t): Promise<SuiClientTypes.ListEventsResponse> {\n\t\tconst pagination = resolvePagination(options);\n\t\tconst call = this.#client.ledgerService.listEvents(\n\t\t\t{\n\t\t\t\treadMask: {\n\t\t\t\t\tpaths: [\n\t\t\t\t\t\t'package_id',\n\t\t\t\t\t\t'module',\n\t\t\t\t\t\t'sender',\n\t\t\t\t\t\t'event_type',\n\t\t\t\t\t\t'contents',\n\t\t\t\t\t\t'json',\n\t\t\t\t\t\t'checkpoint',\n\t\t\t\t\t\t'transaction_digest',\n\t\t\t\t\t\t'event_index',\n\t\t\t\t\t],\n\t\t\t\t},\n\t\t\t\tfilter: options.filter\n\t\t\t\t\t? toGrpcEventFilter(await resolveEventFilter(this.mvr, options.filter, options.signal))\n\t\t\t\t\t: undefined,\n\t\t\t\t// Request one extra item as lookahead: the server reports its item limit as reached\n\t\t\t\t// without scanning past it, so an exact-limit final page is otherwise\n\t\t\t\t// indistinguishable from one with more results\n\t\t\t\toptions: toGrpcQueryOptions(pagination, pagination.limit + 1),\n\t\t\t},\n\t\t\t{ abort: options.signal },\n\t\t);\n\n\t\tconst events: SuiClientTypes.EventEntry[] = [];\n\t\tlet startCursor: string | null = null;\n\t\tlet endCursor: string | null = null;\n\t\tlet frontier: string | null = null;\n\t\tlet end: QueryEnd | undefined;\n\t\tlet sawLookaheadItem = false;\n\n\t\tfor await (const frame of call.responses) {\n\t\t\tif (frame.watermark?.cursor) {\n\t\t\t\tfrontier = toBase64(frame.watermark.cursor);\n\t\t\t}\n\t\t\tif (frame.event) {\n\t\t\t\tif (events.length >= pagination.limit) {\n\t\t\t\t\tsawLookaheadItem = true;\n\t\t\t\t} else {\n\t\t\t\t\tstartCursor ??= frontier;\n\t\t\t\t\tendCursor = frontier;\n\t\t\t\t\tconst event = frame.event;\n\t\t\t\t\tevents.push({\n\t\t\t\t\t\tpackageId: normalizeSuiAddress(event.packageId!),\n\t\t\t\t\t\tmodule: event.module!,\n\t\t\t\t\t\tsender: normalizeSuiAddress(event.sender!),\n\t\t\t\t\t\teventType: normalizeStructTag(event.eventType!),\n\t\t\t\t\t\tbcs: event.contents?.value ?? new Uint8Array(),\n\t\t\t\t\t\tjson: event.json ? (Value.toJson(event.json) as Record<string, unknown>) : null,\n\t\t\t\t\t\tcheckpoint: event.checkpoint?.toString() ?? null,\n\t\t\t\t\t\ttransactionDigest: event.transactionDigest!,\n\t\t\t\t\t\teventIndex: event.eventIndex!,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t\tif (frame.end) {\n\t\t\t\tend = frame.end;\n\t\t\t}\n\t\t}\n\n\t\t// ITEM_LIMIT without the lookahead item means the server clamped the requested limit to\n\t\t// its own maximum, so the filled page is still evidence of a possible next page\n\t\tconst hasNextPage =\n\t\t\tsawLookaheadItem ||\n\t\t\tend?.reason === QueryEndReason.SCAN_LIMIT ||\n\t\t\tend?.reason === QueryEndReason.ITEM_LIMIT;\n\n\t\treturn {\n\t\t\tevents,\n\t\t\thasNextPage,\n\t\t\tstartCursor,\n\t\t\t// Scans that stopped early without filling the page continue from the scan frontier\n\t\t\t// (so already-scanned positions are not revisited), full pages continue after the last\n\t\t\t// returned item, and terminal pages have no positions to continue from\n\t\t\tendCursor: sawLookaheadItem ? endCursor : hasNextPage ? (frontier ?? endCursor) : endCursor,\n\t\t};\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 resolveNameServiceAddress(\n\t\toptions: SuiClientTypes.ResolveNameServiceAddressOptions,\n\t): Promise<SuiClientTypes.ResolveNameServiceAddressResponse> {\n\t\ttry {\n\t\t\tconst { response } = await this.#client.nameService.lookupName(\n\t\t\t\t{ name: options.name },\n\t\t\t\t{ abort: options.signal },\n\t\t\t);\n\n\t\t\treturn { address: response.record?.targetAddress ?? null };\n\t\t} catch (error) {\n\t\t\tif (isNameServiceResolutionMiss(error)) {\n\t\t\t\treturn { address: null };\n\t\t\t}\n\n\t\t\tthrow error;\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\t\t\tconst doGasSelection =\n\t\t\t\t!options.onlyTransactionKind &&\n\t\t\t\t(snapshot.gasData.budget == null || snapshot.gasData.payment == null);\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// 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\t'transaction.effects.epoch',\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\t\t\tawait setAddressBalanceTransactionExpirationFromSimulatedEpoch({\n\t\t\t\ttransactionData,\n\t\t\t\tclient,\n\t\t\t\tepoch: response.transaction.effects?.epoch,\n\t\t\t\toriginalTransactionData: snapshot,\n\t\t\t\tisTransactionKindOnly: !!options.onlyTransactionKind,\n\t\t\t\tdoGasSelection,\n\t\t\t});\n\n\t\t\treturn await next();\n\t\t};\n\t}\n}\n\nfunction toGrpcQueryOptions(pagination: ResolvedPagination, limit: number): QueryOptions {\n\treturn {\n\t\tlimit,\n\t\tordering: pagination.descending ? Ordering.DESCENDING : Ordering.ASCENDING,\n\t\tafter: pagination.after ? fromBase64(pagination.after) : undefined,\n\t\tbefore: pagination.before ? fromBase64(pagination.before) : undefined,\n\t};\n}\n\nfunction transactionReadMaskPaths(\n\tinclude: SuiClientTypes.TransactionInclude | undefined,\n\tprefix = '',\n): string[] {\n\tconst paths = ['digest', 'transaction.digest', 'signatures', 'effects.status'];\n\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\t// Use effects.changed_objects to match JSON-RPC behavior (which uses objectChanges)\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\t// gas_object is unset when the transaction has no gas object (system\n\t\t// transactions, or gas paid from an address balance)\n\t\tgasObject: effects.gasObject\n\t\t\t? {\n\t\t\t\t\tobjectId: effects.gasObject.objectId!,\n\t\t\t\t\tinputState: mapInputObjectState(effects.gasObject.inputState)!,\n\t\t\t\t\tinputVersion: effects.gasObject.inputVersion?.toString() ?? null,\n\t\t\t\t\tinputDigest: effects.gasObject.inputDigest ?? null,\n\t\t\t\t\tinputOwner: mapOwner(effects.gasObject.inputOwner),\n\t\t\t\t\toutputState: mapOutputObjectState(effects.gasObject.outputState)!,\n\t\t\t\t\toutputVersion: effects.gasObject.outputVersion?.toString() ?? null,\n\t\t\t\t\toutputDigest: effects.gasObject.outputDigest ?? null,\n\t\t\t\t\toutputOwner: mapOwner(effects.gasObject.outputOwner),\n\t\t\t\t\tidOperation: mapIdOperation(effects.gasObject.idOperation)!,\n\t\t\t\t}\n\t\t\t: null,\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":";;;;;;;;;;;;;;;;;;;;;;;;AA4EA,SAAS,4BAA4B,OAAyB;AAC7D,KAAI,EAAE,iBAAiB,UAAW,QAAO;AACzC,KAAI,MAAM,SAAS,eAAe,eAAe,WAAY,QAAO;AACpE,KAAI,MAAM,SAAS,eAAe,eAAe,oBAAqB,QAAO;AAE7E,KAAI;AAIH,SAAO,mBAAmB,MAAM,QAAQ,KAAK;SACtC;AACP,SAAO;;;AAIT,IAAa,iBAAb,cAAoC,WAAW;CAC9C;CACA,YAAY,EAAE,QAAQ,GAAG,WAAkC;AAC1D,QAAM,QAAQ;AACd,QAAKA,SAAU;;CAGhB,MAAM,WACL,SACsD;EACtD,MAAM,UAAU,MAAM,QAAQ,WAAW,GAAG;EAC5C,MAAM,UAAiE,EAAE;EAEzE,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAY;AACxE,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,WAAW;AAEvB,MAAI,QAAQ,SAAS,oBACpB,OAAM,KAAK,uBAAuB;AAEnC,MAAI,QAAQ,SAAS,UACpB,OAAM,KAAK,MAAM;AAElB,MAAI,QAAQ,SAAS,KACpB,OAAM,KAAK,OAAO;AAEnB,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,UAAU;AAGtB,OAAK,MAAM,SAAS,SAAS;GAC5B,MAAM,WAAW,MAAM,MAAKA,OAAQ,cAAc,gBACjD;IACC,UAAU,MAAM,KAAK,QAAQ,EAAE,UAAU,IAAI,EAAE;IAC/C,UAAU,EACT,OACA;IACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,WAAQ,KACP,GAAG,SAAS,SAAS,QAAQ,KAC3B,QAAQ,UAAwD;AAChE,QAAI,OAAO,OAAO,cAAc,SAAS;KACxC,MAAM,QAAQ,OAAO,OAAO;AAC5B,SAAI,MAAM,SAAS,eAAe,UAKjC,QAAO,IAAI,YAAY,aAAa,MAAM,SAAS;MAClD,OAAO;MACP,QAAQ;MACR,UAAU,MAAM;MAChB,CAAC;AAIH,YAAO,IAAI,YAAY,eAAe,MAAM,SAAS,WAAW,MAAM,SAAS;MAC9E,OAAO;MACP,QAAQ;MACR,UAAU,MAAM;MAChB,CAAC;;AAGH,QAAI,OAAO,OAAO,cAAc,SAC/B,QAAO,IAAI,YAAY,WAAW,0BAA0B;KAC3D,QAAQ;KACR,UAAU,MAAM;KAChB,CAAC;IAGH,MAAM,aAAa,OAAO,OAAO,OAAO,UAAU,SAAS;IAC3D,MAAM,YAAY,OAAO,OAAO,OAAO,KAAK,SAAS;IAGrD,MAAM,aAAa,OAAO,OAAO,OAAO;IACxC,MAAM,OACL,cAAc,WAAW,SAAS,KAAK,GACpC,mBAAmB,WAAW,GAC7B,cAAc;IAEnB,MAAM,cAAc,QAAQ,SAAS,OAClC,OAAO,OAAO,OAAO,OACnB,MAAM,OAAO,OAAO,OAAO,OAAO,KAAK,GACxC,OACD;IAEH,MAAM,cAAc,gBACnB,QAAQ,SAAS,SACjB,OAAO,OAAO,OAAO,QACrB;AAED,WAAO;KACN,UAAU,OAAO,OAAO,OAAO;KAC/B,SAAS,OAAO,OAAO,OAAO,SAAS,UAAU;KACjD,QAAQ,OAAO,OAAO,OAAO;KAC7B,SAAS;KACT,OAAO,SAAS,OAAO,OAAO,OAAO,MAAM;KAC3C;KACA,qBAAsB,OAAO,OAAO,OAAO,uBAC1C;KACU;KACX,MAAM;KACN,SAAS;KACT;KAEF,CACD;;AAGF,SAAO,EACN,SAAS,SACT;;CAEF,MAAM,iBACL,SAC4D;EAC5D,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAY;AACxE,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,WAAW;AAEvB,MAAI,QAAQ,SAAS,oBACpB,OAAM,KAAK,uBAAuB;AAEnC,MAAI,QAAQ,SAAS,UACpB,OAAM,KAAK,MAAM;AAElB,MAAI,QAAQ,SAAS,KACpB,OAAM,KAAK,OAAO;AAEnB,MAAI,QAAQ,SAAS,QACpB,OAAM,KAAK,UAAU;EAGtB,MAAM,WAAW,MAAM,MAAKA,OAAQ,aAAa,iBAChD;GACC,OAAO,QAAQ;GACf,YAAY,QAAQ,QAChB,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM,QAAQ;IAAM,QAAQ,QAAQ;IAAQ,CAAC,EAAE,OAC7E;GACH,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,UAAU,EACT,OACA;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAyBD,SAAO;GACN,SAxBe,SAAS,SAAS,QAAQ,KACxC,YAA4C;IAC5C,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU;IACnC,QAAQ,OAAO;IACf,SAAS,OAAO,UAAU;IAC1B,OAAO,SAAS,OAAO,MAAM;IAC7B,MAAM,OAAO;IACb,qBAAsB,OAAO,uBAC5B;IACD,WAAW,OAAO,KAAK;IACvB,MAAO,QAAQ,SAAS,OACrB,OAAO,OACL,MAAM,OAAO,OAAO,KAAK,GAC1B,OACD;IACH,SAAS,gBACR,QAAQ,SAAS,SACjB,OAAO,QACP;IACD,EACD;GAIA,QAAQ,SAAS,SAAS,gBAAgB,SAAS,SAAS,SAAS,cAAc,GAAG;GACtF,aAAa,SAAS,SAAS,kBAAkB;GACjD;;CAEF,MAAM,UACL,SAC4C;EAC5C,MAAM,QAAQ;GAAC;GAAS;GAAe;GAAU;GAAW;GAAa;GAAU;EACnF,MAAM,WAAW,QAAQ,YAAY;EAErC,MAAM,WAAW,MAAM,MAAKA,OAAQ,aAAa,iBAChD;GACC,OAAO,QAAQ;GACf,YAAY,oBAAoB,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM;IAAU,QAAQ,QAAQ;IAAQ,CAAC,EAAE,KAAK;GAC7G,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,UAAU,EACT,OACA;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,SAAS,SAAS,SAAS,QAAQ,KACjC,YAAiC;IACjC,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU;IACnC,QAAQ,OAAO;IACf,OAAO,SAAS,OAAO,MAAM;IAC7B,MAAM,OAAO;IACb,SAAS,OAAO,SAAS,UAAU;IACnC,EACD;GACD,QAAQ,SAAS,SAAS,gBAAgB,SAAS,SAAS,SAAS,cAAc,GAAG;GACtF,aAAa,SAAS,SAAS,kBAAkB;GACjD;;CAGF,MAAM,WACL,SAC6C;EAC7C,MAAM,WAAW,QAAQ,YAAY;EACrC,MAAM,SAAS,MAAM,MAAKA,OAAQ,aAAa,WAC9C;GACC,OAAO,QAAQ;GACf,WAAW,MAAM,KAAK,IAAI,YAAY;IAAE,MAAM;IAAU,QAAQ,QAAQ;IAAQ,CAAC,EAAE;GACnF,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,EACN,SAAS;GACR,SAAS,OAAO,SAAS,SAAS,SAAS,UAAU,IAAI;GACzD,UAAU,OAAO,SAAS,SAAS,YAAY;GAC/C,aAAa,OAAO,SAAS,SAAS,aAAa,UAAU,IAAI;GACjE,gBAAgB,OAAO,SAAS,SAAS,gBAAgB,UAAU,IAAI;GACvE,EACD;;CAGF,MAAM,gBACL,SACkD;EAClD,MAAM,YACL,MAAM,KAAK,IAAI,YAAY;GAAE,MAAM,QAAQ;GAAU,QAAQ,QAAQ;GAAQ,CAAC,EAC7E;EAEF,IAAI;AACJ,MAAI;AACH,IAAC,CAAE,YAAa,MAAM,MAAKA,OAAQ,aAAa,YAC/C,EACC,UACA,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;WACO,OAAO;AAEf,OAAI,QAAQ,QAAQ,QACnB,OAAM;AAEP,UAAO,EAAE,cAAc,MAAM;;AAG9B,MAAI,CAAC,SAAS,SACb,QAAO,EAAE,cAAc,MAAM;AAG9B,SAAO,EACN,cAAc;GACb,IAAI,SAAS,SAAS,MAAM;GAC5B,UAAU,SAAS,SAAS,YAAY;GACxC,MAAM,SAAS,SAAS,QAAQ;GAChC,QAAQ,SAAS,SAAS,UAAU;GACpC,aAAa,SAAS,SAAS,eAAe;GAC9C,SAAS,SAAS,SAAS,WAAW;GACtC,EACD;;CAGF,MAAM,aACL,SAC+C;EAC/C,MAAM,SAAS,MAAM,MAAKA,OAAQ,aAAa,aAC9C;GACC,OAAO,QAAQ;GACf,WAAW,QAAQ,SAAS,WAAW,QAAQ,OAAO,GAAG;GACzD,UAAU,QAAQ;GAClB,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,aAAa,CAAC,CAAC,OAAO,SAAS;GAC/B,QAAQ,OAAO,SAAS,gBAAgB,SAAS,OAAO,SAAS,cAAc,GAAG;GAClF,UAAU,OAAO,SAAS,SAAS,KAAK,aAAa;IACpD,SAAS,QAAQ,SAAS,UAAU,IAAI;IACxC,UAAU,QAAQ;IAClB,aAAa,QAAQ,aAAa,UAAU,IAAI;IAChD,gBAAgB,QAAQ,gBAAgB,UAAU,IAAI;IACtD,EAAE;GACH;;CAEF,MAAM,eACL,SACqD;AACrD,MAAI;GACH,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,cAAc,eACrD;IACC,QAAQ,QAAQ;IAChB,UAAU,EACT,OAAO,yBAAyB,QAAQ,QAAQ,EAChD;IACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,OAAI,CAAC,SAAS,YACb,OAAM,IAAI,iBAAiB,YAAY,QAAQ,OAAO;AAGvD,UAAO,cACN,6BAA6B,SAAS,aAAa,EAAE,SAAS,QAAQ,SAAS,CAAC,EAChF,QAAQ,eACF,oBAAoB,OAAO,SAAS,YAAa,CACvD;WACO,OAAO;AACf,OAAI,iBAAiB,YAAY,MAAM,SAAS,eAAe,eAAe,WAC7E,OAAM,IAAI,iBAAiB,YAAY,QAAQ,QAAQ,EAAE,OAAO,OAAO,CAAC;AAEzE,SAAM;;;CAGR,MAAM,mBACL,SACqD;EACrD,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,4BAA4B,mBACnE;GACC,aAAa,EACZ,KAAK,EACJ,OAAO,QAAQ,aACf,EACD;GACD,YAAY,QAAQ,WAAW,KAAK,eAAe;IAClD,KAAK,EACJ,OAAO,WAAW,UAAU,EAC5B;IACD,WAAW,EACV,WAAW,QACX;IACD,EAAE;GACH,UAAU,EACT,OAAO,yBAAyB,QAAQ,QAAQ,EAChD;GACD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,cACN,6BAA6B,SAAS,aAAc,EAAE,SAAS,QAAQ,SAAS,CAAC,EACjF,QAAQ,eACF,oBAAoB,OAAO,SAAS,YAAa,CACvD;;CAEF,MAAM,oBACL,SAC6D;EAE7D,MAAM,QAAQ,yBAAyB,QAAQ,SAAS,eAAe;AACvE,MAAI,QAAQ,SAAS,eACpB,OAAM,KAAK,kBAAkB;AAG9B,MAAI,EAAE,QAAQ,uBAAuB,YACpC,OAAM,QAAQ,YAAY,wBAAwB,EAAE,QAAQ,MAAM,CAAC;EAMpE,MAAM,iBACL,QAAQ,mBACP,QAAQ,uBAAuB,aAC7B,oCAAoC,QAAQ,YAAY,GACxD,QAAQ,YAAY,SAAS,CAAC,QAAQ,SAAS,WAAW;EAE9D,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,4BAA4B,oBACnE;GACC,aACC,QAAQ,uBAAuB,aAC5B,EACA,KAAK,EACJ,OAAO,QAAQ,aACf,EACD,GACA,6BAA6B,QAAQ,YAAY;GACrD,UAAU,EACT,OACA;GACD;GACA,QACC,QAAQ,kBAAkB,QACvB,6CAA6C,WAC7C,6CAA6C;GACjD,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO,cACN,qCAAqC,UAAU,EAAE,SAAS,QAAQ,SAAS,CAAC,EAC5E,QAAQ,eACF,4BAA4B,OAAO,SAAS,CAClD;;CAEF,MAAM,qBACL,SACuD;AAUvD,SAAO,EACN,oBAVgB,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EACT,OAAO,CAAC,sBAAsB,EAC9B,EACD,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAG4B,SAAS,OAAO,mBAAmB,UAAU,IAAI,IAC7E;;CAGF,MAAM,kBACL,SACoD;EAQpD,MAAM,kBAPW,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EAAE,OAAO,CAAC,kBAAkB,EAAE,EACxC,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAE+B,SAAS,OAAO;AAChD,MAAI,CAAC,eACJ,OAAM,IAAI,MAAM,wCAAwC;EAGzD,MAAM,eAAwC,EAAE,GAAG,eAAe,cAAc;EAChF,MAAM,aAA4C,EAAE;AACpD,MAAI,eAAe,WAClB,MAAK,MAAM,CAAC,KAAK,UAAU,OAAO,QAAQ,eAAe,WAAW,CACnE,YAAW,OAAO,SAAS;AAI7B,SAAO,EACN,gBAAgB;GACf,iBAAiB,eAAe,iBAAiB,UAAU,IAAK;GAChE;GACA;GACA,EACD;;CAGF,MAAM,sBACL,SACwD;EAwBxD,MAAM,SAvBW,MAAM,MAAKA,OAAQ,cAAc,SACjD,EACC,UAAU,EACT,OAAO;GACN;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,EACD,EACD,EACD,EAAE,OAAO,SAAS,QAAQ,CAC1B,EAEsB,SAAS;EAChC,MAAM,cAAc,OAAO;AAC3B,MAAI,CAAC,YACJ,OAAM,IAAI,MAAM,qCAAqC;EAGtD,MAAM,UAAU,OAAO,OAAO,UAC3B,OAAO,MAAM,MAAM,QAAQ,GAAG,MAAO,KAAK,OAAO,MAAM,MAAM,SAAS,KAAK,IAAU,GACrF,YAAY,wBACX,OAAO,YAAY,sBAAsB,GACxC;AAEL,SAAO,EACN,aAAa;GACZ,oBAAoB,YAAY,SAAS,UAAU,IAAK;GACxD,OAAO,YAAY,OAAO,UAAU,IAAK;GACzC,iBAAiB,YAAY,iBAAiB,UAAU,IAAK;GAC7D,mBAAmB,YAAY,mBAAmB,UAAU,IAAK;GACjE,uBAAuB,QAAQ,UAAU;GACzC,UAAU,YAAY,YAAY;GAClC,wBAAwB,YAAY,wBAAwB,UAAU,IAAK;GAC3E,4BACC,YAAY,4BAA4B,UAAU,IAAK;GACxD,wBAAwB,YAAY,wBAAwB,UAAU,IAAK;GAC3E,iCACC,YAAY,iCAAiC,UAAU,IAAK;GAC7D,YAAY;IACX,iBAAiB,YAAY,YAAY,iBAAiB,UAAU,IAAK;IACzE,wBACC,YAAY,YAAY,wBAAwB,UAAU,IAAK;IAChE,mBACC,YAAY,YAAY,mBAAmB,UAAU,IAAK;IAC3D,0BACC,YAAY,YAAY,0BAA0B,UAAU,IAAK;IAClE,4BACC,YAAY,YAAY,4BAA4B,UAAU,IAAK;IACpE,8BACC,YAAY,YAAY,8BAA8B,UAAU,IAAK;IACtE;GACD,aAAa;IACZ,2BACC,YAAY,aAAa,2BAA2B,UAAU,IAAK;IACpE,sBACC,YAAY,aAAa,sBAAsB,UAAU,IAAK;IAC/D;GACD,cAAc;IACb,SAAS,YAAY,cAAc,SAAS,UAAU,IAAK;IAC3D,qBACC,YAAY,cAAc,qBAAqB,UAAU,IAAK;IAC/D,2BACC,YAAY,cAAc,2BAA2B,UAAU,IAAK;IACrE,0BACC,YAAY,cAAc,0BAA0B,UAAU,IAAK;IACpE,0BACC,YAAY,cAAc,4BAA6B;IACxD;GACD,EACD;;CAGF,MAAM,kBACL,SACoD;AACpD,SAAO,MAAKA,OAAQ,kBAAkB,QAAQ;;CAG/C,MAAM,iBACL,SAC4D;EAC5D,MAAM,QAAQ,yBAAyB,QAAQ,QAAQ;EAEvD,MAAM,SAAS,QAAQ,SACpB,MAAM,yBAAyB,KAAK,KAAK,QAAQ,QAAQ,QAAQ,OAAO,GACxE;EACH,MAAM,aAAa,kBAAkB,QAAQ;AAC7C,2BAAyB,QAAQ,WAAW;EAE5C,MAAM,OAAO,MAAKA,OAAQ,cAAc,iBACvC;GACC,UAAU,EAAE,OAAO;GACnB,QAAQ,UAAU,wBAAwB,OAAO;GAIjD,SAAS,mBAAmB,YAAY,WAAW,QAAQ,EAAE;GAC7D,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,MAAM,eAA4D,EAAE;EACpE,IAAI,cAA6B;EACjC,IAAI,YAA2B;EAC/B,IAAI,WAA0B;EAC9B,IAAI;EACJ,IAAI,mBAAmB;AAEvB,aAAW,MAAM,SAAS,KAAK,WAAW;AACzC,OAAI,MAAM,WAAW,OACpB,YAAW,SAAS,MAAM,UAAU,OAAO;AAE5C,OAAI,MAAM,YACT,KAAI,aAAa,UAAU,WAAW,MACrC,oBAAmB;QACb;AACN,oBAAgB;AAChB,gBAAY;AACZ,iBAAa,KACZ,6BAA6B,MAAM,aAAa,EAAE,SAAS,QAAQ,SAAS,CAAC,CAC7E;;AAGH,OAAI,MAAM,IACT,OAAM,MAAM;;EAMd,MAAM,cACL,oBACA,KAAK,WAAW,eAAe,cAC/B,KAAK,WAAW,eAAe;AAEhC,SAAO;GACN;GACA;GACA;GAIA,WAAW,mBAAmB,YAAY,cAAe,YAAY,YAAa;GAClF;;CAGF,MAAM,WACL,SAC6C;EAC7C,MAAM,aAAa,kBAAkB,QAAQ;EAC7C,MAAM,OAAO,MAAKA,OAAQ,cAAc,WACvC;GACC,UAAU,EACT,OAAO;IACN;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA,EACD;GACD,QAAQ,QAAQ,SACb,kBAAkB,MAAM,mBAAmB,KAAK,KAAK,QAAQ,QAAQ,QAAQ,OAAO,CAAC,GACrF;GAIH,SAAS,mBAAmB,YAAY,WAAW,QAAQ,EAAE;GAC7D,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,MAAM,SAAsC,EAAE;EAC9C,IAAI,cAA6B;EACjC,IAAI,YAA2B;EAC/B,IAAI,WAA0B;EAC9B,IAAI;EACJ,IAAI,mBAAmB;AAEvB,aAAW,MAAM,SAAS,KAAK,WAAW;AACzC,OAAI,MAAM,WAAW,OACpB,YAAW,SAAS,MAAM,UAAU,OAAO;AAE5C,OAAI,MAAM,MACT,KAAI,OAAO,UAAU,WAAW,MAC/B,oBAAmB;QACb;AACN,oBAAgB;AAChB,gBAAY;IACZ,MAAM,QAAQ,MAAM;AACpB,WAAO,KAAK;KACX,WAAW,oBAAoB,MAAM,UAAW;KAChD,QAAQ,MAAM;KACd,QAAQ,oBAAoB,MAAM,OAAQ;KAC1C,WAAW,mBAAmB,MAAM,UAAW;KAC/C,KAAK,MAAM,UAAU,SAAS,IAAI,YAAY;KAC9C,MAAM,MAAM,OAAQ,MAAM,OAAO,MAAM,KAAK,GAA+B;KAC3E,YAAY,MAAM,YAAY,UAAU,IAAI;KAC5C,mBAAmB,MAAM;KACzB,YAAY,MAAM;KAClB,CAAC;;AAGJ,OAAI,MAAM,IACT,OAAM,MAAM;;EAMd,MAAM,cACL,oBACA,KAAK,WAAW,eAAe,cAC/B,KAAK,WAAW,eAAe;AAEhC,SAAO;GACN;GACA;GACA;GAIA,WAAW,mBAAmB,YAAY,cAAe,YAAY,YAAa;GAClF;;CAGF,MAAM,uBACL,SACgD;EAChD,MAAM,eAAe,WAAW,QAAQ,MAAM;EAI9C,MAAM,eACL,QAAQ,gBAAgB,oBACrBC,OAAI,YAAY,CAAC,UAAU,aAAa,CAAC,SAAS,GAClD;EAEJ,MAAM,EAAE,aAAa,MAAM,MAAKD,OAAQ,6BAA6B,gBACpE;GACC,SAAS;IACR,MAAM,QAAQ;IACd,OAAO;IACP;GACD,WAAW;IACV,KAAK,EACJ,OAAO,WAAW,QAAQ,UAAU,EACpC;IACD,WAAW,EACV,WAAW,QACX;IACD;GACD,SAAS,QAAQ;GACjB,MAAM,EAAE;GACR,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,SAAO;GACN,SAAS,SAAS,WAAW;GAC7B,QAAQ,SAAS,SAAS,CAAC,SAAS,OAAO,GAAG,EAAE;GAChD;;CAGF,MAAM,uBACL,SACyD;AAUzD,SAAO,EACN,MAAM,EACL,OATA,MAAM,MAAKA,OAAQ,YAAY,kBAC9B,EACC,SAAS,QAAQ,SACjB,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB,EACA,SAAS,QAAQ,QAAQ,MAI1B,EACD;;CAGF,MAAM,0BACL,SAC4D;AAC5D,MAAI;GACH,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,YAAY,WACnD,EAAE,MAAM,QAAQ,MAAM,EACtB,EAAE,OAAO,QAAQ,QAAQ,CACzB;AAED,UAAO,EAAE,SAAS,SAAS,QAAQ,iBAAiB,MAAM;WAClD,OAAO;AACf,OAAI,4BAA4B,MAAM,CACrC,QAAO,EAAE,SAAS,MAAM;AAGzB,SAAM;;;CAIR,MAAM,gBACL,SACkD;EAClD,MAAM,qBACL,MAAM,KAAK,IAAI,eAAe;GAAE,SAAS,QAAQ;GAAW,QAAQ,QAAQ;GAAQ,CAAC,EACpF;EACF,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,mBAAmB,YAC1D;GACC,WAAW;GACX,YAAY,QAAQ;GACpB,MAAM,QAAQ;GACd,EACD,EAAE,OAAO,QAAQ,QAAQ,CACzB;EAED,IAAI,aAA0D;AAE9D,UAAQ,SAAS,UAAU,YAA3B;GACC,KAAK,8BAA8B;AAClC,iBAAa;AACb;GACD,KAAK,8BAA8B;AAClC,iBAAa;AACb;GACD,KAAK,8BAA8B;AAClC,iBAAa;AACb;;AAGF,SAAO,EACN,UAAU;GACT,WAAW,oBAAoB,kBAAkB;GACjD,YAAY,QAAQ;GACpB,MAAM,SAAS,UAAU;GACzB;GACA,SAAS,SAAS,UAAU,WAAW;GACvC,gBACC,SAAS,UAAU,gBAAgB,KAAK,EAAE,mBAAmB;IAC5D,WAAW;IACX,aACC,YAAY,KAAK,eAAe;AAC/B,aAAQ,YAAR;MACC,KAAK,QAAQ,KACZ,QAAO;MACR,KAAK,QAAQ,KACZ,QAAO;MACR,KAAK,QAAQ,MACZ,QAAO;MACR,KAAK,QAAQ,IACZ,QAAO;MACR,QACC,QAAO;;MAER,IAAI,EAAE;IACT,EAAE,IAAI,EAAE;GACV,YACC,SAAS,UAAU,YAAY,KAAK,UAAU,2BAA2B,MAAM,CAAC,IAAI,EAAE;GACvF,SAAS,SAAS,UAAU,SAAS,KAAK,QAAQ,2BAA2B,IAAI,CAAC,IAAI,EAAE;GACxF,EACD;;CAGF,MAAM,mBACL,SACqD;AAGrD,SAAO,WACN,QAAQ,QACP,KAAK,MAAM,KAAK,CAAC,kBAAkB,EAAE,YAAY;GAChD,MAAM,EAAE,aAAa,MAAM,MAAKA,OAAQ,cAAc,eAAe,EAAE,CAAC;AACxE,OAAI,CAAC,SAAS,QACb,OAAM,IAAI,MAAM,6CAA6C;AAE9D,UAAO,EACN,iBAAiB,SAAS,SAC1B;IACA,CACF,EACD,SAAS,OACT;;CAGF,2BAA2B;EAC1B,MAAM,SAAS,MAAKA;AACpB,SAAO,eAAe,uBACrB,iBACA,SACA,MACC;GACD,MAAM,WAAW,gBAAgB,UAAU;AAG3C,OAAI,CAAC,SAAS,OACb,UAAS,SAAS;GAEnB,MAAM,kBAAkB,iCAAiC,SAAS;GAClE,MAAM,iBACL,CAAC,QAAQ,wBACR,SAAS,QAAQ,UAAU,QAAQ,SAAS,QAAQ,WAAW;GAEjE,IAAI;AACJ,OAAI;AAmBH,gBAlBe,MAAM,OAAO,4BAA4B,oBAAoB;KAC3E,aAAa;KACb;KAEA,QAAQ,QAAQ,sBACb,6CAA6C,WAC7C,6CAA6C;KAChD,UAAU,EACT,OAAO;MACN;MACA;MACA;MACA;MACA;MACA;MACA,EACD;KACD,CAAC,EACgB;YACV,OAAO;AAEf,QAAI,iBAAiB,SAAS,MAAM,QACnC,OAAM,IAAI,gBAAgB,mBAAmB,MAAM,QAAQ,EAAE,EAAE,OAAO,OAAO,CAAC;AAE/E,UAAM;;AAGP,OACC,CAAC,QAAQ,uBACT,SAAS,aAAa,SAAS,UAC/B,CAAC,SAAS,YAAY,QAAQ,OAAO,SACpC;IACD,MAAM,iBAAiB,SAAS,YAAY,QAAQ,OAAO,QACxD,wBAAwB,SAAS,YAAY,QAAQ,OAAO,MAAM,GAClE;AAEH,UAAM,IAAI,gBAAgB,kCADL,gBAAgB,WAAW,wBAC4B,EAC3E,gBACA,CAAC;;AAGH,OAAI,CAAC,SAAS,aAAa,YAC1B,OAAM,IAAI,MAAM,+DAA+D;AAGhF,gCAA6B,iBAAiB,SAAS,YAAY,aAAa,QAAQ;AACxF,SAAM,yDAAyD;IAC9D;IACA;IACA,OAAO,SAAS,YAAY,SAAS;IACrC,yBAAyB;IACzB,uBAAuB,CAAC,CAAC,QAAQ;IACjC;IACA,CAAC;AAEF,UAAO,MAAM,MAAM;;;;AAKtB,SAAS,mBAAmB,YAAgC,OAA6B;AACxF,QAAO;EACN;EACA,UAAU,WAAW,aAAa,SAAS,aAAa,SAAS;EACjE,OAAO,WAAW,QAAQ,WAAW,WAAW,MAAM,GAAG;EACzD,QAAQ,WAAW,SAAS,WAAW,WAAW,OAAO,GAAG;EAC5D;;AAGF,SAAS,yBACR,SACA,SAAS,IACE;CACX,MAAM,QAAQ;EAAC;EAAU;EAAsB;EAAc;EAAiB;AAE9E,KAAI,SAAS,YACZ,OAAM,KACL,sBACA,2BACA,0BACA,mBACA;AAEF,KAAI,SAAS,IACZ,OAAM,KAAK,kBAAkB;AAE9B,KAAI,SAAS,eACZ,OAAM,KAAK,kBAAkB;AAE9B,KAAI,SAAS,QACZ,OAAM,KAAK,UAAU;AAEtB,KAAI,SAAS,OACZ,OAAM,KAAK,SAAS;AAErB,KAAI,SAAS,aAAa;AAEzB,QAAM,KAAK,sCAAsC;AACjD,QAAM,KAAK,oCAAoC;;AAGhD,QAAO,SAAS,MAAM,KAAK,SAAS,SAAS,KAAK,GAAG;;AAGtD,SAAS,cACR,QACA,SACA,cACS;AACT,KAAI,CAAC,SAAS,UACb,QAAO;AAGR,QAAO;EACN,GAAG;EACH,WAAW,cAAc;EACzB;;AAGF,SAAS,gBACR,SACA,SAC4C;AAC5C,KAAI,CAAC,QAAS,QAAO;AACrB,KAAI,YAAY,OAAW,QAAO;AAClC,QAAO;EACN,QACC,QAAQ,WAAW,SACf,MAAM,OAAO,QAAQ,OAAO,GAC7B;EACJ,QACC,QAAQ,WAAW,SACf,MAAM,OAAO,QAAQ,OAAO,GAC7B;EACJ;;AAGF,SAAS,SAAS,OAAoE;AACrF,KAAI,CAAC,MACJ,QAAO;AAER,KAAI,MAAM,SAAS,gBAAgB,UAClC,QAAO;EACN,OAAO;EACP,WAAW;EACX;AAEF,KAAI,MAAM,SAAS,gBAAgB,QAClC,QAAO;EACN,cAAc,MAAM;EACpB,OAAO;EACP;AAEF,KAAI,MAAM,SAAS,gBAAgB,OAClC,QAAO;EACN,OAAO;EACP,aAAa,MAAM;EACnB;AAGF,KAAI,MAAM,SAAS,gBAAgB,OAClC,QAAO;EACN,OAAO;EACP,QAAQ,EACP,sBAAsB,MAAM,SAAS,UAAU,EAC/C;EACD;AAGF,KAAI,MAAM,SAAS,gBAAgB,kBAClC,QAAO;EACN,OAAO;EACP,uBAAuB;GACtB,cAAc,MAAM,SAAS,UAAU;GACvC,OAAO,MAAM;GACb;EACD;AAGF,OAAM,IAAI,MACT,sBAAsB,KAAK,UAAU,QAAQ,IAAI,MAAO,OAAO,MAAM,WAAW,EAAE,UAAU,GAAG,EAAG,GAClG;;AAGF,SAAS,wBAAwB,OAA0D;CAC1F,MAAM,UAAU,MAAM,eAAe;CACrC,MAAM,UAAU,MAAM,WAAW,OAAO,OAAO,MAAM,QAAQ,GAAG;CAChE,MAAM,UAAU,MAAM;AAEtB,SAAQ,SAAS,WAAjB;EACC,KAAK,SAAS;GACb,MAAM,QAAQ,QAAQ;GACtB,MAAM,cAAc,MAAM;AAC1B,UAAO;IACN,OAAO;IACP,SAAS,uBAAuB;KAC/B;KACA,UAAU,MAAM;KAChB,WAAW,OAAO,MAAM,aAAa,GAAG;KACxC,aAAa,cACV;MACA,YACC,YAAY,cAAc,OAAO,OAAO,YAAY,WAAW,GAAG;MACnE,cAAc,YAAY;MAC1B,OACC,YAAY,OAAO,cAAc,aAC9B,YAAY,MAAM,WAClB;MACJ,GACA;KACH,CAAC;IACF;IACA,WAAW,eAAe,MAAM;IAChC;;EAGF,KAAK,YACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,WAAW;IACV,MAAM,aAAa,MAAM,KAAK;IAC9B,MAAM,OAAO,QAAQ,UAAU,QAAQ,GAAG;IAC1C,SAAS,OAAO,QAAQ,UAAU,WAAW,GAAG;IAChD;GACD;EAEF,KAAK,uBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,sBAAsB;IACrB,UAAU,QAAQ,qBAAqB,YAAY;IACnD,MAAM,aAAa,QAAQ,qBAAqB,KAAK;IACrD;GACD;EAEF,KAAK,oBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,mBAAmB;IAClB,cAAc,QAAQ,kBAAkB,gBAAgB;IACxD,MAAM,aAAa,QAAQ,kBAAkB,KAAK;IAClD;GACD;EAEF,KAAK,sBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,qBAAqB;IACpB,MAAM,aAAa,QAAQ,oBAAoB,KAAK;IACpD,WAAW,QAAQ,oBAAoB;IACvC,QAAQ,QAAQ,oBAAoB;IACpC;GACD;EAEF,KAAK,aACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,YAAY;IACX,OAAO,QAAQ,WAAW;IAC1B,WAAW,QAAQ,WAAW;IAC9B;GACD;EAEF,KAAK,oBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,mBAAmB;IAClB,MAAM,aAAa,MAAM,KAAK;IAC9B,UAAU,QAAQ,kBAAkB;IACpC,SAAS,QAAQ,kBAAkB;IACnC;GACD;EAEF,KAAK,mBACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,kBAAkB;IACjB,MAAM,aAAa,MAAM,KAAK;IAC9B,SAAS,QAAQ,iBAAiB;IAClC;GACD;EAEF,KAAK,WACJ,QAAO;GACN,OAAO;GACP;GACA;GACA,eAAe;IACd,MAAM,aAAa,MAAM,KAAK;IAC9B,UAAU,QAAQ;IAClB;GACD;EAEF,QACC,QAAO;GACN,OAAO;GACP;GACA;GACA,SAAS;GACT;;;AAIJ,SAAS,eAAe,OAAgD;AACvE,QAAO;EACN,WAAW,OAAO,MAAM,aAAa,GAAG;EACxC,UAAU,EAAE,GAAG,MAAM,UAAU;EAC/B,aAAa,MAAM,cAChB;GACA,WACC,MAAM,YAAY,aAAa,OAAO,OAAO,MAAM,YAAY,UAAU,GAAG;GAC7E,YACC,MAAM,YAAY,cAAc,OAAO,OAAO,MAAM,YAAY,WAAW,GAAG;GAC/E,cAAc,MAAM,YAAY;GAChC,cAAc,MAAM,YAAY;GAChC,OACC,MAAM,YAAY,OAAO,cAAc,aACpC,MAAM,YAAY,MAAM,WACxB,MAAM,YAAY,OAAO,cAAc,QACtC,SAAS,MAAM,YAAY,MAAM,IAAI,GACrC;GACL,GACA;EACH;;AAGF,SAAS,aACR,MAMS;AACT,KAAI,QAAQ,KACX,QAAO;CAER,MAAM,OAAO,8CAA8C;AAC3D,KAAI,CAAC,QAAQ,KAAK,SAAS,WAAW,CACrC,QAAO;AAER,QAAO,KACL,MAAM,IAAI,CACV,KAAK,SAAS,KAAK,OAAO,EAAE,GAAG,KAAK,MAAM,EAAE,CAAC,aAAa,CAAC,CAC3D,KAAK,GAAG;;AAGX,SAAS,eACR,WACoD;AACpD,KAAI,aAAa,KAChB,QAAO;AAER,SAAQ,WAAR;EACC,KAAK,0BAA0B,QAC9B,QAAO;EACR,KAAK,0BAA0B,QAC9B,QAAO;EACR,KAAK,0BAA0B;EAC/B,KAAK,0BAA0B,qBAC9B,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,oBACR,OAC+C;AAC/C,KAAI,SAAS,KACZ,QAAO;AAER,SAAQ,OAAR;EACC,KAAK,+BAA+B,OACnC,QAAO;EACR,KAAK,+BAA+B,eACnC,QAAO;EACR,KAAK,+BAA+B,QACnC,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,qBACR,OAC4F;AAC5F,KAAI,SAAS,KACZ,QAAO;AAER,SAAQ,OAAR;EACC,KAAK,gCAAgC,aACpC,QAAO;EACR,KAAK,gCAAgC,cACpC,QAAO;EACR,KAAK,gCAAgC,eACpC,QAAO;EACR,KAAK,gCAAgC,kBACpC,QAAO;EACR,KAAK,gCAAgC,QACpC,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAS,gCACR,MACyD;AACzD,KAAI,QAAQ,KACX,QAAO;AAER,SAAQ,MAAR;EACC,KAAK,sDAAsD,wCAC1D,QAAO;EACR,KAAK,sDAAsD,eAC1D,QAAO;EACR,KAAK,sDAAsD,8BAC1D,QAAO;EACR,KAAK,sDAAsD,4BAC1D,QAAO;EACR,KAAK,sDAAsD,SAC1D,QAAO;EACR,KAAK,sDAAsD,iBAC1D,QAAO;EACR,QAEC,QAAO;;;AAIV,SAAgB,wBAAwB,EACvC,WAG4C;AAC5C,KAAI,CAAC,QACJ,QAAO;CAGR,MAAM,iBAAiB,QAAQ,eAAe,KAAK,WAAyC;AAC3F,SAAO;GACN,UAAU,OAAO;GACjB,YAAY,oBAAoB,OAAO,WAAW;GAClD,cAAc,OAAO,cAAc,UAAU,IAAI;GACjD,aAAa,OAAO,eAAe;GACnC,YAAY,SAAS,OAAO,WAAW;GACvC,aAAa,qBAAqB,OAAO,YAAY;GACrD,eAAe,OAAO,eAAe,UAAU,IAAI;GACnD,cAAc,OAAO,gBAAgB;GACrC,aAAa,SAAS,OAAO,YAAY;GACzC,aAAa,eAAe,OAAO,YAAY;GAC/C;GACA;AAEF,QAAO;EACN,KAAK,QAAQ,KAAK;EAElB,SAAS;EACT,QAAQ,QAAQ,QAAQ,UACrB;GACA,SAAS;GACT,OAAO;GACP,GACA;GACA,SAAS;GACT,OAAO,wBAAwB,QAAQ,OAAQ,MAAO;GACtD;EACH,SAAS;GACR,iBAAiB,QAAQ,SAAS,iBAAiB,UAAU;GAC7D,aAAa,QAAQ,SAAS,aAAa,UAAU;GACrD,eAAe,QAAQ,SAAS,eAAe,UAAU;GACzD,yBAAyB,QAAQ,SAAS,yBAAyB,UAAU;GAC7E;EACD,mBAAmB,QAAQ;EAG3B,WAAW,QAAQ,YAChB;GACA,UAAU,QAAQ,UAAU;GAC5B,YAAY,oBAAoB,QAAQ,UAAU,WAAW;GAC7D,cAAc,QAAQ,UAAU,cAAc,UAAU,IAAI;GAC5D,aAAa,QAAQ,UAAU,eAAe;GAC9C,YAAY,SAAS,QAAQ,UAAU,WAAW;GAClD,aAAa,qBAAqB,QAAQ,UAAU,YAAY;GAChE,eAAe,QAAQ,UAAU,eAAe,UAAU,IAAI;GAC9D,cAAc,QAAQ,UAAU,gBAAgB;GAChD,aAAa,SAAS,QAAQ,UAAU,YAAY;GACpD,aAAa,eAAe,QAAQ,UAAU,YAAY;GAC1D,GACA;EACH,cAAc,QAAQ,gBAAgB;EACtC,cAAc,QAAQ;EACtB,gBAAgB,QAAQ,gBAAgB,UAAU,IAAI;EACtD;EACA,2BAA2B,QAAQ,0BAA0B,KAC3D,WAAoD;AACpD,UAAO;IACN,MAAM,gCAAgC,OAAO,KAAK;IAElD,UAAU,OAAO;IACjB,SAAS,OAAO,SAAS,UAAU,IAAI;IACvC,QAAQ,OAAO,UAAU;IACzB;IAEF;EACD,qBAAqB,QAAQ,uBAAuB;EACpD;;AAGF,SAAgB,6BAGf,aACA,SAG4C;CAC5C,MAAM,UAAU,SAAS;CACzB,MAAM,cAAsC,EAAE;AAC9C,KAAI,SAAS,YACZ,aAAY,SAAS,gBAAgB,SAAS,WAAW;AACxD,MAAI,OAAO,YAAY,OAAO,WAC7B,aAAY,OAAO,YAAY,OAAO;GAEtC;CAGH,IAAI;AACJ,KAAI,SAAS,aAAa;EACzB,MAAM,KAAK,YAAY;AAEvB,MAAI,CAAC,GACJ,OAAM,IAAI,MAAM,8DAA8D;EAG/E,MAAM,WAAW,iCAAiC,GAAG;AACrD,oBAAkB;GACjB,SAAS,SAAS;GAClB,QAAQ,SAAS;GACjB,YAAY,SAAS;GACrB,UAAU,SAAS;GACnB,QAAQ,SAAS;GACjB,SAAS,SAAS;GAClB;;CAGF,MAAM,WAAW,SAAS,MAAM,YAAY,aAAa,KAAK,QAAQ;CAEtE,MAAM,UAAU,SAAS,UACtB,wBAAwB,EACxB,SAAS,YAAY,SACrB,CAAC,GACD;CAEH,MAAM,SAAyC,YAAY,SAAS,QAAQ,UACzE;EAAE,SAAS;EAAM,OAAO;EAAM,GAC9B;EACA,SAAS;EACT,OAAO,YAAY,SAAS,QAAQ,QACjC,wBAAwB,YAAY,QAAQ,OAAO,MAAM,GACzD;GACA,OAAO;GACP,SAAS;GACT,SAAS;GACT;EACH;CAEH,MAAM,SAA8C;EACnD,QAAQ,YAAY;EACpB,OAAO,YAAY,SAAS,OAAO,UAAU,IAAI;EACjD;EACS;EACT,aAAc,SAAS,cACpB,cACA;EACH,aAAa;EACb,KAAK;EACL,YAAY,YAAY,YAAY,KAAK,QAAQ,SAAS,IAAI,KAAK,MAAO,CAAC,IAAI,EAAE;EACjF,gBAAiB,SAAS,iBACtB,YAAY,gBAAgB,KAAK,YAAY;GAC9C,UAAU,OAAO;GACjB,SAAS,OAAO;GAChB,QAAQ,OAAO;GACf,EAAE,IAAI,EAAE,GACR;EACH,QAAS,SAAS,SACd,YAAY,QAAQ,OAAO,KAAK,WAAW;GAC5C,WAAW,oBAAoB,MAAM,UAAW;GAChD,QAAQ,MAAM;GACd,QAAQ,oBAAoB,MAAM,OAAQ;GAC1C,WAAW,MAAM;GACjB,KAAK,MAAM,UAAU,SAAS,IAAI,YAAY;GAC9C,MAAM,MAAM,OAAQ,MAAM,OAAO,MAAM,KAAK,GAA+B;GAC3E,EAAE,IAAI,EAAE,GACR;EACH;AAED,QAAO,OAAO,UACX;EACA,OAAO;EACP,aAAa;EACb,GACA;EACA,OAAO;EACP,mBAAmB;EACnB;;AAGJ,SAAgB,qCAGf,UACA,SAGoD;CACpD,MAAM,UAAU,SAAS;CACzB,MAAM,oBAAoB,6BAA6B,SAAS,aAAc,EAAE,SAAS,CAAC;CAE1F,MAAM,iBACL,SAAS,kBAAkB,SAAS,iBACjC,SAAS,eAAe,KAAK,YAAY;EACzC,eAAe,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EACtD,KAAK,GAAG,OAAO,SAAS,MACxB,EAAE;EACH,oBAAoB,OAAO,gBAAgB,EAAE,EAAE,KAAK,QAAQ,EAC3D,KAAK,GAAG,OAAO,SAAS,MACxB,EAAE;EACH,EAAE,GACF;AAEJ,KAAI,kBAAkB,UAAU,cAC/B,QAAO;EACN,OAAO;EACP,aAAa,kBAAkB;EAE9B;EACD;AAGF,QAAO;EACN,OAAO;EACP,mBAAmB,kBAAkB;EAEpC;EACD;;AAGF,SAAS,2BAA2B,MAAmD;CACtF,IAAI,YAA4C;AAEhD,KAAI,KAAK,cAAc,wBAAwB,UAC9C,aAAY;UACF,KAAK,cAAc,wBAAwB,QACrD,aAAY;AAGb,QAAO;EACN;EACA,MAAM,+BAA+B,KAAK,KAAM;EAChD;;AAGF,SAAS,+BAA+B,MAA2D;AAClG,SAAQ,KAAK,MAAb;EACC,KAAK,uBAAuB,aAC3B,QAAO,EAAE,OAAO,WAAW;EAC5B,KAAK,uBAAuB,QAC3B,QAAO,EAAE,OAAO,WAAW;EAC5B,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,GAC3B,QAAO,EAAE,OAAO,MAAM;EACvB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,IAC3B,QAAO,EAAE,OAAO,OAAO;EACxB,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,KAC3B,QAAO,EAAE,OAAO,QAAQ;EACzB,KAAK,uBAAuB,OAC3B,QAAO;GACN,OAAO;GACP,QAAQ,+BAA+B,KAAK,2BAA2B,GAAG;GAC1E;EACF,KAAK,uBAAuB,SAC3B,QAAO;GACN,OAAO;GACP,UAAU;IACT,UAAU,KAAK;IACf,gBAAgB,KAAK,2BAA2B,KAAK,MACpD,+BAA+B,EAAE,CACjC;IACD;GACD;EACF,KAAK,uBAAuB,eAC3B,QAAO;GACN,OAAO;GACP,OAAO,KAAK;GACZ;EACF,QACC,QAAO,EAAE,OAAO,WAAW"}
@@ -1,6 +1,6 @@
1
1
  import { AdvanceCheckpointRequest, AdvanceCheckpointResponse, AdvanceClockRequest, AdvanceClockResponse, GetStatusRequest, GetStatusResponse } from "./forking_service.mjs";
2
- import * as _protobuf_ts_runtime0 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc0 from "@protobuf-ts/runtime-rpc";
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: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
40
+ methods: _protobuf_ts_runtime_rpc6.MethodInfo<any, any>[];
41
41
  options: {
42
- [extensionName: string]: _protobuf_ts_runtime0.JsonValue;
42
+ [extensionName: string]: _protobuf_ts_runtime6.JsonValue;
43
43
  };
44
44
  constructor(_transport: RpcTransport);
45
45
  /**
@@ -1,6 +1,6 @@
1
1
  import { BatchGetObjectsRequest, BatchGetObjectsResponse, BatchGetTransactionsRequest, BatchGetTransactionsResponse, GetCheckpointRequest, GetCheckpointResponse, GetEpochRequest, GetEpochResponse, GetObjectRequest, GetObjectResponse, GetServiceInfoRequest, GetServiceInfoResponse, GetTransactionRequest, GetTransactionResponse, ListCheckpointsRequest, ListCheckpointsResponse, ListEventsRequest, ListEventsResponse, ListTransactionsRequest, ListTransactionsResponse } from "./ledger_service.mjs";
2
- import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc4 from "@protobuf-ts/runtime-rpc";
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, ServerStreamingCall, ServiceInfo, UnaryCall } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/ledger_service.client.d.ts
@@ -73,9 +73,9 @@ interface ILedgerServiceClient {
73
73
  declare class LedgerServiceClient implements ILedgerServiceClient, ServiceInfo {
74
74
  private readonly _transport;
75
75
  typeName: string;
76
- methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
76
+ methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
77
77
  options: {
78
- [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
78
+ [extensionName: string]: _protobuf_ts_runtime1.JsonValue;
79
79
  };
80
80
  constructor(_transport: RpcTransport);
81
81
  /**
@@ -1,6 +1,6 @@
1
1
  import { LookupNameRequest, LookupNameResponse, ReverseLookupNameRequest, ReverseLookupNameResponse } from "./name_service.mjs";
2
- import * as _protobuf_ts_runtime5 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc5 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime4 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc4 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/name_service.client.d.ts
@@ -23,9 +23,9 @@ interface INameServiceClient {
23
23
  declare class NameServiceClient implements INameServiceClient, ServiceInfo {
24
24
  private readonly _transport;
25
25
  typeName: string;
26
- methods: _protobuf_ts_runtime_rpc5.MethodInfo<any, any>[];
26
+ methods: _protobuf_ts_runtime_rpc4.MethodInfo<any, any>[];
27
27
  options: {
28
- [extensionName: string]: _protobuf_ts_runtime5.JsonValue;
28
+ [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
29
29
  };
30
30
  constructor(_transport: RpcTransport);
31
31
  /**
@@ -1,6 +1,6 @@
1
1
  import { VerifySignatureRequest, VerifySignatureResponse } from "./signature_verification_service.mjs";
2
- import * as _protobuf_ts_runtime1 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc1 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime5 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc5 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/signature_verification_service.client.d.ts
@@ -21,9 +21,9 @@ interface ISignatureVerificationServiceClient {
21
21
  declare class SignatureVerificationServiceClient implements ISignatureVerificationServiceClient, ServiceInfo {
22
22
  private readonly _transport;
23
23
  typeName: string;
24
- methods: _protobuf_ts_runtime_rpc1.MethodInfo<any, any>[];
24
+ methods: _protobuf_ts_runtime_rpc5.MethodInfo<any, any>[];
25
25
  options: {
26
- [extensionName: string]: _protobuf_ts_runtime1.JsonValue;
26
+ [extensionName: string]: _protobuf_ts_runtime5.JsonValue;
27
27
  };
28
28
  constructor(_transport: RpcTransport);
29
29
  /**
@@ -1,6 +1,6 @@
1
1
  import { GetBalanceRequest, GetBalanceResponse, GetCoinInfoRequest, GetCoinInfoResponse, ListBalancesRequest, ListBalancesResponse, ListDynamicFieldsRequest, ListDynamicFieldsResponse, ListOwnedObjectsRequest, ListOwnedObjectsResponse } from "./state_service.mjs";
2
- import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime3 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc3 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/state_service.client.d.ts
@@ -35,9 +35,9 @@ interface IStateServiceClient {
35
35
  declare class StateServiceClient implements IStateServiceClient, ServiceInfo {
36
36
  private readonly _transport;
37
37
  typeName: string;
38
- methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
38
+ methods: _protobuf_ts_runtime_rpc3.MethodInfo<any, any>[];
39
39
  options: {
40
- [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
40
+ [extensionName: string]: _protobuf_ts_runtime3.JsonValue;
41
41
  };
42
42
  constructor(_transport: RpcTransport);
43
43
  /**
@@ -1,6 +1,6 @@
1
1
  import { SubscribeCheckpointsRequest, SubscribeCheckpointsResponse, SubscribeEventsRequest, SubscribeEventsResponse, SubscribeTransactionsRequest, SubscribeTransactionsResponse } from "./subscription_service.mjs";
2
- import * as _protobuf_ts_runtime3 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc3 from "@protobuf-ts/runtime-rpc";
2
+ import * as _protobuf_ts_runtime2 from "@protobuf-ts/runtime";
3
+ import * as _protobuf_ts_runtime_rpc2 from "@protobuf-ts/runtime-rpc";
4
4
  import { RpcOptions, RpcTransport, ServerStreamingCall, ServiceInfo } from "@protobuf-ts/runtime-rpc";
5
5
 
6
6
  //#region src/grpc/proto/sui/rpc/v2/subscription_service.client.d.ts
@@ -100,9 +100,9 @@ interface ISubscriptionServiceClient {
100
100
  declare class SubscriptionServiceClient implements ISubscriptionServiceClient, ServiceInfo {
101
101
  private readonly _transport;
102
102
  typeName: string;
103
- methods: _protobuf_ts_runtime_rpc3.MethodInfo<any, any>[];
103
+ methods: _protobuf_ts_runtime_rpc2.MethodInfo<any, any>[];
104
104
  options: {
105
- [extensionName: string]: _protobuf_ts_runtime3.JsonValue;
105
+ [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
106
106
  };
107
107
  constructor(_transport: RpcTransport);
108
108
  /**
@@ -1,6 +1,6 @@
1
1
  import { ExecuteTransactionRequest, ExecuteTransactionResponse, SimulateTransactionRequest, SimulateTransactionResponse } from "./transaction_execution_service.mjs";
2
- import * as _protobuf_ts_runtime6 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc6 from "@protobuf-ts/runtime-rpc";
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/transaction_execution_service.client.d.ts
@@ -23,9 +23,9 @@ interface ITransactionExecutionServiceClient {
23
23
  declare class TransactionExecutionServiceClient implements ITransactionExecutionServiceClient, ServiceInfo {
24
24
  private readonly _transport;
25
25
  typeName: string;
26
- methods: _protobuf_ts_runtime_rpc6.MethodInfo<any, any>[];
26
+ methods: _protobuf_ts_runtime_rpc0.MethodInfo<any, any>[];
27
27
  options: {
28
- [extensionName: string]: _protobuf_ts_runtime6.JsonValue;
28
+ [extensionName: string]: _protobuf_ts_runtime0.JsonValue;
29
29
  };
30
30
  constructor(_transport: RpcTransport);
31
31
  /**
@@ -8,7 +8,7 @@ import { createPure } from "./pure.mjs";
8
8
  import { SignatureWithBytes, Signer } from "../cryptography/keypair.mjs";
9
9
  import "../cryptography/index.mjs";
10
10
  import { ClientWithCoreApi } from "../client/core.mjs";
11
- import * as _mysten_bcs1219 from "@mysten/bcs";
11
+ import * as _mysten_bcs1343 from "@mysten/bcs";
12
12
  import { SerializedBcs } from "@mysten/bcs";
13
13
  import { InferInput } from "valibot";
14
14
 
@@ -91,7 +91,7 @@ declare class Transaction {
91
91
  getData(): {
92
92
  version: 2;
93
93
  sender?: string | null | undefined;
94
- expiration?: _mysten_bcs1219.EnumOutputShapeWithKeys<{
94
+ expiration?: _mysten_bcs1343.EnumOutputShapeWithKeys<{
95
95
  None: true;
96
96
  Epoch: string | number;
97
97
  ValidDuring: {
@@ -102,7 +102,7 @@ declare class Transaction {
102
102
  chain: string;
103
103
  nonce: number;
104
104
  };
105
- }, "Epoch" | "None" | "ValidDuring"> | null | undefined;
105
+ }, "None" | "Epoch" | "ValidDuring"> | null | undefined;
106
106
  gasData: {
107
107
  budget: string | number | null;
108
108
  price: string | number | null;
@@ -113,8 +113,8 @@ declare class Transaction {
113
113
  digest: string;
114
114
  }[] | null;
115
115
  };
116
- inputs: _mysten_bcs1219.EnumOutputShapeWithKeys<{
117
- Object: _mysten_bcs1219.EnumOutputShapeWithKeys<{
116
+ inputs: _mysten_bcs1343.EnumOutputShapeWithKeys<{
117
+ Object: _mysten_bcs1343.EnumOutputShapeWithKeys<{
118
118
  ImmOrOwnedObject: {
119
119
  objectId: string;
120
120
  version: string | number;
@@ -130,7 +130,7 @@ declare class Transaction {
130
130
  version: string | number;
131
131
  digest: string;
132
132
  };
133
- }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
133
+ }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
134
134
  Pure: {
135
135
  bytes: string;
136
136
  };
@@ -153,13 +153,13 @@ declare class Transaction {
153
153
  Balance: string;
154
154
  $kind: "Balance";
155
155
  };
156
- withdrawFrom: _mysten_bcs1219.EnumOutputShapeWithKeys<{
156
+ withdrawFrom: _mysten_bcs1343.EnumOutputShapeWithKeys<{
157
157
  Sender: true;
158
158
  Sponsor: true;
159
159
  }, "Sender" | "Sponsor">;
160
160
  };
161
- }, "Object" | "Pure" | "FundsWithdrawal" | "UnresolvedPure" | "UnresolvedObject">[];
162
- commands: _mysten_bcs1219.EnumOutputShapeWithKeys<{
161
+ }, "Pure" | "Object" | "FundsWithdrawal" | "UnresolvedPure" | "UnresolvedObject">[];
162
+ commands: _mysten_bcs1343.EnumOutputShapeWithKeys<{
163
163
  MoveCall: {
164
164
  package: string;
165
165
  module: string;
package/dist/version.mjs CHANGED
@@ -1,5 +1,5 @@
1
1
  //#region src/version.ts
2
- const PACKAGE_VERSION = "2.26.0";
2
+ const PACKAGE_VERSION = "2.26.1";
3
3
 
4
4
  //#endregion
5
5
  export { PACKAGE_VERSION };
@@ -1 +1 @@
1
- {"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.26.0';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
1
+ {"version":3,"file":"version.mjs","names":[],"sources":["../src/version.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '2.26.1';\n"],"mappings":";AAKA,MAAa,kBAAkB"}
@@ -1,31 +1,31 @@
1
- import * as _mysten_bcs1206 from "@mysten/bcs";
1
+ import * as _mysten_bcs1350 from "@mysten/bcs";
2
2
  import { InferBcsInput } from "@mysten/bcs";
3
3
 
4
4
  //#region src/zklogin/bcs.d.ts
5
- declare const zkLoginSignature: _mysten_bcs1206.BcsStruct<{
6
- inputs: _mysten_bcs1206.BcsStruct<{
7
- proofPoints: _mysten_bcs1206.BcsStruct<{
8
- a: _mysten_bcs1206.BcsType<string[], Iterable<string> & {
5
+ declare const zkLoginSignature: _mysten_bcs1350.BcsStruct<{
6
+ inputs: _mysten_bcs1350.BcsStruct<{
7
+ proofPoints: _mysten_bcs1350.BcsStruct<{
8
+ a: _mysten_bcs1350.BcsType<string[], Iterable<string> & {
9
9
  length: number;
10
10
  }, string>;
11
- b: _mysten_bcs1206.BcsType<string[][], Iterable<Iterable<string> & {
11
+ b: _mysten_bcs1350.BcsType<string[][], Iterable<Iterable<string> & {
12
12
  length: number;
13
13
  }> & {
14
14
  length: number;
15
15
  }, string>;
16
- c: _mysten_bcs1206.BcsType<string[], Iterable<string> & {
16
+ c: _mysten_bcs1350.BcsType<string[], Iterable<string> & {
17
17
  length: number;
18
18
  }, string>;
19
19
  }, string>;
20
- issBase64Details: _mysten_bcs1206.BcsStruct<{
21
- value: _mysten_bcs1206.BcsType<string, string, "string">;
22
- indexMod4: _mysten_bcs1206.BcsType<number, number, "u8">;
20
+ issBase64Details: _mysten_bcs1350.BcsStruct<{
21
+ value: _mysten_bcs1350.BcsType<string, string, "string">;
22
+ indexMod4: _mysten_bcs1350.BcsType<number, number, "u8">;
23
23
  }, string>;
24
- headerBase64: _mysten_bcs1206.BcsType<string, string, "string">;
25
- addressSeed: _mysten_bcs1206.BcsType<string, string, "string">;
24
+ headerBase64: _mysten_bcs1350.BcsType<string, string, "string">;
25
+ addressSeed: _mysten_bcs1350.BcsType<string, string, "string">;
26
26
  }, string>;
27
- maxEpoch: _mysten_bcs1206.BcsType<string, string | number | bigint, "u64">;
28
- userSignature: _mysten_bcs1206.BcsType<Uint8Array<ArrayBufferLike>, Iterable<number>, "vector<u8>">;
27
+ maxEpoch: _mysten_bcs1350.BcsType<string, string | number | bigint, "u64">;
28
+ userSignature: _mysten_bcs1350.BcsType<Uint8Array<ArrayBufferLike>, Iterable<number>, "vector<u8>">;
29
29
  }, string>;
30
30
  type ZkLoginSignature = InferBcsInput<typeof zkLoginSignature>;
31
31
  type ZkLoginSignatureInputs = ZkLoginSignature['inputs'];
package/package.json CHANGED
@@ -3,7 +3,7 @@
3
3
  "author": "Mysten Labs <build@mystenlabs.com>",
4
4
  "description": "Sui TypeScript API",
5
5
  "homepage": "https://sdk.mystenlabs.com",
6
- "version": "2.26.0",
6
+ "version": "2.26.1",
7
7
  "license": "Apache-2.0",
8
8
  "sideEffects": false,
9
9
  "files": [
package/src/grpc/core.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  // Copyright (c) Mysten Labs, Inc.
2
2
  // SPDX-License-Identifier: Apache-2.0
3
3
 
4
- import type { CoreClientOptions, ObjectErrorReason, SuiClientTypes } from '../client/index.js';
4
+ import type { CoreClientOptions, SuiClientTypes } from '../client/index.js';
5
5
  import {
6
6
  CoreClient,
7
7
  formatMoveAbortMessage,
@@ -135,11 +135,22 @@ export class GrpcCoreClient extends CoreClient {
135
135
  (object, index): SuiClientTypes.Object<Include> | ObjectError => {
136
136
  if (object.result.oneofKind === 'error') {
137
137
  const error = object.result.error;
138
- const reason: ObjectErrorReason =
139
- error.code === GrpcStatusCode.NOT_FOUND ? 'notFound' : 'unknown';
140
- return new ObjectError(String(error.code), error.message, {
138
+ if (error.code === GrpcStatusCode.NOT_FOUND) {
139
+ // Special case for backwards compatibility: missing objects reuse
140
+ // the long-standing JSON-RPC `notExists` code instead of the gRPC
141
+ // status name, so handlers written against earlier releases keep
142
+ // working.
143
+ return new ObjectError('notExists', error.message, {
144
+ cause: error,
145
+ reason: 'notFound',
146
+ objectId: batch[index],
147
+ });
148
+ }
149
+ // Other statuses use the gRPC status name (for example `INTERNAL`),
150
+ // never the raw status number.
151
+ return new ObjectError(GrpcStatusCode[error.code] ?? 'unknown', error.message, {
141
152
  cause: error,
142
- reason,
153
+ reason: 'unknown',
143
154
  objectId: batch[index],
144
155
  });
145
156
  }
package/src/version.ts CHANGED
@@ -3,4 +3,4 @@
3
3
 
4
4
  // This file is generated by genversion.mjs. Do not edit it directly.
5
5
 
6
- export const PACKAGE_VERSION = '2.26.0';
6
+ export const PACKAGE_VERSION = '2.26.1';