@mysten/sui 1.26.1 → 1.27.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.
Files changed (129) hide show
  1. package/CHANGELOG.md +13 -0
  2. package/dist/cjs/bcs/bcs.d.ts +3 -2
  3. package/dist/cjs/bcs/bcs.js +3 -3
  4. package/dist/cjs/bcs/bcs.js.map +2 -2
  5. package/dist/cjs/bcs/effects.d.ts +18 -12
  6. package/dist/cjs/bcs/index.d.ts +460 -453
  7. package/dist/cjs/bcs/index.js +4 -4
  8. package/dist/cjs/bcs/index.js.map +1 -1
  9. package/dist/cjs/client/client.d.ts +38 -16
  10. package/dist/cjs/client/client.js +142 -62
  11. package/dist/cjs/client/client.js.map +2 -2
  12. package/dist/cjs/client/http-transport.d.ts +2 -0
  13. package/dist/cjs/client/http-transport.js +7 -0
  14. package/dist/cjs/client/http-transport.js.map +2 -2
  15. package/dist/cjs/client/rpc-websocket-client.d.ts +2 -1
  16. package/dist/cjs/client/rpc-websocket-client.js +7 -2
  17. package/dist/cjs/client/rpc-websocket-client.js.map +2 -2
  18. package/dist/cjs/client/types/generated.d.ts +1 -0
  19. package/dist/cjs/client/types/generated.js.map +1 -1
  20. package/dist/cjs/client/types/params.d.ts +56 -0
  21. package/dist/cjs/client/types/params.js.map +1 -1
  22. package/dist/cjs/experimental/cache.d.ts +11 -0
  23. package/dist/cjs/experimental/cache.js +79 -0
  24. package/dist/cjs/experimental/cache.js.map +7 -0
  25. package/dist/cjs/experimental/client.d.ts +4 -2
  26. package/dist/cjs/experimental/client.js +4 -2
  27. package/dist/cjs/experimental/client.js.map +2 -2
  28. package/dist/cjs/experimental/core.d.ts +10 -2
  29. package/dist/cjs/experimental/core.js +59 -1
  30. package/dist/cjs/experimental/core.js.map +2 -2
  31. package/dist/cjs/experimental/index.d.ts +5 -0
  32. package/dist/cjs/experimental/index.js +29 -0
  33. package/dist/cjs/experimental/index.js.map +7 -0
  34. package/dist/cjs/experimental/transports/jsonRPC.d.ts +19 -5
  35. package/dist/cjs/experimental/transports/jsonRPC.js +270 -12
  36. package/dist/cjs/experimental/transports/jsonRPC.js.map +2 -2
  37. package/dist/cjs/experimental/types.d.ts +84 -41
  38. package/dist/cjs/experimental/types.js.map +1 -1
  39. package/dist/cjs/keypairs/secp256k1/keypair.js +1 -1
  40. package/dist/cjs/keypairs/secp256k1/keypair.js.map +2 -2
  41. package/dist/cjs/keypairs/secp256r1/keypair.js +1 -1
  42. package/dist/cjs/keypairs/secp256r1/keypair.js.map +2 -2
  43. package/dist/cjs/multisig/publickey.js +5 -5
  44. package/dist/cjs/multisig/publickey.js.map +2 -2
  45. package/dist/cjs/multisig/signer.js +2 -2
  46. package/dist/cjs/multisig/signer.js.map +2 -2
  47. package/dist/cjs/transactions/intents/CoinWithBalance.d.ts +2 -2
  48. package/dist/cjs/transactions/intents/CoinWithBalance.js +6 -1
  49. package/dist/cjs/transactions/intents/CoinWithBalance.js.map +2 -2
  50. package/dist/cjs/transactions/plugins/utils.js +2 -2
  51. package/dist/cjs/transactions/plugins/utils.js.map +2 -2
  52. package/dist/cjs/version.d.ts +2 -2
  53. package/dist/cjs/version.js +2 -2
  54. package/dist/cjs/version.js.map +1 -1
  55. package/dist/esm/bcs/bcs.d.ts +3 -2
  56. package/dist/esm/bcs/bcs.js +3 -3
  57. package/dist/esm/bcs/bcs.js.map +2 -2
  58. package/dist/esm/bcs/effects.d.ts +18 -12
  59. package/dist/esm/bcs/index.d.ts +460 -453
  60. package/dist/esm/bcs/index.js +4 -4
  61. package/dist/esm/bcs/index.js.map +1 -1
  62. package/dist/esm/client/client.d.ts +38 -16
  63. package/dist/esm/client/client.js +143 -63
  64. package/dist/esm/client/client.js.map +2 -2
  65. package/dist/esm/client/http-transport.d.ts +2 -0
  66. package/dist/esm/client/http-transport.js +7 -0
  67. package/dist/esm/client/http-transport.js.map +2 -2
  68. package/dist/esm/client/rpc-websocket-client.d.ts +2 -1
  69. package/dist/esm/client/rpc-websocket-client.js +7 -2
  70. package/dist/esm/client/rpc-websocket-client.js.map +2 -2
  71. package/dist/esm/client/types/generated.d.ts +1 -0
  72. package/dist/esm/client/types/params.d.ts +56 -0
  73. package/dist/esm/experimental/cache.d.ts +11 -0
  74. package/dist/esm/experimental/cache.js +59 -0
  75. package/dist/esm/experimental/cache.js.map +7 -0
  76. package/dist/esm/experimental/client.d.ts +4 -2
  77. package/dist/esm/experimental/client.js +4 -2
  78. package/dist/esm/experimental/client.js.map +2 -2
  79. package/dist/esm/experimental/core.d.ts +10 -2
  80. package/dist/esm/experimental/core.js +60 -2
  81. package/dist/esm/experimental/core.js.map +2 -2
  82. package/dist/esm/experimental/index.d.ts +5 -0
  83. package/dist/esm/experimental/index.js +9 -0
  84. package/dist/esm/experimental/index.js.map +7 -0
  85. package/dist/esm/experimental/transports/jsonRPC.d.ts +19 -5
  86. package/dist/esm/experimental/transports/jsonRPC.js +270 -12
  87. package/dist/esm/experimental/transports/jsonRPC.js.map +2 -2
  88. package/dist/esm/experimental/types.d.ts +84 -41
  89. package/dist/esm/keypairs/secp256k1/keypair.js +1 -1
  90. package/dist/esm/keypairs/secp256k1/keypair.js.map +2 -2
  91. package/dist/esm/keypairs/secp256r1/keypair.js +1 -1
  92. package/dist/esm/keypairs/secp256r1/keypair.js.map +2 -2
  93. package/dist/esm/multisig/publickey.js +5 -5
  94. package/dist/esm/multisig/publickey.js.map +2 -2
  95. package/dist/esm/multisig/signer.js +2 -2
  96. package/dist/esm/multisig/signer.js.map +2 -2
  97. package/dist/esm/transactions/intents/CoinWithBalance.d.ts +2 -2
  98. package/dist/esm/transactions/intents/CoinWithBalance.js +6 -1
  99. package/dist/esm/transactions/intents/CoinWithBalance.js.map +2 -2
  100. package/dist/esm/transactions/plugins/utils.js +2 -2
  101. package/dist/esm/transactions/plugins/utils.js.map +2 -2
  102. package/dist/esm/version.d.ts +2 -2
  103. package/dist/esm/version.js +2 -2
  104. package/dist/esm/version.js.map +1 -1
  105. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  106. package/dist/tsconfig.tsbuildinfo +1 -1
  107. package/experimental/package.json +6 -0
  108. package/package.json +7 -2
  109. package/src/bcs/bcs.ts +3 -3
  110. package/src/bcs/index.ts +3 -3
  111. package/src/client/client.ts +119 -26
  112. package/src/client/http-transport.ts +10 -0
  113. package/src/client/rpc-websocket-client.ts +8 -1
  114. package/src/client/types/generated.ts +1 -0
  115. package/src/client/types/params.ts +68 -6
  116. package/src/experimental/cache.ts +64 -0
  117. package/src/experimental/client.ts +4 -2
  118. package/src/experimental/core.ts +89 -2
  119. package/src/experimental/index.ts +20 -0
  120. package/src/experimental/transports/jsonRPC.ts +319 -9
  121. package/src/experimental/types.ts +92 -48
  122. package/src/keypairs/secp256k1/keypair.ts +1 -1
  123. package/src/keypairs/secp256r1/keypair.ts +1 -1
  124. package/src/multisig/publickey.ts +5 -5
  125. package/src/multisig/signer.ts +2 -2
  126. package/src/transactions/__tests__/bcs.test.ts +2 -2
  127. package/src/transactions/intents/CoinWithBalance.ts +11 -3
  128. package/src/transactions/plugins/utils.ts +2 -2
  129. package/src/version.ts +2 -2
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/experimental/client.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable @typescript-eslint/ban-types */\n\nimport type { Experimental_CoreClient } from './core.js';\nimport type {\n\tClientWithExtensions,\n\tExperimental_SuiClientTypes,\n\tSimplify,\n\tSuiClientRegistration,\n\tUnionToIntersection,\n} from './types.js';\n\nexport abstract class Experimental_SuiClient {\n\tnetwork: Experimental_SuiClientTypes.Network;\n\n\tconstructor({ network }: Experimental_SuiClientTypes.SuiClientOptions) {\n\t\tthis.network = network;\n\t}\n\n\tabstract core: Experimental_CoreClient;\n\n\t$extend<const Registrations extends SuiClientRegistration<this>[]>(\n\t\t...registrations: Registrations\n\t) {\n\t\treturn Object.create(\n\t\t\tthis,\n\t\t\tObject.fromEntries(\n\t\t\t\tregistrations.map((registration) => {\n\t\t\t\t\tif ('experimental_asClientExtension' in registration) {\n\t\t\t\t\t\tconst { name, register } = registration.experimental_asClientExtension();\n\t\t\t\t\t\treturn [name, { value: register(this) }];\n\t\t\t\t\t}\n\t\t\t\t\treturn [registration.name, { value: registration.register(this) }];\n\t\t\t\t}),\n\t\t\t),\n\t\t) as ClientWithExtensions<\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\t{\n\t\t\t\t\t\t[K in keyof this]: this[K];\n\t\t\t\t\t},\n\t\t\t\t\tkeyof Experimental_SuiClient\n\t\t\t\t> &\n\t\t\t\t\tUnionToIntersection<\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[K in keyof Registrations]: Registrations[K] extends SuiClientRegistration<\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\tinfer Name extends string,\n\t\t\t\t\t\t\t\tinfer Extension\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t[K2 in Name]: Extension;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t}[number]\n\t\t\t\t\t>\n\t\t\t>\n\t\t>;\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAaO,MAAe,uBAAuB;AAAA,EAG5C,YAAY,EAAE,QAAQ,GAAiD;AACtE,SAAK,UAAU;AAAA,EAChB;AAAA,EAIA,WACI,eACF;AACD,WAAO,OAAO;AAAA,MACb;AAAA,MACA,OAAO;AAAA,QACN,cAAc,IAAI,CAAC,iBAAiB;AACnC,cAAI,oCAAoC,cAAc;AACrD,kBAAM,EAAE,MAAM,SAAS,IAAI,aAAa,+BAA+B;AACvE,mBAAO,CAAC,MAAM,EAAE,OAAO,SAAS,IAAI,EAAE,CAAC;AAAA,UACxC;AACA,iBAAO,CAAC,aAAa,MAAM,EAAE,OAAO,aAAa,SAAS,IAAI,EAAE,CAAC;AAAA,QAClE,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EAuBD;AACD;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n/* eslint-disable @typescript-eslint/ban-types */\n\nimport { ClientCache } from './cache.js';\nimport type { Experimental_CoreClient } from './core.js';\nimport type {\n\tClientWithExtensions,\n\tExperimental_SuiClientTypes,\n\tSimplify,\n\tSuiClientRegistration,\n\tUnionToIntersection,\n} from './types.js';\n\nexport abstract class Experimental_BaseClient {\n\tnetwork: Experimental_SuiClientTypes.Network;\n\tcache = new ClientCache();\n\n\tconstructor({ network }: Experimental_SuiClientTypes.SuiClientOptions) {\n\t\tthis.network = network;\n\t}\n\n\tabstract core: Experimental_CoreClient;\n\n\t$extend<const Registrations extends SuiClientRegistration<this>[]>(\n\t\t...registrations: Registrations\n\t) {\n\t\treturn Object.create(\n\t\t\tthis,\n\t\t\tObject.fromEntries(\n\t\t\t\tregistrations.map((registration) => {\n\t\t\t\t\tif ('experimental_asClientExtension' in registration) {\n\t\t\t\t\t\tconst { name, register } = registration.experimental_asClientExtension();\n\t\t\t\t\t\treturn [name, { value: register(this) }];\n\t\t\t\t\t}\n\t\t\t\t\treturn [registration.name, { value: registration.register(this) }];\n\t\t\t\t}),\n\t\t\t),\n\t\t) as ClientWithExtensions<\n\t\t\tSimplify<\n\t\t\t\tOmit<\n\t\t\t\t\t{\n\t\t\t\t\t\t[K in keyof this]: this[K];\n\t\t\t\t\t},\n\t\t\t\t\tkeyof Experimental_BaseClient\n\t\t\t\t> &\n\t\t\t\t\tUnionToIntersection<\n\t\t\t\t\t\t{\n\t\t\t\t\t\t\t[K in keyof Registrations]: Registrations[K] extends SuiClientRegistration<\n\t\t\t\t\t\t\t\tthis,\n\t\t\t\t\t\t\t\tinfer Name extends string,\n\t\t\t\t\t\t\t\tinfer Extension\n\t\t\t\t\t\t\t>\n\t\t\t\t\t\t\t\t? {\n\t\t\t\t\t\t\t\t\t\t[K2 in Name]: Extension;\n\t\t\t\t\t\t\t\t\t}\n\t\t\t\t\t\t\t\t: never;\n\t\t\t\t\t\t}[number]\n\t\t\t\t\t>\n\t\t\t>\n\t\t>;\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAIA,mBAA4B;AAUrB,MAAe,wBAAwB;AAAA,EAI7C,YAAY,EAAE,QAAQ,GAAiD;AAFvE,iBAAQ,IAAI,yBAAY;AAGvB,SAAK,UAAU;AAAA,EAChB;AAAA,EAIA,WACI,eACF;AACD,WAAO,OAAO;AAAA,MACb;AAAA,MACA,OAAO;AAAA,QACN,cAAc,IAAI,CAAC,iBAAiB;AACnC,cAAI,oCAAoC,cAAc;AACrD,kBAAM,EAAE,MAAM,SAAS,IAAI,aAAa,+BAA+B;AACvE,mBAAO,CAAC,MAAM,EAAE,OAAO,SAAS,IAAI,EAAE,CAAC;AAAA,UACxC;AACA,iBAAO,CAAC,aAAa,MAAM,EAAE,OAAO,aAAa,SAAS,IAAI,EAAE,CAAC;AAAA,QAClE,CAAC;AAAA,MACF;AAAA,IACD;AAAA,EAuBD;AACD;",
6
6
  "names": []
7
7
  }
@@ -1,6 +1,6 @@
1
- import { Experimental_SuiClient } from './client.js';
1
+ import { Experimental_BaseClient } from './client.js';
2
2
  import type { Experimental_SuiClientTypes } from './types.js';
3
- export declare abstract class Experimental_CoreClient extends Experimental_SuiClient implements Experimental_SuiClientTypes.TransportMethods {
3
+ export declare abstract class Experimental_CoreClient extends Experimental_BaseClient implements Experimental_SuiClientTypes.TransportMethods {
4
4
  core: this;
5
5
  abstract getObjects(options: Experimental_SuiClientTypes.GetObjectsOptions): Promise<Experimental_SuiClientTypes.GetObjectsResponse>;
6
6
  abstract getCoins(options: Experimental_SuiClientTypes.GetCoinsOptions): Promise<Experimental_SuiClientTypes.GetCoinsResponse>;
@@ -11,4 +11,12 @@ export declare abstract class Experimental_CoreClient extends Experimental_SuiCl
11
11
  abstract executeTransaction(options: Experimental_SuiClientTypes.ExecuteTransactionOptions): Promise<Experimental_SuiClientTypes.ExecuteTransactionResponse>;
12
12
  abstract dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions): Promise<Experimental_SuiClientTypes.DryRunTransactionResponse>;
13
13
  abstract getReferenceGasPrice(): Promise<Experimental_SuiClientTypes.GetReferenceGasPriceResponse>;
14
+ abstract getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions): Promise<Experimental_SuiClientTypes.GetDynamicFieldsResponse>;
15
+ getDynamicField(options: Experimental_SuiClientTypes.GetDynamicFieldOptions): Promise<Experimental_SuiClientTypes.GetDynamicFieldResponse>;
16
+ waitForTransaction({ signal, timeout, ...input }: {
17
+ /** An optional abort signal that can be used to cancel the wait. */
18
+ signal?: AbortSignal;
19
+ /** The amount of time to wait for transaction. Defaults to one minute. */
20
+ timeout?: number;
21
+ } & Experimental_SuiClientTypes.GetTransactionOptions): Promise<Experimental_SuiClientTypes.GetTransactionResponse>;
14
22
  }
@@ -21,11 +21,69 @@ __export(core_exports, {
21
21
  Experimental_CoreClient: () => Experimental_CoreClient
22
22
  });
23
23
  module.exports = __toCommonJS(core_exports);
24
+ var import_type_tag_serializer = require("../bcs/type-tag-serializer.js");
25
+ var import_dynamic_fields = require("../utils/dynamic-fields.js");
26
+ var import_sui_types = require("../utils/sui-types.js");
24
27
  var import_client = require("./client.js");
25
- class Experimental_CoreClient extends import_client.Experimental_SuiClient {
28
+ class Experimental_CoreClient extends import_client.Experimental_BaseClient {
26
29
  constructor() {
27
30
  super(...arguments);
28
31
  this.core = this;
29
32
  }
33
+ async getDynamicField(options) {
34
+ const fieldId = (0, import_dynamic_fields.deriveDynamicFieldID)(
35
+ options.parentId,
36
+ import_type_tag_serializer.TypeTagSerializer.parseFromStr(options.name.type),
37
+ options.name.bcs
38
+ );
39
+ const {
40
+ objects: [fieldObject]
41
+ } = await this.getObjects({
42
+ objectIds: [fieldId]
43
+ });
44
+ if (fieldObject instanceof Error) {
45
+ throw fieldObject;
46
+ }
47
+ const fieldType = (0, import_sui_types.parseStructTag)(fieldObject.type);
48
+ return {
49
+ dynamicField: {
50
+ id: fieldObject.id,
51
+ digest: fieldObject.digest,
52
+ version: fieldObject.version,
53
+ type: fieldObject.type,
54
+ name: {
55
+ type: typeof fieldType.typeParams[0] === "string" ? fieldType.typeParams[0] : (0, import_sui_types.normalizeStructTag)(fieldType.typeParams[0]),
56
+ bcs: options.name.bcs
57
+ },
58
+ value: {
59
+ type: typeof fieldType.typeParams[1] === "string" ? fieldType.typeParams[1] : (0, import_sui_types.normalizeStructTag)(fieldType.typeParams[1]),
60
+ bcs: fieldObject.content.slice(import_sui_types.SUI_ADDRESS_LENGTH + options.name.bcs.length)
61
+ }
62
+ }
63
+ };
64
+ }
65
+ async waitForTransaction({
66
+ signal,
67
+ timeout = 60 * 1e3,
68
+ ...input
69
+ }) {
70
+ const abortSignal = signal ? AbortSignal.any([AbortSignal.timeout(timeout), signal]) : AbortSignal.timeout(timeout);
71
+ const abortPromise = new Promise((_, reject) => {
72
+ abortSignal.addEventListener("abort", () => reject(abortSignal.reason));
73
+ });
74
+ abortPromise.catch(() => {
75
+ });
76
+ while (true) {
77
+ abortSignal.throwIfAborted();
78
+ try {
79
+ return await this.getTransaction({
80
+ ...input,
81
+ signal: abortSignal
82
+ });
83
+ } catch (e) {
84
+ await Promise.race([new Promise((resolve) => setTimeout(resolve, 2e3)), abortPromise]);
85
+ }
86
+ }
87
+ }
30
88
  }
31
89
  //# sourceMappingURL=core.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/experimental/core.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Experimental_SuiClient } from './client.js';\nimport type { Experimental_SuiClientTypes } from './types.js';\n\nexport abstract class Experimental_CoreClient\n\textends Experimental_SuiClient\n\timplements Experimental_SuiClientTypes.TransportMethods\n{\n\tcore = this;\n\n\tabstract getObjects(\n\t\toptions: Experimental_SuiClientTypes.GetObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetObjectsResponse>;\n\n\tabstract getCoins(\n\t\toptions: Experimental_SuiClientTypes.GetCoinsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetCoinsResponse>;\n\n\tabstract getOwnedObjects(\n\t\toptions: Experimental_SuiClientTypes.GetOwnedObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetOwnedObjectsResponse>;\n\n\tabstract getBalance(\n\t\toptions: Experimental_SuiClientTypes.GetBalanceOptions,\n\t): Promise<Experimental_SuiClientTypes.GetBalanceResponse>;\n\n\tabstract getAllBalances(\n\t\toptions: Experimental_SuiClientTypes.GetAllBalancesOptions,\n\t): Promise<Experimental_SuiClientTypes.GetAllBalancesResponse>;\n\n\tabstract getTransaction(\n\t\toptions: Experimental_SuiClientTypes.GetTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.GetTransactionResponse>;\n\n\tabstract executeTransaction(\n\t\toptions: Experimental_SuiClientTypes.ExecuteTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.ExecuteTransactionResponse>;\n\n\tabstract dryRunTransaction(\n\t\toptions: Experimental_SuiClientTypes.DryRunTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.DryRunTransactionResponse>;\n\n\tabstract getReferenceGasPrice(): Promise<Experimental_SuiClientTypes.GetReferenceGasPriceResponse>;\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAAuC;AAGhC,MAAe,gCACb,qCAET;AAAA,EAHO;AAAA;AAIN,gBAAO;AAAA;AAmCR;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { TypeTagSerializer } from '../bcs/type-tag-serializer.js';\nimport { deriveDynamicFieldID } from '../utils/dynamic-fields.js';\nimport { normalizeStructTag, parseStructTag, SUI_ADDRESS_LENGTH } from '../utils/sui-types.js';\nimport { Experimental_BaseClient } from './client.js';\nimport type { Experimental_SuiClientTypes } from './types.js';\n\nexport abstract class Experimental_CoreClient\n\textends Experimental_BaseClient\n\timplements Experimental_SuiClientTypes.TransportMethods\n{\n\tcore = this;\n\n\tabstract getObjects(\n\t\toptions: Experimental_SuiClientTypes.GetObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetObjectsResponse>;\n\n\tabstract getCoins(\n\t\toptions: Experimental_SuiClientTypes.GetCoinsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetCoinsResponse>;\n\n\tabstract getOwnedObjects(\n\t\toptions: Experimental_SuiClientTypes.GetOwnedObjectsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetOwnedObjectsResponse>;\n\n\tabstract getBalance(\n\t\toptions: Experimental_SuiClientTypes.GetBalanceOptions,\n\t): Promise<Experimental_SuiClientTypes.GetBalanceResponse>;\n\n\tabstract getAllBalances(\n\t\toptions: Experimental_SuiClientTypes.GetAllBalancesOptions,\n\t): Promise<Experimental_SuiClientTypes.GetAllBalancesResponse>;\n\n\tabstract getTransaction(\n\t\toptions: Experimental_SuiClientTypes.GetTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.GetTransactionResponse>;\n\n\tabstract executeTransaction(\n\t\toptions: Experimental_SuiClientTypes.ExecuteTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.ExecuteTransactionResponse>;\n\n\tabstract dryRunTransaction(\n\t\toptions: Experimental_SuiClientTypes.DryRunTransactionOptions,\n\t): Promise<Experimental_SuiClientTypes.DryRunTransactionResponse>;\n\n\tabstract getReferenceGasPrice(): Promise<Experimental_SuiClientTypes.GetReferenceGasPriceResponse>;\n\n\tabstract getDynamicFields(\n\t\toptions: Experimental_SuiClientTypes.GetDynamicFieldsOptions,\n\t): Promise<Experimental_SuiClientTypes.GetDynamicFieldsResponse>;\n\n\tasync getDynamicField(\n\t\toptions: Experimental_SuiClientTypes.GetDynamicFieldOptions,\n\t): Promise<Experimental_SuiClientTypes.GetDynamicFieldResponse> {\n\t\tconst fieldId = deriveDynamicFieldID(\n\t\t\toptions.parentId,\n\t\t\tTypeTagSerializer.parseFromStr(options.name.type),\n\t\t\toptions.name.bcs,\n\t\t);\n\t\tconst {\n\t\t\tobjects: [fieldObject],\n\t\t} = await this.getObjects({\n\t\t\tobjectIds: [fieldId],\n\t\t});\n\n\t\tif (fieldObject instanceof Error) {\n\t\t\tthrow fieldObject;\n\t\t}\n\n\t\tconst fieldType = parseStructTag(fieldObject.type);\n\n\t\treturn {\n\t\t\tdynamicField: {\n\t\t\t\tid: fieldObject.id,\n\t\t\t\tdigest: fieldObject.digest,\n\t\t\t\tversion: fieldObject.version,\n\t\t\t\ttype: fieldObject.type,\n\t\t\t\tname: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[0] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[0]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[0]),\n\t\t\t\t\tbcs: options.name.bcs,\n\t\t\t\t},\n\t\t\t\tvalue: {\n\t\t\t\t\ttype:\n\t\t\t\t\t\ttypeof fieldType.typeParams[1] === 'string'\n\t\t\t\t\t\t\t? fieldType.typeParams[1]\n\t\t\t\t\t\t\t: normalizeStructTag(fieldType.typeParams[1]),\n\t\t\t\t\tbcs: fieldObject.content.slice(SUI_ADDRESS_LENGTH + options.name.bcs.length),\n\t\t\t\t},\n\t\t\t},\n\t\t};\n\t}\n\n\tasync waitForTransaction({\n\t\tsignal,\n\t\ttimeout = 60 * 1000,\n\t\t...input\n\t}: {\n\t\t/** An optional abort signal that can be used to cancel the wait. */\n\t\tsignal?: AbortSignal;\n\t\t/** The amount of time to wait for transaction. Defaults to one minute. */\n\t\ttimeout?: number;\n\t} & Experimental_SuiClientTypes.GetTransactionOptions): Promise<Experimental_SuiClientTypes.GetTransactionResponse> {\n\t\tconst abortSignal = signal\n\t\t\t? AbortSignal.any([AbortSignal.timeout(timeout), signal])\n\t\t\t: AbortSignal.timeout(timeout);\n\n\t\tconst abortPromise = new Promise((_, reject) => {\n\t\t\tabortSignal.addEventListener('abort', () => reject(abortSignal.reason));\n\t\t});\n\n\t\tabortPromise.catch(() => {\n\t\t\t// Swallow unhandled rejections that might be thrown after early return\n\t\t});\n\n\t\t// eslint-disable-next-line no-constant-condition\n\t\twhile (true) {\n\t\t\tabortSignal.throwIfAborted();\n\t\t\ttry {\n\t\t\t\treturn await this.getTransaction({\n\t\t\t\t\t...input,\n\t\t\t\t\tsignal: abortSignal,\n\t\t\t\t});\n\t\t\t} catch (e) {\n\t\t\t\tawait Promise.race([new Promise((resolve) => setTimeout(resolve, 2_000)), abortPromise]);\n\t\t\t}\n\t\t}\n\t}\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iCAAkC;AAClC,4BAAqC;AACrC,uBAAuE;AACvE,oBAAwC;AAGjC,MAAe,gCACb,sCAET;AAAA,EAHO;AAAA;AAIN,gBAAO;AAAA;AAAA,EAwCP,MAAM,gBACL,SAC+D;AAC/D,UAAM,cAAU;AAAA,MACf,QAAQ;AAAA,MACR,6CAAkB,aAAa,QAAQ,KAAK,IAAI;AAAA,MAChD,QAAQ,KAAK;AAAA,IACd;AACA,UAAM;AAAA,MACL,SAAS,CAAC,WAAW;AAAA,IACtB,IAAI,MAAM,KAAK,WAAW;AAAA,MACzB,WAAW,CAAC,OAAO;AAAA,IACpB,CAAC;AAED,QAAI,uBAAuB,OAAO;AACjC,YAAM;AAAA,IACP;AAEA,UAAM,gBAAY,iCAAe,YAAY,IAAI;AAEjD,WAAO;AAAA,MACN,cAAc;AAAA,QACb,IAAI,YAAY;AAAA,QAChB,QAAQ,YAAY;AAAA,QACpB,SAAS,YAAY;AAAA,QACrB,MAAM,YAAY;AAAA,QAClB,MAAM;AAAA,UACL,MACC,OAAO,UAAU,WAAW,CAAC,MAAM,WAChC,UAAU,WAAW,CAAC,QACtB,qCAAmB,UAAU,WAAW,CAAC,CAAC;AAAA,UAC9C,KAAK,QAAQ,KAAK;AAAA,QACnB;AAAA,QACA,OAAO;AAAA,UACN,MACC,OAAO,UAAU,WAAW,CAAC,MAAM,WAChC,UAAU,WAAW,CAAC,QACtB,qCAAmB,UAAU,WAAW,CAAC,CAAC;AAAA,UAC9C,KAAK,YAAY,QAAQ,MAAM,sCAAqB,QAAQ,KAAK,IAAI,MAAM;AAAA,QAC5E;AAAA,MACD;AAAA,IACD;AAAA,EACD;AAAA,EAEA,MAAM,mBAAmB;AAAA,IACxB;AAAA,IACA,UAAU,KAAK;AAAA,IACf,GAAG;AAAA,EACJ,GAKoH;AACnH,UAAM,cAAc,SACjB,YAAY,IAAI,CAAC,YAAY,QAAQ,OAAO,GAAG,MAAM,CAAC,IACtD,YAAY,QAAQ,OAAO;AAE9B,UAAM,eAAe,IAAI,QAAQ,CAAC,GAAG,WAAW;AAC/C,kBAAY,iBAAiB,SAAS,MAAM,OAAO,YAAY,MAAM,CAAC;AAAA,IACvE,CAAC;AAED,iBAAa,MAAM,MAAM;AAAA,IAEzB,CAAC;AAGD,WAAO,MAAM;AACZ,kBAAY,eAAe;AAC3B,UAAI;AACH,eAAO,MAAM,KAAK,eAAe;AAAA,UAChC,GAAG;AAAA,UACH,QAAQ;AAAA,QACT,CAAC;AAAA,MACF,SAAS,GAAG;AACX,cAAM,QAAQ,KAAK,CAAC,IAAI,QAAQ,CAAC,YAAY,WAAW,SAAS,GAAK,CAAC,GAAG,YAAY,CAAC;AAAA,MACxF;AAAA,IACD;AAAA,EACD;AACD;",
6
6
  "names": []
7
7
  }
@@ -0,0 +1,5 @@
1
+ import { Experimental_BaseClient } from './client.js';
2
+ import { Experimental_CoreClient } from './core.js';
3
+ import type { ClientWithExtensions, Experimental_SuiClientTypes, SuiClientRegistration } from './types.js';
4
+ export { Experimental_BaseClient, Experimental_CoreClient, type ClientWithExtensions, type Experimental_SuiClientTypes, type SuiClientRegistration, };
5
+ export { ClientCache, type ClientCacheOptions } from './cache.js';
@@ -0,0 +1,29 @@
1
+ "use strict";
2
+ var __defProp = Object.defineProperty;
3
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
4
+ var __getOwnPropNames = Object.getOwnPropertyNames;
5
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
6
+ var __export = (target, all) => {
7
+ for (var name in all)
8
+ __defProp(target, name, { get: all[name], enumerable: true });
9
+ };
10
+ var __copyProps = (to, from, except, desc) => {
11
+ if (from && typeof from === "object" || typeof from === "function") {
12
+ for (let key of __getOwnPropNames(from))
13
+ if (!__hasOwnProp.call(to, key) && key !== except)
14
+ __defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
15
+ }
16
+ return to;
17
+ };
18
+ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
19
+ var experimental_exports = {};
20
+ __export(experimental_exports, {
21
+ ClientCache: () => import_cache.ClientCache,
22
+ Experimental_BaseClient: () => import_client.Experimental_BaseClient,
23
+ Experimental_CoreClient: () => import_core.Experimental_CoreClient
24
+ });
25
+ module.exports = __toCommonJS(experimental_exports);
26
+ var import_client = require("./client.js");
27
+ var import_core = require("./core.js");
28
+ var import_cache = require("./cache.js");
29
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/experimental/index.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { Experimental_BaseClient } from './client.js';\nimport { Experimental_CoreClient } from './core.js';\nimport type {\n\tClientWithExtensions,\n\tExperimental_SuiClientTypes,\n\tSuiClientRegistration,\n} from './types.js';\n\nexport {\n\tExperimental_BaseClient,\n\tExperimental_CoreClient,\n\ttype ClientWithExtensions,\n\ttype Experimental_SuiClientTypes,\n\ttype SuiClientRegistration,\n};\n\nexport { ClientCache, type ClientCacheOptions } from './cache.js';\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,oBAAwC;AACxC,kBAAwC;AAexC,mBAAqD;",
6
+ "names": []
7
+ }
@@ -17,7 +17,7 @@ export declare class JSONRpcTransport extends Experimental_CoreClient {
17
17
  id: string;
18
18
  version: string;
19
19
  digest: string;
20
- balance: bigint;
20
+ balance: string;
21
21
  type: string;
22
22
  content: Uint8Array<ArrayBufferLike>;
23
23
  owner: {
@@ -31,13 +31,13 @@ export declare class JSONRpcTransport extends Experimental_CoreClient {
31
31
  getBalance(options: Experimental_SuiClientTypes.GetBalanceOptions): Promise<{
32
32
  balance: {
33
33
  coinType: string;
34
- balance: bigint;
34
+ balance: string;
35
35
  };
36
36
  }>;
37
37
  getAllBalances(options: Experimental_SuiClientTypes.GetAllBalancesOptions): Promise<{
38
38
  balances: {
39
39
  coinType: string;
40
- balance: bigint;
40
+ balance: string;
41
41
  }[];
42
42
  hasNextPage: boolean;
43
43
  cursor: null;
@@ -51,12 +51,26 @@ export declare class JSONRpcTransport extends Experimental_CoreClient {
51
51
  dryRunTransaction(options: Experimental_SuiClientTypes.DryRunTransactionOptions): Promise<{
52
52
  transaction: {
53
53
  digest: string;
54
- effects: never;
54
+ effects: Experimental_SuiClientTypes.TransactionEffects;
55
55
  signatures: never[];
56
56
  bcs: Uint8Array<ArrayBufferLike>;
57
57
  };
58
58
  }>;
59
59
  getReferenceGasPrice(): Promise<{
60
- referenceGasPrice: bigint;
60
+ referenceGasPrice: string;
61
+ }>;
62
+ getDynamicFields(options: Experimental_SuiClientTypes.GetDynamicFieldsOptions): Promise<{
63
+ dynamicFields: {
64
+ id: string;
65
+ version: string;
66
+ digest: string;
67
+ type: string;
68
+ name: {
69
+ type: string;
70
+ bcs: Uint8Array<ArrayBufferLike>;
71
+ };
72
+ }[];
73
+ hasNextPage: boolean;
74
+ cursor: string | null;
61
75
  }>;
62
76
  }
@@ -32,6 +32,7 @@ var import_bcs = require("@mysten/bcs");
32
32
  var import_bcs2 = require("../../bcs/index.js");
33
33
  var import_utils = require("../../transactions/plugins/utils.js");
34
34
  var import_Transaction = require("../../transactions/Transaction.js");
35
+ var import_sui_types = require("../../utils/sui-types.js");
35
36
  var import_core = require("../core.js");
36
37
  var import_errors = require("../errors.js");
37
38
  var _jsonRpcClient;
@@ -49,7 +50,8 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
49
50
  ids: batch2,
50
51
  options: {
51
52
  showOwner: true,
52
- showType: true
53
+ showType: true,
54
+ showBcs: true
53
55
  }
54
56
  });
55
57
  for (const [idx, object] of objects.entries()) {
@@ -68,7 +70,12 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
68
70
  const objects = await __privateGet(this, _jsonRpcClient).getOwnedObjects({
69
71
  owner: options.address,
70
72
  limit: options.limit,
71
- cursor: options.cursor
73
+ cursor: options.cursor,
74
+ options: {
75
+ showOwner: true,
76
+ showType: true,
77
+ showBcs: true
78
+ }
72
79
  });
73
80
  return {
74
81
  objects: objects.data.map((result) => {
@@ -92,7 +99,7 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
92
99
  id: coin.coinObjectId,
93
100
  version: coin.version,
94
101
  digest: coin.digest,
95
- balance: BigInt(coin.balance),
102
+ balance: coin.balance,
96
103
  type: `0x2::coin::Coin<${coin.coinType}>`,
97
104
  content: Coin.serialize({
98
105
  id: coin.coinObjectId,
@@ -118,7 +125,7 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
118
125
  return {
119
126
  balance: {
120
127
  coinType: balance.coinType,
121
- balance: BigInt(balance.totalBalance)
128
+ balance: balance.totalBalance
122
129
  }
123
130
  };
124
131
  }
@@ -129,7 +136,7 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
129
136
  return {
130
137
  balances: balances.map((balance) => ({
131
138
  coinType: balance.coinType,
132
- balance: BigInt(balance.totalBalance)
139
+ balance: balance.totalBalance
133
140
  })),
134
141
  hasNextPage: false,
135
142
  cursor: null
@@ -154,8 +161,10 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
154
161
  transactionBlock: options.transaction,
155
162
  signature: options.signatures,
156
163
  options: {
157
- showEffects: true,
158
- showEvents: true
164
+ showRawEffects: true,
165
+ showEvents: true,
166
+ showObjectChanges: true,
167
+ showRawInput: true
159
168
  }
160
169
  });
161
170
  return {
@@ -170,8 +179,10 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
170
179
  return {
171
180
  transaction: {
172
181
  digest: await tx.getDigest(),
173
- // TODO: Effects aren't returned as bcs from dryRun, once we define structured effects we can return those instead
174
- effects: result.effects,
182
+ effects: parseTransactionEffectsJson({
183
+ effects: result.effects,
184
+ objectChanges: result.objectChanges
185
+ }),
175
186
  signatures: [],
176
187
  bcs: options.transaction
177
188
  }
@@ -180,7 +191,28 @@ class JSONRpcTransport extends import_core.Experimental_CoreClient {
180
191
  async getReferenceGasPrice() {
181
192
  const referenceGasPrice = await __privateGet(this, _jsonRpcClient).getReferenceGasPrice();
182
193
  return {
183
- referenceGasPrice
194
+ referenceGasPrice: String(referenceGasPrice)
195
+ };
196
+ }
197
+ async getDynamicFields(options) {
198
+ const dynamicFields = await __privateGet(this, _jsonRpcClient).getDynamicFields({
199
+ parentId: options.parentId,
200
+ limit: options.limit,
201
+ cursor: options.cursor
202
+ });
203
+ return {
204
+ dynamicFields: dynamicFields.data.map((dynamicField) => ({
205
+ id: dynamicField.objectId,
206
+ version: dynamicField.version,
207
+ digest: dynamicField.digest,
208
+ type: dynamicField.objectType,
209
+ name: {
210
+ type: dynamicField.name.type,
211
+ bcs: (0, import_bcs.fromBase64)(dynamicField.bcsName)
212
+ }
213
+ })),
214
+ hasNextPage: dynamicFields.hasNextPage,
215
+ cursor: dynamicFields.nextCursor
184
216
  };
185
217
  }
186
218
  }
@@ -205,7 +237,7 @@ function parseOwner(owner) {
205
237
  if ("ConsensusV2" in owner) {
206
238
  return {
207
239
  $kind: "ConsensusV2",
208
- ConsensusV2Owner: {
240
+ ConsensusV2: {
209
241
  authenticator: {
210
242
  $kind: "SingleOwner",
211
243
  SingleOwner: owner.ConsensusV2.authenticator.SingleOwner
@@ -240,11 +272,237 @@ function parseTransaction(transaction) {
240
272
  const parsedTx = import_bcs2.bcs.SenderSignedData.parse((0, import_bcs.fromBase64)(transaction.rawTransaction))[0];
241
273
  return {
242
274
  digest: transaction.digest,
243
- effects: new Uint8Array(transaction.rawEffects),
275
+ effects: parseTransactionEffects({
276
+ effects: new Uint8Array(transaction.rawEffects),
277
+ objectChanges: transaction.objectChanges ?? null
278
+ }),
244
279
  bcs: import_bcs2.bcs.TransactionData.serialize(parsedTx.intentMessage.value).toBytes(),
245
280
  signatures: parsedTx.txSignatures
246
281
  };
247
282
  }
283
+ function parseTransactionEffects({
284
+ effects,
285
+ epoch,
286
+ objectChanges
287
+ }) {
288
+ const parsed = import_bcs2.bcs.TransactionEffects.parse(effects);
289
+ const objectTypes = {};
290
+ objectChanges?.forEach((change) => {
291
+ if (change.type !== "published") {
292
+ objectTypes[change.objectId] = change.objectType;
293
+ }
294
+ });
295
+ switch (parsed.$kind) {
296
+ case "V1":
297
+ return parseTransactionEffectsV1({ bytes: effects, effects: parsed.V1, epoch, objectTypes });
298
+ case "V2":
299
+ return parseTransactionEffectsV2({ bytes: effects, effects: parsed.V2, epoch, objectTypes });
300
+ default:
301
+ throw new Error(
302
+ `Unknown transaction effects version: ${parsed.$kind}`
303
+ );
304
+ }
305
+ }
306
+ function parseTransactionEffectsV1(_) {
307
+ throw new Error("V1 effects are not supported yet");
308
+ }
309
+ function parseTransactionEffectsV2({
310
+ bytes,
311
+ effects,
312
+ epoch,
313
+ objectTypes
314
+ }) {
315
+ const changedObjects = effects.changedObjects.map(
316
+ ([id, change]) => {
317
+ return {
318
+ id,
319
+ inputState: change.inputState.$kind === "Exist" ? "Exists" : "DoesNotExist",
320
+ inputVersion: change.inputState.Exist?.[0][0] ?? null,
321
+ inputDigest: change.inputState.Exist?.[0][1] ?? null,
322
+ inputOwner: change.inputState.Exist?.[1] ?? null,
323
+ outputState: change.outputState.$kind === "NotExist" ? "DoesNotExist" : change.outputState.$kind,
324
+ outputVersion: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[0] : change.outputState.ObjectWrite ? effects.lamportVersion : null,
325
+ outputDigest: change.outputState.$kind === "PackageWrite" ? change.outputState.PackageWrite?.[1] : change.outputState.ObjectWrite?.[0] ?? null,
326
+ outputOwner: change.outputState.ObjectWrite ? change.outputState.ObjectWrite[1] : null,
327
+ idOperation: change.idOperation.$kind,
328
+ objectType: objectTypes[id] ?? null
329
+ };
330
+ }
331
+ );
332
+ return {
333
+ bcs: bytes,
334
+ digest: effects.transactionDigest,
335
+ version: 2,
336
+ status: effects.status.$kind === "Success" ? {
337
+ success: true,
338
+ error: null
339
+ } : {
340
+ success: false,
341
+ // TODO: add command
342
+ error: effects.status.Failed.error.$kind
343
+ },
344
+ epoch: epoch ?? null,
345
+ gasUsed: effects.gasUsed,
346
+ transactionDigest: effects.transactionDigest,
347
+ gasObject: effects.gasObjectIndex === null ? null : changedObjects[effects.gasObjectIndex] ?? null,
348
+ eventsDigest: effects.eventsDigest,
349
+ dependencies: effects.dependencies,
350
+ lamportVersion: effects.lamportVersion,
351
+ changedObjects,
352
+ unchangedSharedObjects: effects.unchangedSharedObjects.map(
353
+ ([objectId, object]) => {
354
+ return {
355
+ kind: object.$kind,
356
+ objectId,
357
+ version: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[0] : object[object.$kind],
358
+ digest: object.$kind === "ReadOnlyRoot" ? object.ReadOnlyRoot[1] : null,
359
+ objectType: objectTypes[objectId] ?? null
360
+ };
361
+ }
362
+ ),
363
+ auxiliaryDataDigest: effects.auxDataDigest
364
+ };
365
+ }
366
+ function parseTransactionEffectsJson({
367
+ bytes,
368
+ effects,
369
+ epoch,
370
+ objectChanges
371
+ }) {
372
+ const changedObjects = [];
373
+ const unchangedSharedObjects = [];
374
+ objectChanges?.forEach((change) => {
375
+ switch (change.type) {
376
+ case "published":
377
+ changedObjects.push({
378
+ id: change.packageId,
379
+ inputState: "DoesNotExist",
380
+ inputVersion: null,
381
+ inputDigest: null,
382
+ inputOwner: null,
383
+ outputState: "PackageWrite",
384
+ outputVersion: change.version,
385
+ outputDigest: change.digest,
386
+ outputOwner: null,
387
+ idOperation: "Created",
388
+ objectType: null
389
+ });
390
+ break;
391
+ case "transferred":
392
+ changedObjects.push({
393
+ id: change.objectId,
394
+ inputState: "Exists",
395
+ inputVersion: change.version,
396
+ inputDigest: change.digest,
397
+ inputOwner: {
398
+ $kind: "AddressOwner",
399
+ AddressOwner: change.sender
400
+ },
401
+ outputState: "ObjectWrite",
402
+ outputVersion: change.version,
403
+ outputDigest: change.digest,
404
+ outputOwner: parseOwner(change.recipient),
405
+ idOperation: "None",
406
+ objectType: change.objectType
407
+ });
408
+ break;
409
+ case "mutated":
410
+ changedObjects.push({
411
+ id: change.objectId,
412
+ inputState: "Exists",
413
+ inputVersion: change.previousVersion,
414
+ inputDigest: null,
415
+ inputOwner: parseOwner(change.owner),
416
+ outputState: "ObjectWrite",
417
+ outputVersion: change.version,
418
+ outputDigest: change.digest,
419
+ outputOwner: parseOwner(change.owner),
420
+ idOperation: "None",
421
+ objectType: change.objectType
422
+ });
423
+ break;
424
+ case "deleted":
425
+ changedObjects.push({
426
+ id: change.objectId,
427
+ inputState: "Exists",
428
+ inputVersion: change.version,
429
+ inputDigest: effects.deleted?.find((d) => d.objectId === change.objectId)?.digest ?? null,
430
+ inputOwner: null,
431
+ outputState: "DoesNotExist",
432
+ outputVersion: null,
433
+ outputDigest: null,
434
+ outputOwner: null,
435
+ idOperation: "Deleted",
436
+ objectType: change.objectType
437
+ });
438
+ break;
439
+ case "wrapped":
440
+ changedObjects.push({
441
+ id: change.objectId,
442
+ inputState: "Exists",
443
+ inputVersion: change.version,
444
+ inputDigest: null,
445
+ inputOwner: {
446
+ $kind: "AddressOwner",
447
+ AddressOwner: change.sender
448
+ },
449
+ outputState: "ObjectWrite",
450
+ outputVersion: change.version,
451
+ outputDigest: effects.wrapped?.find((w) => w.objectId === change.objectId)?.digest ?? null,
452
+ outputOwner: {
453
+ $kind: "ObjectOwner",
454
+ ObjectOwner: change.sender
455
+ },
456
+ idOperation: "None",
457
+ objectType: change.objectType
458
+ });
459
+ break;
460
+ case "created":
461
+ changedObjects.push({
462
+ id: change.objectId,
463
+ inputState: "DoesNotExist",
464
+ inputVersion: null,
465
+ inputDigest: null,
466
+ inputOwner: null,
467
+ outputState: "ObjectWrite",
468
+ outputVersion: change.version,
469
+ outputDigest: change.digest,
470
+ outputOwner: parseOwner(change.owner),
471
+ idOperation: "Created",
472
+ objectType: change.objectType
473
+ });
474
+ break;
475
+ }
476
+ });
477
+ return {
478
+ bcs: bytes ?? null,
479
+ digest: effects.transactionDigest,
480
+ version: 2,
481
+ status: effects.status.status === "success" ? { success: true, error: null } : { success: false, error: effects.status.error },
482
+ epoch: epoch ?? null,
483
+ gasUsed: effects.gasUsed,
484
+ transactionDigest: effects.transactionDigest,
485
+ gasObject: {
486
+ id: effects.gasObject?.reference.objectId,
487
+ inputState: "Exists",
488
+ inputVersion: null,
489
+ inputDigest: null,
490
+ inputOwner: null,
491
+ outputState: "ObjectWrite",
492
+ outputVersion: effects.gasObject.reference.version,
493
+ outputDigest: effects.gasObject.reference.digest,
494
+ outputOwner: parseOwner(effects.gasObject.owner),
495
+ idOperation: "None",
496
+ objectType: (0, import_sui_types.normalizeStructTag)("0x2::coin::Coin<0x2::sui::SUI>")
497
+ },
498
+ eventsDigest: effects.eventsDigest ?? null,
499
+ dependencies: effects.dependencies ?? [],
500
+ lamportVersion: effects.gasObject.reference.version,
501
+ changedObjects,
502
+ unchangedSharedObjects,
503
+ auxiliaryDataDigest: null
504
+ };
505
+ }
248
506
  const Balance = import_bcs2.bcs.struct("Balance", {
249
507
  value: import_bcs2.bcs.u64()
250
508
  });