@mysten/sui 2.29.0 → 2.30.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (36) hide show
  1. package/CHANGELOG.md +9 -0
  2. package/dist/bcs/bcs.d.mts +6 -6
  3. package/dist/bcs/index.d.mts +36 -36
  4. package/dist/client/core-resolver.d.mts.map +1 -1
  5. package/dist/client/core-resolver.mjs +2 -5
  6. package/dist/client/core-resolver.mjs.map +1 -1
  7. package/dist/cryptography/signature.d.mts +14 -14
  8. package/dist/grpc/proto/sui/rpc/v2/name_service.client.d.mts +4 -4
  9. package/dist/grpc/proto/sui/rpc/v2/signature_verification_service.client.d.mts +4 -4
  10. package/dist/grpc/proto/sui/rpc/v2/state_service.client.d.mts +4 -4
  11. package/dist/grpc/proto/sui/rpc/v2/subscription_service.client.d.mts +4 -4
  12. package/dist/grpc/proto/sui/rpc/v2/transaction_execution_service.client.d.mts +4 -4
  13. package/dist/transactions/Transaction.d.mts +10 -13
  14. package/dist/transactions/Transaction.d.mts.map +1 -1
  15. package/dist/transactions/Transaction.mjs.map +1 -1
  16. package/dist/transactions/intents/CoinWithBalance.mjs +4 -2
  17. package/dist/transactions/intents/CoinWithBalance.mjs.map +1 -1
  18. package/dist/transactions/resolution-utils.mjs +13 -0
  19. package/dist/transactions/resolution-utils.mjs.map +1 -0
  20. package/dist/transactions/resolve.d.mts +8 -0
  21. package/dist/transactions/resolve.d.mts.map +1 -1
  22. package/dist/transactions/resolve.mjs +6 -2
  23. package/dist/transactions/resolve.mjs.map +1 -1
  24. package/dist/version.mjs +1 -1
  25. package/dist/version.mjs.map +1 -1
  26. package/dist/zklogin/bcs.d.mts +14 -14
  27. package/docs/migrations/sui-2.0/json-rpc-migration.md +50 -1
  28. package/docs/transactions/basics.md +19 -14
  29. package/docs/transactions/offline.md +137 -88
  30. package/package.json +2 -2
  31. package/src/client/core-resolver.ts +2 -7
  32. package/src/transactions/Transaction.ts +1 -4
  33. package/src/transactions/intents/CoinWithBalance.ts +32 -25
  34. package/src/transactions/resolution-utils.ts +18 -0
  35. package/src/transactions/resolve.ts +29 -2
  36. package/src/version.ts +1 -1
package/CHANGELOG.md CHANGED
@@ -1,5 +1,14 @@
1
1
  # @mysten/sui.js
2
2
 
3
+ ## 2.30.0
4
+
5
+ ### Minor Changes
6
+
7
+ - cc2aec1: Add `assumeSufficientAddressBalances` build option to resolve `tx.coin()` and
8
+ `tx.balance()` from address balance without a client. On a full build that needs no other
9
+ resolution, doesn't use `tx.gas`, and already has a `ValidDuring` or `Validity` expiration, it
10
+ also sets an unset gas payment to `[]`
11
+
3
12
  ## 2.29.0
4
13
 
5
14
  ### Minor Changes
@@ -1,21 +1,21 @@
1
1
  import { TypeTag as TypeTag$1 } from "./types.mjs";
2
- import * as _mysten_bcs1238 from "@mysten/bcs";
2
+ import * as _mysten_bcs1258 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_bcs1238.BcsStruct<{
8
- intent: _mysten_bcs1238.BcsStruct<{
9
- scope: _mysten_bcs1238.BcsEnum<{
7
+ declare function IntentMessage<T extends BcsType<any>>(T: T): _mysten_bcs1258.BcsStruct<{
8
+ intent: _mysten_bcs1258.BcsStruct<{
9
+ scope: _mysten_bcs1258.BcsEnum<{
10
10
  TransactionData: null;
11
11
  TransactionEffects: null;
12
12
  CheckpointSummary: null;
13
13
  PersonalMessage: null;
14
14
  }, "IntentScope">;
15
- version: _mysten_bcs1238.BcsEnum<{
15
+ version: _mysten_bcs1258.BcsEnum<{
16
16
  V0: null;
17
17
  }, "IntentVersion">;
18
- appId: _mysten_bcs1238.BcsEnum<{
18
+ appId: _mysten_bcs1258.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
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
548
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
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
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
563
+ }, "Object" | "Pure" | "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
- }, "TransactionData" | "TransactionEffects" | "CheckpointSummary" | "PersonalMessage">;
796
+ }, "TransactionEffects" | "TransactionData" | "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
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
830
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
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
- }, "Pure" | "Object" | "FundsWithdrawal">[];
845
+ }, "Object" | "Pure" | "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" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
984
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
985
985
  };
986
986
  $kind: "RawObject";
987
987
  }[];
@@ -1114,7 +1114,7 @@ declare const suiBcs: {
1114
1114
  version: string;
1115
1115
  digest: string;
1116
1116
  };
1117
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
1117
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
1118
1118
  FundsWithdrawal: {
1119
1119
  reservation: {
1120
1120
  MaxAmountU64: string;
@@ -1129,7 +1129,7 @@ declare const suiBcs: {
1129
1129
  Sponsor: true;
1130
1130
  }, "Sender" | "Sponsor">;
1131
1131
  };
1132
- }, "Pure" | "Object" | "FundsWithdrawal">[];
1132
+ }, "Object" | "Pure" | "FundsWithdrawal">[];
1133
1133
  commands: _mysten_bcs0.EnumOutputShapeWithKeys<{
1134
1134
  MoveCall: {
1135
1135
  package: string;
@@ -1211,7 +1211,7 @@ declare const suiBcs: {
1211
1211
  };
1212
1212
  }, "MoveCall" | "TransferObjects" | "SplitCoins" | "MergeCoins" | "Publish" | "MakeMoveVec" | "Upgrade">[];
1213
1213
  };
1214
- }, "ProgrammableTransaction" | "ChangeEpoch" | "Genesis" | "ConsensusCommitPrologue" | "AuthenticatorStateUpdate" | "EndOfEpochTransaction" | "RandomnessStateUpdate" | "ConsensusCommitPrologueV2" | "ConsensusCommitPrologueV3" | "ConsensusCommitPrologueV4" | "ProgrammableSystemTransaction">;
1214
+ }, "EndOfEpochTransaction" | "ProgrammableSystemTransaction" | "ProgrammableTransaction" | "ChangeEpoch" | "Genesis" | "ConsensusCommitPrologue" | "AuthenticatorStateUpdate" | "RandomnessStateUpdate" | "ConsensusCommitPrologueV2" | "ConsensusCommitPrologueV3" | "ConsensusCommitPrologueV4">;
1215
1215
  sender: string;
1216
1216
  gasData: {
1217
1217
  payment: {
@@ -1246,7 +1246,7 @@ declare const suiBcs: {
1246
1246
  proposers: number[];
1247
1247
  } | null;
1248
1248
  };
1249
- }, "None" | "Epoch" | "ValidDuring" | "Validity">;
1249
+ }, "Epoch" | "None" | "ValidDuring" | "Validity">;
1250
1250
  };
1251
1251
  $kind: "V1";
1252
1252
  };
@@ -1849,7 +1849,7 @@ declare const suiBcs: {
1849
1849
  version: string;
1850
1850
  digest: string;
1851
1851
  };
1852
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
1852
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
1853
1853
  FundsWithdrawal: {
1854
1854
  reservation: {
1855
1855
  MaxAmountU64: string;
@@ -1864,7 +1864,7 @@ declare const suiBcs: {
1864
1864
  Sponsor: true;
1865
1865
  }, "Sender" | "Sponsor">;
1866
1866
  };
1867
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
1867
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
1868
1868
  Pure: {
1869
1869
  bytes: string | Uint8Array<ArrayBufferLike>;
1870
1870
  };
@@ -2145,7 +2145,7 @@ declare const suiBcs: {
2145
2145
  startVersion: string;
2146
2146
  owner: string;
2147
2147
  };
2148
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
2148
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
2149
2149
  };
2150
2150
  $kind: "RawObject";
2151
2151
  }[], Iterable<{
@@ -2423,7 +2423,7 @@ declare const suiBcs: {
2423
2423
  version: string;
2424
2424
  digest: string;
2425
2425
  };
2426
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
2426
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
2427
2427
  FundsWithdrawal: {
2428
2428
  reservation: {
2429
2429
  MaxAmountU64: string;
@@ -2438,7 +2438,7 @@ declare const suiBcs: {
2438
2438
  Sponsor: true;
2439
2439
  }, "Sender" | "Sponsor">;
2440
2440
  };
2441
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2441
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2442
2442
  Pure: {
2443
2443
  bytes: string | Uint8Array<ArrayBufferLike>;
2444
2444
  };
@@ -2750,7 +2750,7 @@ declare const suiBcs: {
2750
2750
  version: string;
2751
2751
  digest: string;
2752
2752
  };
2753
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
2753
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
2754
2754
  FundsWithdrawal: {
2755
2755
  reservation: {
2756
2756
  MaxAmountU64: string;
@@ -2765,7 +2765,7 @@ declare const suiBcs: {
2765
2765
  Sponsor: true;
2766
2766
  }, "Sender" | "Sponsor">;
2767
2767
  };
2768
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2768
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
2769
2769
  Pure: {
2770
2770
  bytes: string | Uint8Array<ArrayBufferLike>;
2771
2771
  };
@@ -3046,7 +3046,7 @@ declare const suiBcs: {
3046
3046
  startVersion: string;
3047
3047
  owner: string;
3048
3048
  };
3049
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
3049
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
3050
3050
  };
3051
3051
  $kind: "RawObject";
3052
3052
  }[], Iterable<{
@@ -3324,7 +3324,7 @@ declare const suiBcs: {
3324
3324
  version: string;
3325
3325
  digest: string;
3326
3326
  };
3327
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
3327
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
3328
3328
  FundsWithdrawal: {
3329
3329
  reservation: {
3330
3330
  MaxAmountU64: string;
@@ -3339,7 +3339,7 @@ declare const suiBcs: {
3339
3339
  Sponsor: true;
3340
3340
  }, "Sender" | "Sponsor">;
3341
3341
  };
3342
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3342
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3343
3343
  Pure: {
3344
3344
  bytes: string | Uint8Array<ArrayBufferLike>;
3345
3345
  };
@@ -3627,7 +3627,7 @@ declare const suiBcs: {
3627
3627
  version: string;
3628
3628
  digest: string;
3629
3629
  };
3630
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
3630
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
3631
3631
  FundsWithdrawal: {
3632
3632
  reservation: {
3633
3633
  MaxAmountU64: string;
@@ -3642,7 +3642,7 @@ declare const suiBcs: {
3642
3642
  Sponsor: true;
3643
3643
  }, "Sender" | "Sponsor">;
3644
3644
  };
3645
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3645
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
3646
3646
  Pure: {
3647
3647
  bytes: string | Uint8Array<ArrayBufferLike>;
3648
3648
  };
@@ -3923,7 +3923,7 @@ declare const suiBcs: {
3923
3923
  startVersion: string;
3924
3924
  owner: string;
3925
3925
  };
3926
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
3926
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
3927
3927
  };
3928
3928
  $kind: "RawObject";
3929
3929
  }[], Iterable<{
@@ -4201,7 +4201,7 @@ declare const suiBcs: {
4201
4201
  version: string;
4202
4202
  digest: string;
4203
4203
  };
4204
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
4204
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
4205
4205
  FundsWithdrawal: {
4206
4206
  reservation: {
4207
4207
  MaxAmountU64: string;
@@ -4216,7 +4216,7 @@ declare const suiBcs: {
4216
4216
  Sponsor: true;
4217
4217
  }, "Sender" | "Sponsor">;
4218
4218
  };
4219
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
4219
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
4220
4220
  Pure: {
4221
4221
  bytes: string | Uint8Array<ArrayBufferLike>;
4222
4222
  };
@@ -4686,7 +4686,7 @@ declare const suiBcs: {
4686
4686
  startVersion: string;
4687
4687
  owner: string;
4688
4688
  };
4689
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4689
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4690
4690
  objectId: string | Uint8Array<ArrayBufferLike>;
4691
4691
  version: string | number | bigint;
4692
4692
  digest: string;
@@ -4719,7 +4719,7 @@ declare const suiBcs: {
4719
4719
  startVersion: string;
4720
4720
  owner: string;
4721
4721
  };
4722
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4722
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4723
4723
  objectId: string | Uint8Array<ArrayBufferLike>;
4724
4724
  version: string | number | bigint;
4725
4725
  digest: string;
@@ -4752,7 +4752,7 @@ declare const suiBcs: {
4752
4752
  startVersion: string;
4753
4753
  owner: string;
4754
4754
  };
4755
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">][], Iterable<readonly [{
4755
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">][], Iterable<readonly [{
4756
4756
  objectId: string | Uint8Array<ArrayBufferLike>;
4757
4757
  version: string | number | bigint;
4758
4758
  digest: string;
@@ -5020,7 +5020,7 @@ declare const suiBcs: {
5020
5020
  startVersion: string;
5021
5021
  owner: string;
5022
5022
  };
5023
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">];
5023
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">];
5024
5024
  }, "NotExist" | "Exist">;
5025
5025
  outputState: _mysten_bcs0.EnumOutputShapeWithKeys<{
5026
5026
  NotExist: true;
@@ -5035,7 +5035,7 @@ declare const suiBcs: {
5035
5035
  startVersion: string;
5036
5036
  owner: string;
5037
5037
  };
5038
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">];
5038
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">];
5039
5039
  PackageWrite: [string, string];
5040
5040
  AccumulatorWriteV1: {
5041
5041
  address: {
@@ -5121,7 +5121,7 @@ declare const suiBcs: {
5121
5121
  ReadConsensusStreamEnded: string;
5122
5122
  Cancelled: string;
5123
5123
  PerEpochConfig: true;
5124
- }, "ReadOnlyRoot" | "MutateConsensusStreamEnded" | "ReadConsensusStreamEnded" | "Cancelled" | "PerEpochConfig">][], Iterable<readonly [string | Uint8Array<ArrayBufferLike>, _mysten_bcs0.EnumInputShape<{
5124
+ }, "MutateConsensusStreamEnded" | "PerEpochConfig" | "ReadConsensusStreamEnded" | "ReadOnlyRoot" | "Cancelled">][], Iterable<readonly [string | Uint8Array<ArrayBufferLike>, _mysten_bcs0.EnumInputShape<{
5125
5125
  ReadOnlyRoot: readonly [string | number | bigint, string];
5126
5126
  MutateConsensusStreamEnded: string | number | bigint;
5127
5127
  ReadConsensusStreamEnded: string | number | bigint;
@@ -5182,7 +5182,7 @@ declare const suiBcs: {
5182
5182
  version: string;
5183
5183
  digest: string;
5184
5184
  };
5185
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
5185
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
5186
5186
  FundsWithdrawal: {
5187
5187
  reservation: {
5188
5188
  MaxAmountU64: string;
@@ -5197,7 +5197,7 @@ declare const suiBcs: {
5197
5197
  Sponsor: true;
5198
5198
  }, "Sender" | "Sponsor">;
5199
5199
  };
5200
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5200
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5201
5201
  Pure: {
5202
5202
  bytes: string | Uint8Array<ArrayBufferLike>;
5203
5203
  };
@@ -5478,7 +5478,7 @@ declare const suiBcs: {
5478
5478
  startVersion: string;
5479
5479
  owner: string;
5480
5480
  };
5481
- }, "AddressOwner" | "ObjectOwner" | "Shared" | "Immutable" | "ConsensusAddressOwner">;
5481
+ }, "AddressOwner" | "ConsensusAddressOwner" | "Immutable" | "ObjectOwner" | "Shared">;
5482
5482
  };
5483
5483
  $kind: "RawObject";
5484
5484
  }[], Iterable<{
@@ -5756,7 +5756,7 @@ declare const suiBcs: {
5756
5756
  version: string;
5757
5757
  digest: string;
5758
5758
  };
5759
- }, "ImmOrOwnedObject" | "SharedObject" | "Receiving">;
5759
+ }, "Receiving" | "ImmOrOwnedObject" | "SharedObject">;
5760
5760
  FundsWithdrawal: {
5761
5761
  reservation: {
5762
5762
  MaxAmountU64: string;
@@ -5771,7 +5771,7 @@ declare const suiBcs: {
5771
5771
  Sponsor: true;
5772
5772
  }, "Sender" | "Sponsor">;
5773
5773
  };
5774
- }, "Pure" | "Object" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5774
+ }, "Object" | "Pure" | "FundsWithdrawal">[], Iterable<_mysten_bcs0.EnumInputShape<{
5775
5775
  Pure: {
5776
5776
  bytes: string | Uint8Array<ArrayBufferLike>;
5777
5777
  };
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"mappings":";;;;;iBAkDsB,kCAAA,CACrB,eAAA,EAAiB,sBAAA,EACjB,OAAA,EAAS,uBAAA,EACT,IAAA,QAAY,OAAA,SAAa,OAAA"}
1
+ {"version":3,"file":"core-resolver.d.mts","names":[],"sources":["../../src/client/core-resolver.ts"],"mappings":";;;;;iBAmDsB,kCAAA,CACrB,eAAA,EAAiB,sBAAA,EACjB,OAAA,EAAS,uBAAA,EACT,IAAA,QAAY,OAAA,SAAa,OAAA"}
@@ -4,6 +4,7 @@ import { SUI_TYPE_ARG } from "../utils/constants.mjs";
4
4
  import { createCoinReservationRef } from "../utils/coin-reservation.mjs";
5
5
  import { Inputs } from "../transactions/Inputs.mjs";
6
6
  import { getPureBcsSchema, isTxContext } from "../transactions/serializer.mjs";
7
+ import { transactionUsesGasCoin } from "../transactions/resolution-utils.mjs";
7
8
  import { chunk } from "@mysten/utils";
8
9
 
9
10
  //#region src/client/core-resolver.ts
@@ -26,12 +27,8 @@ async function coreClientResolveTransactionPlugin(transactionData, options, next
26
27
  const needsGasPrice = !options.onlyTransactionKind && !transactionData.gasData.price;
27
28
  const needsPayment = !options.onlyTransactionKind && !transactionData.gasData.payment;
28
29
  const gasPayer = transactionData.gasData.owner ?? transactionData.sender;
29
- let usesGasCoin = false;
30
+ const usesGasCoin = transactionUsesGasCoin(transactionData);
30
31
  let withdrawals = 0n;
31
- transactionData.mapArguments((arg) => {
32
- if (arg.$kind === "GasCoin") usesGasCoin = true;
33
- return arg;
34
- });
35
32
  const normalizedGasPayer = gasPayer ? normalizeSuiAddress(gasPayer) : null;
36
33
  for (const input of transactionData.inputs) {
37
34
  if (input.$kind !== "FundsWithdrawal" || !normalizedGasPayer) continue;
@@ -1 +1 @@
1
- {"version":3,"file":"core-resolver.mjs","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tnormalizeSuiAddress,\n\tnormalizeSuiObjectId,\n\tnormalizeStructTag,\n\tSUI_TYPE_ARG,\n} from '../utils/index.js';\nimport { createCoinReservationRef } from '../utils/coin-reservation.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { SuiClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\n/** Compute a gas budget from gasUsed effects data. */\nexport function computeGasBudget(\n\tgasUsed: { computationCost: string; storageCost: string; storageRebate: string },\n\tgasPrice: bigint | string = 1n,\n): string {\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(gasPrice);\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\treturn String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\n\tconst needsGasPrice = !options.onlyTransactionKind && !transactionData.gasData.price;\n\tconst needsPayment = !options.onlyTransactionKind && !transactionData.gasData.payment;\n\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender;\n\n\tlet usesGasCoin = false;\n\tlet withdrawals = 0n;\n\n\ttransactionData.mapArguments((arg) => {\n\t\tif (arg.$kind === 'GasCoin') usesGasCoin = true;\n\t\treturn arg;\n\t});\n\n\tconst normalizedGasPayer = gasPayer ? normalizeSuiAddress(gasPayer) : null;\n\tfor (const input of transactionData.inputs) {\n\t\tif (input.$kind !== 'FundsWithdrawal' || !normalizedGasPayer) continue;\n\t\tif (normalizeStructTag(input.FundsWithdrawal.typeArg.Balance) !== SUI_TYPE_ARG) continue;\n\n\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t? transactionData.sender\n\t\t\t: gasPayer;\n\t\tif (\n\t\t\twithdrawalOwner &&\n\t\t\tnormalizeSuiAddress(withdrawalOwner) === normalizedGasPayer &&\n\t\t\tinput.FundsWithdrawal.reservation.$kind === 'MaxAmountU64'\n\t\t) {\n\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t}\n\t}\n\n\t// `setGasBudget` simulates with `payment: []` whenever it has to compute a\n\t// budget (i.e. one wasn't preset). The validator's replay-protection check\n\t// then requires either a `ValidDuring` expiration or at least one\n\t// \"address-owned\" input — an `ImmOrOwnedMoveObject` whose owner is\n\t// `AddressOwner`, which we can't tell from `Immutable` without owner info we\n\t// don't track. Provide a simulate-only `ValidDuring` whenever we'll actually\n\t// simulate and one isn't user-set.\n\tconst needsSimulateExpiration =\n\t\t!options.onlyTransactionKind && !transactionData.expiration && !transactionData.gasData.budget;\n\tconst needsSystemState =\n\t\tneedsGasPrice || (needsPayment && usesGasCoin) || needsSimulateExpiration;\n\tconst needsChainId = (needsPayment && usesGasCoin) || needsSimulateExpiration;\n\tconst [, systemStateResult, balanceResult, coinsResult, chainIdResult] = await Promise.all([\n\t\tnormalizeInputs(transactionData, client),\n\t\tneedsSystemState ? client.core.getCurrentSystemState() : null,\n\t\tneedsPayment && gasPayer ? client.core.getBalance({ owner: gasPayer }) : null,\n\t\tneedsPayment && gasPayer\n\t\t\t? client.core.listCoins({ owner: gasPayer, coinType: SUI_TYPE_ARG })\n\t\t\t: null,\n\t\tneedsChainId ? client.core.getChainIdentifier() : null,\n\t]);\n\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tconst systemState = systemStateResult?.systemState ?? null;\n\t\tconst chainIdentifier = chainIdResult?.chainIdentifier ?? null;\n\n\t\tif (systemState && !transactionData.gasData.price) {\n\t\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t\t}\n\n\t\tconst simulateExpiration =\n\t\t\tneedsSimulateExpiration && systemState && chainIdentifier\n\t\t\t\t? buildValidDuringExpiration(systemState, chainIdentifier)\n\t\t\t\t: undefined;\n\n\t\tawait setGasBudget(transactionData, client, simulateExpiration);\n\n\t\tif (needsPayment) {\n\t\t\tif (!balanceResult || !coinsResult) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Could not resolve gas payment: a gas owner or sender must be set to fetch balance and coins.',\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetGasPayment({\n\t\t\t\ttransactionData,\n\t\t\t\tbalance: balanceResult,\n\t\t\t\tcoins: coinsResult,\n\t\t\t\tusesGasCoin,\n\t\t\t\twithdrawals,\n\t\t\t\tgasPayer: gasPayer!,\n\t\t\t\tchainIdentifier,\n\t\t\t\tepoch: systemState?.epoch ?? null,\n\t\t\t});\n\t\t}\n\n\t\tif (!transactionData.expiration && transactionData.gasData.payment?.length === 0) {\n\t\t\tawait setExpiration(transactionData, client, systemState, chainIdentifier);\n\t\t}\n\t}\n\n\treturn await next();\n}\n\nasync function setGasBudget(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\tsimulateExpiration?: ValidDuringExpiration,\n) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t\t...(simulateExpiration && { expiration: simulateExpiration }),\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t\t// The empty payment above is a placeholder for budget estimation, not a real address\n\t\t// balance payment, so the server must simulate with a mocked gas coin rather than\n\t\t// selecting gas. gRPC and GraphQL support this option, and JSON-RPC always mocks gas.\n\t\tdoGasSelection: false,\n\t} as SuiClientTypes.SimulateTransactionOptions<{ effects: true }> & { doGasSelection: boolean });\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\ttransactionData.gasData.budget = computeGasBudget(\n\t\tsimulateResult.Transaction.effects!.gasUsed,\n\t\ttransactionData.gasData.price ? String(transactionData.gasData.price) : undefined,\n\t);\n}\n\nfunction setGasPayment({\n\ttransactionData,\n\tbalance,\n\tcoins,\n\tusesGasCoin,\n\twithdrawals,\n\tgasPayer,\n\tchainIdentifier,\n\tepoch,\n}: {\n\ttransactionData: TransactionDataBuilder;\n\tbalance: SuiClientTypes.GetBalanceResponse;\n\tcoins: SuiClientTypes.ListCoinsResponse;\n\tusesGasCoin: boolean;\n\twithdrawals: bigint;\n\tgasPayer: string;\n\tchainIdentifier: string | null;\n\tepoch: string | null;\n}) {\n\tconst budget = BigInt(transactionData.gasData.budget!);\n\tconst addressBalance = BigInt(balance.balance.addressBalance);\n\n\tif (budget === 0n || (!usesGasCoin && addressBalance >= budget + withdrawals)) {\n\t\ttransactionData.gasData.payment = [];\n\t\treturn;\n\t}\n\n\tconst filteredCoins = coins.objects.filter((coin) => {\n\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn !matchingInput;\n\t});\n\n\tconst paymentCoins = filteredCoins.map((coin) => ({\n\t\tobjectId: coin.objectId,\n\t\tdigest: coin.digest,\n\t\tversion: coin.version,\n\t}));\n\n\tconst reservationAmount = addressBalance - withdrawals;\n\n\tif (usesGasCoin && reservationAmount > 0n && chainIdentifier && epoch) {\n\t\ttransactionData.gasData.payment = [\n\t\t\tcreateCoinReservationRef(reservationAmount, gasPayer, chainIdentifier, epoch),\n\t\t\t...paymentCoins,\n\t\t];\n\t} else if (!filteredCoins.length) {\n\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t} else {\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\tsystemState: SystemStateData | null,\n\texistingChainIdentifier: string | null = null,\n) {\n\tconst [chainIdentifier, resolvedSystemState] = await Promise.all([\n\t\texistingChainIdentifier ?? client.core.getChainIdentifier().then((r) => r.chainIdentifier),\n\t\tsystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t]);\n\ttransactionData.expiration = buildValidDuringExpiration(resolvedSystemState, chainIdentifier);\n}\n\ntype ValidDuringExpiration = {\n\t$kind: 'ValidDuring';\n\tValidDuring: {\n\t\tminEpoch: string;\n\t\tmaxEpoch: string;\n\t\tminTimestamp: null;\n\t\tmaxTimestamp: null;\n\t\tchain: string;\n\t\tnonce: number;\n\t};\n};\n\nfunction buildValidDuringExpiration(\n\tsystemState: SystemStateData,\n\tchainIdentifier: string,\n): ValidDuringExpiration {\n\tconst currentEpoch = BigInt(systemState.epoch);\n\treturn {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeSuiAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, SuiClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: SuiClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"core-resolver.mjs","names":[],"sources":["../../src/client/core-resolver.ts"],"sourcesContent":["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport {\n\tnormalizeSuiAddress,\n\tnormalizeSuiObjectId,\n\tnormalizeStructTag,\n\tSUI_TYPE_ARG,\n} from '../utils/index.js';\nimport { createCoinReservationRef } from '../utils/coin-reservation.js';\nimport type { ClientWithCoreApi } from './core.js';\nimport type { CallArg, Command } from '../transactions/data/internal.js';\nimport type { SuiClientTypes } from './types.js';\nimport { SimulationError } from './errors.js';\nimport { Inputs } from '../transactions/Inputs.js';\nimport { getPureBcsSchema, isTxContext } from '../transactions/serializer.js';\nimport type { TransactionDataBuilder } from '../transactions/TransactionData.js';\nimport { chunk } from '@mysten/utils';\nimport type { BuildTransactionOptions } from '../transactions/index.js';\nimport { transactionUsesGasCoin } from '../transactions/resolution-utils.js';\n\n// The maximum objects that can be fetched at once using multiGetObjects.\nconst MAX_OBJECTS_PER_FETCH = 50;\n\n// An amount of gas (in gas units) that is added to transactions as an overhead to ensure transactions do not fail.\nconst GAS_SAFE_OVERHEAD = 1000n;\nconst MAX_GAS = 50_000_000_000;\n\n/** Compute a gas budget from gasUsed effects data. */\nexport function computeGasBudget(\n\tgasUsed: { computationCost: string; storageCost: string; storageRebate: string },\n\tgasPrice: bigint | string = 1n,\n): string {\n\tconst safeOverhead = GAS_SAFE_OVERHEAD * BigInt(gasPrice);\n\tconst baseComputationCostWithOverhead = BigInt(gasUsed.computationCost) + safeOverhead;\n\tconst gasBudget =\n\t\tbaseComputationCostWithOverhead + BigInt(gasUsed.storageCost) - BigInt(gasUsed.storageRebate);\n\treturn String(\n\t\tgasBudget > baseComputationCostWithOverhead ? gasBudget : baseComputationCostWithOverhead,\n\t);\n}\n\nfunction getClient(options: BuildTransactionOptions): ClientWithCoreApi {\n\tif (!options.client) {\n\t\tthrow new Error(\n\t\t\t`No sui client passed to Transaction#build, but transaction data was not sufficient to build offline.`,\n\t\t);\n\t}\n\treturn options.client;\n}\n\nexport async function coreClientResolveTransactionPlugin(\n\ttransactionData: TransactionDataBuilder,\n\toptions: BuildTransactionOptions,\n\tnext: () => Promise<void>,\n) {\n\tconst client = getClient(options);\n\tconst needsGasPrice = !options.onlyTransactionKind && !transactionData.gasData.price;\n\tconst needsPayment = !options.onlyTransactionKind && !transactionData.gasData.payment;\n\tconst gasPayer = transactionData.gasData.owner ?? transactionData.sender;\n\n\tconst usesGasCoin = transactionUsesGasCoin(transactionData);\n\tlet withdrawals = 0n;\n\n\tconst normalizedGasPayer = gasPayer ? normalizeSuiAddress(gasPayer) : null;\n\tfor (const input of transactionData.inputs) {\n\t\tif (input.$kind !== 'FundsWithdrawal' || !normalizedGasPayer) continue;\n\t\tif (normalizeStructTag(input.FundsWithdrawal.typeArg.Balance) !== SUI_TYPE_ARG) continue;\n\n\t\tconst withdrawalOwner = input.FundsWithdrawal.withdrawFrom.Sender\n\t\t\t? transactionData.sender\n\t\t\t: gasPayer;\n\t\tif (\n\t\t\twithdrawalOwner &&\n\t\t\tnormalizeSuiAddress(withdrawalOwner) === normalizedGasPayer &&\n\t\t\tinput.FundsWithdrawal.reservation.$kind === 'MaxAmountU64'\n\t\t) {\n\t\t\twithdrawals += BigInt(input.FundsWithdrawal.reservation.MaxAmountU64);\n\t\t}\n\t}\n\n\t// `setGasBudget` simulates with `payment: []` whenever it has to compute a\n\t// budget (i.e. one wasn't preset). The validator's replay-protection check\n\t// then requires either a `ValidDuring` expiration or at least one\n\t// \"address-owned\" input — an `ImmOrOwnedMoveObject` whose owner is\n\t// `AddressOwner`, which we can't tell from `Immutable` without owner info we\n\t// don't track. Provide a simulate-only `ValidDuring` whenever we'll actually\n\t// simulate and one isn't user-set.\n\tconst needsSimulateExpiration =\n\t\t!options.onlyTransactionKind && !transactionData.expiration && !transactionData.gasData.budget;\n\tconst needsSystemState =\n\t\tneedsGasPrice || (needsPayment && usesGasCoin) || needsSimulateExpiration;\n\tconst needsChainId = (needsPayment && usesGasCoin) || needsSimulateExpiration;\n\tconst [, systemStateResult, balanceResult, coinsResult, chainIdResult] = await Promise.all([\n\t\tnormalizeInputs(transactionData, client),\n\t\tneedsSystemState ? client.core.getCurrentSystemState() : null,\n\t\tneedsPayment && gasPayer ? client.core.getBalance({ owner: gasPayer }) : null,\n\t\tneedsPayment && gasPayer\n\t\t\t? client.core.listCoins({ owner: gasPayer, coinType: SUI_TYPE_ARG })\n\t\t\t: null,\n\t\tneedsChainId ? client.core.getChainIdentifier() : null,\n\t]);\n\n\tawait resolveObjectReferences(transactionData, client);\n\n\tif (!options.onlyTransactionKind) {\n\t\tconst systemState = systemStateResult?.systemState ?? null;\n\t\tconst chainIdentifier = chainIdResult?.chainIdentifier ?? null;\n\n\t\tif (systemState && !transactionData.gasData.price) {\n\t\t\ttransactionData.gasData.price = systemState.referenceGasPrice;\n\t\t}\n\n\t\tconst simulateExpiration =\n\t\t\tneedsSimulateExpiration && systemState && chainIdentifier\n\t\t\t\t? buildValidDuringExpiration(systemState, chainIdentifier)\n\t\t\t\t: undefined;\n\n\t\tawait setGasBudget(transactionData, client, simulateExpiration);\n\n\t\tif (needsPayment) {\n\t\t\tif (!balanceResult || !coinsResult) {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t'Could not resolve gas payment: a gas owner or sender must be set to fetch balance and coins.',\n\t\t\t\t);\n\t\t\t}\n\t\t\tsetGasPayment({\n\t\t\t\ttransactionData,\n\t\t\t\tbalance: balanceResult,\n\t\t\t\tcoins: coinsResult,\n\t\t\t\tusesGasCoin,\n\t\t\t\twithdrawals,\n\t\t\t\tgasPayer: gasPayer!,\n\t\t\t\tchainIdentifier,\n\t\t\t\tepoch: systemState?.epoch ?? null,\n\t\t\t});\n\t\t}\n\n\t\tif (!transactionData.expiration && transactionData.gasData.payment?.length === 0) {\n\t\t\tawait setExpiration(transactionData, client, systemState, chainIdentifier);\n\t\t}\n\t}\n\n\treturn await next();\n}\n\nasync function setGasBudget(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\tsimulateExpiration?: ValidDuringExpiration,\n) {\n\tif (transactionData.gasData.budget) {\n\t\treturn;\n\t}\n\n\tconst simulateResult = await client.core.simulateTransaction({\n\t\ttransaction: transactionData.build({\n\t\t\toverrides: {\n\t\t\t\tgasData: {\n\t\t\t\t\tbudget: String(MAX_GAS),\n\t\t\t\t\tpayment: [],\n\t\t\t\t},\n\t\t\t\t...(simulateExpiration && { expiration: simulateExpiration }),\n\t\t\t},\n\t\t}),\n\t\tinclude: { effects: true },\n\t\t// The empty payment above is a placeholder for budget estimation, not a real address\n\t\t// balance payment, so the server must simulate with a mocked gas coin rather than\n\t\t// selecting gas. gRPC and GraphQL support this option, and JSON-RPC always mocks gas.\n\t\tdoGasSelection: false,\n\t} as SuiClientTypes.SimulateTransactionOptions<{ effects: true }> & { doGasSelection: boolean });\n\n\tif (simulateResult.$kind === 'FailedTransaction') {\n\t\tconst executionError = simulateResult.FailedTransaction.status.error ?? undefined;\n\t\tconst errorMessage = executionError?.message ?? 'Unknown error';\n\t\tthrow new SimulationError(`Transaction resolution failed: ${errorMessage}`, {\n\t\t\tcause: simulateResult,\n\t\t\texecutionError,\n\t\t});\n\t}\n\n\ttransactionData.gasData.budget = computeGasBudget(\n\t\tsimulateResult.Transaction.effects!.gasUsed,\n\t\ttransactionData.gasData.price ? String(transactionData.gasData.price) : undefined,\n\t);\n}\n\nfunction setGasPayment({\n\ttransactionData,\n\tbalance,\n\tcoins,\n\tusesGasCoin,\n\twithdrawals,\n\tgasPayer,\n\tchainIdentifier,\n\tepoch,\n}: {\n\ttransactionData: TransactionDataBuilder;\n\tbalance: SuiClientTypes.GetBalanceResponse;\n\tcoins: SuiClientTypes.ListCoinsResponse;\n\tusesGasCoin: boolean;\n\twithdrawals: bigint;\n\tgasPayer: string;\n\tchainIdentifier: string | null;\n\tepoch: string | null;\n}) {\n\tconst budget = BigInt(transactionData.gasData.budget!);\n\tconst addressBalance = BigInt(balance.balance.addressBalance);\n\n\tif (budget === 0n || (!usesGasCoin && addressBalance >= budget + withdrawals)) {\n\t\ttransactionData.gasData.payment = [];\n\t\treturn;\n\t}\n\n\tconst filteredCoins = coins.objects.filter((coin) => {\n\t\tconst matchingInput = transactionData.inputs.find((input) => {\n\t\t\tif (input.Object?.ImmOrOwnedObject) {\n\t\t\t\treturn coin.objectId === input.Object.ImmOrOwnedObject.objectId;\n\t\t\t}\n\n\t\t\treturn false;\n\t\t});\n\n\t\treturn !matchingInput;\n\t});\n\n\tconst paymentCoins = filteredCoins.map((coin) => ({\n\t\tobjectId: coin.objectId,\n\t\tdigest: coin.digest,\n\t\tversion: coin.version,\n\t}));\n\n\tconst reservationAmount = addressBalance - withdrawals;\n\n\tif (usesGasCoin && reservationAmount > 0n && chainIdentifier && epoch) {\n\t\ttransactionData.gasData.payment = [\n\t\t\tcreateCoinReservationRef(reservationAmount, gasPayer, chainIdentifier, epoch),\n\t\t\t...paymentCoins,\n\t\t];\n\t} else if (!filteredCoins.length) {\n\t\tthrow new Error('No valid gas coins found for the transaction.');\n\t} else {\n\t\ttransactionData.gasData.payment = paymentCoins;\n\t}\n}\n\ninterface SystemStateData {\n\tepoch: string;\n\treferenceGasPrice: string;\n}\n\nasync function setExpiration(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n\tsystemState: SystemStateData | null,\n\texistingChainIdentifier: string | null = null,\n) {\n\tconst [chainIdentifier, resolvedSystemState] = await Promise.all([\n\t\texistingChainIdentifier ?? client.core.getChainIdentifier().then((r) => r.chainIdentifier),\n\t\tsystemState ?? client.core.getCurrentSystemState().then((r) => r.systemState),\n\t]);\n\ttransactionData.expiration = buildValidDuringExpiration(resolvedSystemState, chainIdentifier);\n}\n\ntype ValidDuringExpiration = {\n\t$kind: 'ValidDuring';\n\tValidDuring: {\n\t\tminEpoch: string;\n\t\tmaxEpoch: string;\n\t\tminTimestamp: null;\n\t\tmaxTimestamp: null;\n\t\tchain: string;\n\t\tnonce: number;\n\t};\n};\n\nfunction buildValidDuringExpiration(\n\tsystemState: SystemStateData,\n\tchainIdentifier: string,\n): ValidDuringExpiration {\n\tconst currentEpoch = BigInt(systemState.epoch);\n\treturn {\n\t\t$kind: 'ValidDuring',\n\t\tValidDuring: {\n\t\t\tminEpoch: String(currentEpoch),\n\t\t\tmaxEpoch: String(currentEpoch + 1n),\n\t\t\tminTimestamp: null,\n\t\t\tmaxTimestamp: null,\n\t\t\tchain: chainIdentifier,\n\t\t\tnonce: (Math.random() * 0x100000000) >>> 0,\n\t\t},\n\t};\n}\n\nasync function resolveObjectReferences(\n\ttransactionData: TransactionDataBuilder,\n\tclient: ClientWithCoreApi,\n) {\n\t// Keep track of the object references that will need to be resolved at the end of the transaction.\n\t// We keep the input by-reference to avoid needing to re-resolve it:\n\tconst objectsToResolve = transactionData.inputs.filter((input) => {\n\t\treturn (\n\t\t\tinput.UnresolvedObject &&\n\t\t\t!(input.UnresolvedObject.version || input.UnresolvedObject?.initialSharedVersion)\n\t\t);\n\t}) as Extract<CallArg, { UnresolvedObject: unknown }>[];\n\n\tconst dedupedIds = [\n\t\t...new Set(\n\t\t\tobjectsToResolve.map((input) => normalizeSuiObjectId(input.UnresolvedObject.objectId)),\n\t\t),\n\t];\n\n\tconst objectChunks = dedupedIds.length ? chunk(dedupedIds, MAX_OBJECTS_PER_FETCH) : [];\n\tconst resolved = (\n\t\tawait Promise.all(\n\t\t\tobjectChunks.map((chunkIds) =>\n\t\t\t\tclient.core.getObjects({\n\t\t\t\t\tobjectIds: chunkIds,\n\t\t\t\t}),\n\t\t\t),\n\t\t)\n\t).flatMap((result) => result.objects);\n\n\tconst responsesById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, resolved[index]];\n\t\t}),\n\t);\n\n\tconst invalidObjects = Array.from(responsesById)\n\t\t.filter(([_, obj]) => obj instanceof Error)\n\t\t.map(([_, obj]) => (obj as Error).message);\n\n\tif (invalidObjects.length) {\n\t\tthrow new Error(`The following input objects are invalid: ${invalidObjects.join(', ')}`);\n\t}\n\n\tconst objects = resolved.map((object) => {\n\t\tif (object instanceof Error) {\n\t\t\tthrow new Error(`Failed to fetch object: ${object.message}`);\n\t\t}\n\t\tconst owner = object.owner;\n\t\tconst initialSharedVersion =\n\t\t\towner && typeof owner === 'object'\n\t\t\t\t? owner.$kind === 'Shared'\n\t\t\t\t\t? owner.Shared.initialSharedVersion\n\t\t\t\t\t: owner.$kind === 'ConsensusAddressOwner'\n\t\t\t\t\t\t? owner.ConsensusAddressOwner.startVersion\n\t\t\t\t\t\t: null\n\t\t\t\t: null;\n\n\t\treturn {\n\t\t\tobjectId: object.objectId,\n\t\t\tdigest: object.digest,\n\t\t\tversion: object.version,\n\t\t\tinitialSharedVersion,\n\t\t};\n\t});\n\n\tconst objectsById = new Map(\n\t\tdedupedIds.map((id, index) => {\n\t\t\treturn [id, objects[index]];\n\t\t}),\n\t);\n\n\tfor (const [index, input] of transactionData.inputs.entries()) {\n\t\tif (!input.UnresolvedObject) {\n\t\t\tcontinue;\n\t\t}\n\n\t\tlet updated: CallArg | undefined;\n\t\tconst id = normalizeSuiAddress(input.UnresolvedObject.objectId);\n\t\tconst object = objectsById.get(id);\n\n\t\tif (input.UnresolvedObject.initialSharedVersion ?? object?.initialSharedVersion) {\n\t\t\tupdated = Inputs.SharedObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tinitialSharedVersion:\n\t\t\t\t\tinput.UnresolvedObject.initialSharedVersion || object?.initialSharedVersion!,\n\t\t\t\tmutable: input.UnresolvedObject.mutable || isUsedAsMutable(transactionData, index),\n\t\t\t});\n\t\t} else if (isUsedAsReceiving(transactionData, index)) {\n\t\t\tupdated = Inputs.ReceivingRef(\n\t\t\t\t{\n\t\t\t\t\tobjectId: id,\n\t\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t\t}!,\n\t\t\t);\n\t\t}\n\n\t\ttransactionData.inputs[transactionData.inputs.indexOf(input)] =\n\t\t\tupdated ??\n\t\t\tInputs.ObjectRef({\n\t\t\t\tobjectId: id,\n\t\t\t\tdigest: input.UnresolvedObject.digest ?? object?.digest!,\n\t\t\t\tversion: input.UnresolvedObject.version ?? object?.version!,\n\t\t\t});\n\t}\n}\n\nasync function normalizeInputs(transactionData: TransactionDataBuilder, client: ClientWithCoreApi) {\n\tconst { inputs, commands } = transactionData;\n\tconst moveCallsToResolve: Extract<Command, { MoveCall: unknown }>['MoveCall'][] = [];\n\tconst moveFunctionsToResolve = new Set<string>();\n\n\tcommands.forEach((command) => {\n\t\t// Special case move call:\n\t\tif (command.MoveCall) {\n\t\t\t// Determine if any of the arguments require encoding.\n\t\t\t// - If they don't, then this is good to go.\n\t\t\t// - If they do, then we need to fetch the normalized move module.\n\n\t\t\t// If we already know the argument types, we don't need to resolve them again\n\t\t\tif (command.MoveCall._argumentTypes) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputs = command.MoveCall.arguments.map((arg) => {\n\t\t\t\tif (arg.$kind === 'Input') {\n\t\t\t\t\treturn transactionData.inputs[arg.Input];\n\t\t\t\t}\n\t\t\t\treturn null;\n\t\t\t});\n\t\t\tconst needsResolution = inputs.some(\n\t\t\t\t(input) =>\n\t\t\t\t\tinput?.UnresolvedPure ||\n\t\t\t\t\t(input?.UnresolvedObject && typeof input?.UnresolvedObject.mutable !== 'boolean'),\n\t\t\t);\n\n\t\t\tif (needsResolution) {\n\t\t\t\tconst functionName = `${command.MoveCall.package}::${command.MoveCall.module}::${command.MoveCall.function}`;\n\t\t\t\tmoveFunctionsToResolve.add(functionName);\n\t\t\t\tmoveCallsToResolve.push(command.MoveCall);\n\t\t\t}\n\t\t}\n\t});\n\n\tconst moveFunctionParameters = new Map<string, SuiClientTypes.OpenSignature[]>();\n\tif (moveFunctionsToResolve.size > 0) {\n\t\tawait Promise.all(\n\t\t\t[...moveFunctionsToResolve].map(async (functionName) => {\n\t\t\t\tconst [packageId, moduleName, name] = functionName.split('::');\n\t\t\t\tconst { function: def } = await client.core.getMoveFunction({\n\t\t\t\t\tpackageId,\n\t\t\t\t\tmoduleName,\n\t\t\t\t\tname,\n\t\t\t\t});\n\n\t\t\t\tmoveFunctionParameters.set(functionName, def.parameters);\n\t\t\t}),\n\t\t);\n\t}\n\n\tif (moveCallsToResolve.length) {\n\t\tawait Promise.all(\n\t\t\tmoveCallsToResolve.map(async (moveCall) => {\n\t\t\t\tconst parameters = moveFunctionParameters.get(\n\t\t\t\t\t`${moveCall.package}::${moveCall.module}::${moveCall.function}`,\n\t\t\t\t);\n\n\t\t\t\tif (!parameters) {\n\t\t\t\t\treturn;\n\t\t\t\t}\n\n\t\t\t\t// Entry functions can have a mutable reference to an instance of the TxContext\n\t\t\t\t// struct defined in the TxContext module as the last parameter. The caller of\n\t\t\t\t// the function does not need to pass it in as an argument.\n\t\t\t\tconst hasTxContext = parameters.length > 0 && isTxContext(parameters.at(-1)!);\n\t\t\t\tconst params = hasTxContext ? parameters.slice(0, parameters.length - 1) : parameters;\n\n\t\t\t\tmoveCall._argumentTypes = params;\n\t\t\t}),\n\t\t);\n\t}\n\n\tcommands.forEach((command) => {\n\t\tif (!command.MoveCall) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst moveCall = command.MoveCall;\n\t\tconst fnName = `${moveCall.package}::${moveCall.module}::${moveCall.function}`;\n\t\tconst params = moveCall._argumentTypes;\n\n\t\tif (!params) {\n\t\t\treturn;\n\t\t}\n\n\t\tif (params.length !== command.MoveCall.arguments.length) {\n\t\t\tthrow new Error(`Incorrect number of arguments for ${fnName}`);\n\t\t}\n\n\t\tparams.forEach((param, i) => {\n\t\t\tconst arg = moveCall.arguments[i];\n\t\t\tif (arg.$kind !== 'Input') return;\n\t\t\tconst input = inputs[arg.Input];\n\n\t\t\t// Skip if the input is already resolved\n\t\t\tif (!input.UnresolvedPure && !input.UnresolvedObject) {\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tconst inputValue = input.UnresolvedPure?.value ?? input.UnresolvedObject?.objectId!;\n\n\t\t\tconst schema = getPureBcsSchema(param.body);\n\t\t\tif (schema) {\n\t\t\t\targ.type = 'pure';\n\t\t\t\tinputs[inputs.indexOf(input)] = Inputs.Pure(schema.serialize(inputValue));\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\tif (typeof inputValue !== 'string') {\n\t\t\t\tthrow new Error(\n\t\t\t\t\t`Expect the argument to be an object id string, got ${JSON.stringify(\n\t\t\t\t\t\tinputValue,\n\t\t\t\t\t\tnull,\n\t\t\t\t\t\t2,\n\t\t\t\t\t)}`,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\targ.type = 'object';\n\t\t\tconst unresolvedObject: typeof input = input.UnresolvedPure\n\t\t\t\t? {\n\t\t\t\t\t\t$kind: 'UnresolvedObject',\n\t\t\t\t\t\tUnresolvedObject: {\n\t\t\t\t\t\t\tobjectId: inputValue,\n\t\t\t\t\t\t},\n\t\t\t\t\t}\n\t\t\t\t: input;\n\n\t\t\tinputs[arg.Input] = unresolvedObject;\n\t\t});\n\t});\n}\n\nfunction isUsedAsMutable(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsMutable = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsMutable =\n\t\t\t\ttx.MoveCall._argumentTypes[argIndex].reference !== 'immutable' || usedAsMutable;\n\t\t}\n\n\t\tif (\n\t\t\ttx.$kind === 'MakeMoveVec' ||\n\t\t\ttx.$kind === 'MergeCoins' ||\n\t\t\ttx.$kind === 'SplitCoins' ||\n\t\t\ttx.$kind === 'TransferObjects'\n\t\t) {\n\t\t\tusedAsMutable = true;\n\t\t}\n\t});\n\n\treturn usedAsMutable;\n}\n\nfunction isUsedAsReceiving(transactionData: TransactionDataBuilder, index: number) {\n\tlet usedAsReceiving = false;\n\n\ttransactionData.getInputUses(index, (arg, tx) => {\n\t\tif (tx.MoveCall && tx.MoveCall._argumentTypes) {\n\t\t\tconst argIndex = tx.MoveCall.arguments.indexOf(arg);\n\t\t\tusedAsReceiving = isReceivingType(tx.MoveCall._argumentTypes[argIndex]) || usedAsReceiving;\n\t\t}\n\t});\n\n\treturn usedAsReceiving;\n}\n\nconst RECEIVING_TYPE =\n\t'0x0000000000000000000000000000000000000000000000000000000000000002::transfer::Receiving';\n\nfunction isReceivingType(type: SuiClientTypes.OpenSignature): boolean {\n\tif (type.body.$kind !== 'datatype') {\n\t\treturn false;\n\t}\n\n\treturn type.body.datatype.typeName === RECEIVING_TYPE;\n}\n"],"mappings":"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"}
@@ -23,6 +23,20 @@ declare function toSerializedSignature({
23
23
  * Decodes a serialized signature into its constituent components: the signature scheme, the actual signature, and the public key
24
24
  */
25
25
  declare function parseSerializedSignature(serializedSignature: string): {
26
+ signatureScheme: "Passkey";
27
+ serializedSignature: string;
28
+ signature: Uint8Array<ArrayBufferLike>;
29
+ authenticatorData: Uint8Array<ArrayBufferLike>;
30
+ clientDataJson: string;
31
+ userSignature: Uint8Array<ArrayBuffer>;
32
+ publicKey: Uint8Array<ArrayBuffer>;
33
+ } | {
34
+ serializedSignature: string;
35
+ signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
36
+ signature: Uint8Array<ArrayBuffer>;
37
+ publicKey: Uint8Array<ArrayBuffer>;
38
+ bytes: Uint8Array<ArrayBuffer>;
39
+ } | {
26
40
  serializedSignature: string;
27
41
  signatureScheme: "ZkLogin";
28
42
  zkLogin: {
@@ -46,20 +60,6 @@ declare function parseSerializedSignature(serializedSignature: string): {
46
60
  };
47
61
  signature: Uint8Array<ArrayBufferLike>;
48
62
  publicKey: Uint8Array<ArrayBuffer>;
49
- } | {
50
- signatureScheme: "Passkey";
51
- serializedSignature: string;
52
- signature: Uint8Array<ArrayBufferLike>;
53
- authenticatorData: Uint8Array<ArrayBufferLike>;
54
- clientDataJson: string;
55
- userSignature: Uint8Array<ArrayBuffer>;
56
- publicKey: Uint8Array<ArrayBuffer>;
57
- } | {
58
- serializedSignature: string;
59
- signatureScheme: "ED25519" | "Secp256k1" | "Secp256r1";
60
- signature: Uint8Array<ArrayBuffer>;
61
- publicKey: Uint8Array<ArrayBuffer>;
62
- bytes: Uint8Array<ArrayBuffer>;
63
63
  } | {
64
64
  serializedSignature: string;
65
65
  signatureScheme: "MultiSig";
@@ -1,6 +1,6 @@
1
1
  import { LookupNameRequest, LookupNameResponse, ReverseLookupNameRequest, ReverseLookupNameResponse } from "./name_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_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/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_rpc4.MethodInfo<any, any>[];
26
+ methods: _protobuf_ts_runtime_rpc5.MethodInfo<any, any>[];
27
27
  options: {
28
- [extensionName: string]: _protobuf_ts_runtime4.JsonValue;
28
+ [extensionName: string]: _protobuf_ts_runtime5.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_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/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_rpc2.MethodInfo<any, any>[];
24
+ methods: _protobuf_ts_runtime_rpc3.MethodInfo<any, any>[];
25
25
  options: {
26
- [extensionName: string]: _protobuf_ts_runtime2.JsonValue;
26
+ [extensionName: string]: _protobuf_ts_runtime3.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_runtime3 from "@protobuf-ts/runtime";
3
- import * as _protobuf_ts_runtime_rpc3 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/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_rpc3.MethodInfo<any, any>[];
38
+ methods: _protobuf_ts_runtime_rpc6.MethodInfo<any, any>[];
39
39
  options: {
40
- [extensionName: string]: _protobuf_ts_runtime3.JsonValue;
40
+ [extensionName: string]: _protobuf_ts_runtime6.JsonValue;
41
41
  };
42
42
  constructor(_transport: RpcTransport);
43
43
  /**