@mysten/sui 1.6.0 → 1.7.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 (56) hide show
  1. package/CHANGELOG.md +19 -0
  2. package/dist/cjs/transactions/Arguments.d.ts +26 -4
  3. package/dist/cjs/transactions/Arguments.js +4 -1
  4. package/dist/cjs/transactions/Arguments.js.map +2 -2
  5. package/dist/cjs/transactions/Transaction.d.ts +28 -4
  6. package/dist/cjs/transactions/Transaction.js +53 -25
  7. package/dist/cjs/transactions/Transaction.js.map +2 -2
  8. package/dist/cjs/transactions/executor/parallel.d.ts +2 -2
  9. package/dist/cjs/transactions/executor/parallel.js +5 -6
  10. package/dist/cjs/transactions/executor/parallel.js.map +2 -2
  11. package/dist/cjs/transactions/executor/serial.d.ts +5 -3
  12. package/dist/cjs/transactions/executor/serial.js +9 -3
  13. package/dist/cjs/transactions/executor/serial.js.map +2 -2
  14. package/dist/cjs/transactions/object.d.ts +8 -0
  15. package/dist/cjs/transactions/object.js +34 -0
  16. package/dist/cjs/transactions/object.js.map +7 -0
  17. package/dist/cjs/verify/verify.d.ts +6 -2
  18. package/dist/cjs/verify/verify.js +4 -4
  19. package/dist/cjs/verify/verify.js.map +2 -2
  20. package/dist/cjs/version.d.ts +1 -1
  21. package/dist/cjs/version.js +1 -1
  22. package/dist/cjs/version.js.map +1 -1
  23. package/dist/cjs/zklogin/publickey.js.map +2 -2
  24. package/dist/esm/transactions/Arguments.d.ts +26 -4
  25. package/dist/esm/transactions/Arguments.js +4 -1
  26. package/dist/esm/transactions/Arguments.js.map +2 -2
  27. package/dist/esm/transactions/Transaction.d.ts +28 -4
  28. package/dist/esm/transactions/Transaction.js +53 -25
  29. package/dist/esm/transactions/Transaction.js.map +2 -2
  30. package/dist/esm/transactions/executor/parallel.d.ts +2 -2
  31. package/dist/esm/transactions/executor/parallel.js +5 -6
  32. package/dist/esm/transactions/executor/parallel.js.map +2 -2
  33. package/dist/esm/transactions/executor/serial.d.ts +5 -3
  34. package/dist/esm/transactions/executor/serial.js +9 -3
  35. package/dist/esm/transactions/executor/serial.js.map +2 -2
  36. package/dist/esm/transactions/object.d.ts +8 -0
  37. package/dist/esm/transactions/object.js +14 -0
  38. package/dist/esm/transactions/object.js.map +7 -0
  39. package/dist/esm/verify/verify.d.ts +6 -2
  40. package/dist/esm/verify/verify.js +4 -4
  41. package/dist/esm/verify/verify.js.map +2 -2
  42. package/dist/esm/version.d.ts +1 -1
  43. package/dist/esm/version.js +1 -1
  44. package/dist/esm/version.js.map +1 -1
  45. package/dist/esm/zklogin/publickey.js.map +2 -2
  46. package/dist/tsconfig.esm.tsbuildinfo +1 -1
  47. package/dist/tsconfig.tsbuildinfo +1 -1
  48. package/package.json +1 -1
  49. package/src/transactions/Arguments.ts +4 -1
  50. package/src/transactions/Transaction.ts +71 -28
  51. package/src/transactions/executor/parallel.ts +10 -7
  52. package/src/transactions/executor/serial.ts +12 -2
  53. package/src/transactions/object.ts +17 -0
  54. package/src/verify/verify.ts +7 -3
  55. package/src/version.ts +1 -1
  56. package/src/zklogin/publickey.ts +1 -0
@@ -34,15 +34,17 @@ var import_bcs2 = require("../../bcs/index.js");
34
34
  var import_Transaction = require("../Transaction.js");
35
35
  var import_caching = require("./caching.js");
36
36
  var import_queue = require("./queue.js");
37
- var _queue, _signer, _cache, _cacheGasCoin, _buildTransaction;
37
+ var _queue, _signer, _cache, _defaultGasBudget, _cacheGasCoin, _buildTransaction;
38
38
  class SerialTransactionExecutor {
39
39
  constructor({
40
40
  signer,
41
+ defaultGasBudget = 50000000n,
41
42
  ...options
42
43
  }) {
43
44
  __privateAdd(this, _queue, new import_queue.SerialQueue());
44
45
  __privateAdd(this, _signer);
45
46
  __privateAdd(this, _cache);
47
+ __privateAdd(this, _defaultGasBudget);
46
48
  __privateAdd(this, _cacheGasCoin, async (effects) => {
47
49
  if (!effects.V2) {
48
50
  return;
@@ -60,10 +62,12 @@ class SerialTransactionExecutor {
60
62
  if (gasCoin) {
61
63
  copy.setGasPayment([gasCoin]);
62
64
  }
65
+ copy.setGasBudgetIfNotSet(__privateGet(this, _defaultGasBudget));
63
66
  copy.setSenderIfNotSet(__privateGet(this, _signer).toSuiAddress());
64
67
  return __privateGet(this, _cache).buildTransaction({ transaction: copy });
65
68
  });
66
69
  __privateSet(this, _signer, signer);
70
+ __privateSet(this, _defaultGasBudget, defaultGasBudget);
67
71
  __privateSet(this, _cache, new import_caching.CachingTransactionExecutor({
68
72
  client: options.client,
69
73
  cache: options.cache
@@ -81,13 +85,14 @@ class SerialTransactionExecutor {
81
85
  waitForLastTransaction() {
82
86
  return __privateGet(this, _cache).waitForLastTransaction();
83
87
  }
84
- executeTransaction(transaction) {
88
+ executeTransaction(transaction, options) {
85
89
  return __privateGet(this, _queue).runTask(async () => {
86
90
  const bytes = (0, import_Transaction.isTransaction)(transaction) ? await __privateGet(this, _buildTransaction).call(this, transaction) : transaction;
87
91
  const { signature } = await __privateGet(this, _signer).signTransaction(bytes);
88
92
  const results = await __privateGet(this, _cache).executeTransaction({
89
93
  signature,
90
- transaction: bytes
94
+ transaction: bytes,
95
+ options
91
96
  }).catch(async (error) => {
92
97
  await this.resetCache();
93
98
  throw error;
@@ -105,6 +110,7 @@ class SerialTransactionExecutor {
105
110
  _queue = new WeakMap();
106
111
  _signer = new WeakMap();
107
112
  _cache = new WeakMap();
113
+ _defaultGasBudget = new WeakMap();
108
114
  _cacheGasCoin = new WeakMap();
109
115
  _buildTransaction = new WeakMap();
110
116
  function getGasCoinFromEffects(effects) {
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/transactions/executor/serial.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@mysten/bcs';\n\nimport { bcs } from '../../bcs/index.js';\nimport type { SuiClient } from '../../client/index.js';\nimport type { Signer } from '../../cryptography/keypair.js';\nimport type { ObjectCacheOptions } from '../ObjectCache.js';\nimport { isTransaction, Transaction } from '../Transaction.js';\nimport { CachingTransactionExecutor } from './caching.js';\nimport { SerialQueue } from './queue.js';\n\nexport class SerialTransactionExecutor {\n\t#queue = new SerialQueue();\n\t#signer: Signer;\n\t#cache: CachingTransactionExecutor;\n\n\tconstructor({\n\t\tsigner,\n\t\t...options\n\t}: Omit<ObjectCacheOptions, 'address'> & {\n\t\tclient: SuiClient;\n\t\tsigner: Signer;\n\t}) {\n\t\tthis.#signer = signer;\n\t\tthis.#cache = new CachingTransactionExecutor({\n\t\t\tclient: options.client,\n\t\t\tcache: options.cache,\n\t\t});\n\t}\n\n\tasync applyEffects(effects: typeof bcs.TransactionEffects.$inferType) {\n\t\treturn Promise.all([this.#cacheGasCoin(effects), this.#cache.cache.applyEffects(effects)]);\n\t}\n\n\t#cacheGasCoin = async (effects: typeof bcs.TransactionEffects.$inferType) => {\n\t\tif (!effects.V2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst gasCoin = getGasCoinFromEffects(effects).ref;\n\t\tif (gasCoin) {\n\t\t\tthis.#cache.cache.setCustom('gasCoin', gasCoin);\n\t\t} else {\n\t\t\tthis.#cache.cache.deleteCustom('gasCoin');\n\t\t}\n\t};\n\n\tasync buildTransaction(transaction: Transaction) {\n\t\treturn this.#queue.runTask(() => this.#buildTransaction(transaction));\n\t}\n\n\t#buildTransaction = async (transaction: Transaction) => {\n\t\tconst gasCoin = await this.#cache.cache.getCustom<{\n\t\t\tobjectId: string;\n\t\t\tversion: string;\n\t\t\tdigest: string;\n\t\t}>('gasCoin');\n\n\t\tconst copy = Transaction.from(transaction);\n\t\tif (gasCoin) {\n\t\t\tcopy.setGasPayment([gasCoin]);\n\t\t}\n\n\t\tcopy.setSenderIfNotSet(this.#signer.toSuiAddress());\n\n\t\treturn this.#cache.buildTransaction({ transaction: copy });\n\t};\n\n\tresetCache() {\n\t\treturn this.#cache.reset();\n\t}\n\n\twaitForLastTransaction() {\n\t\treturn this.#cache.waitForLastTransaction();\n\t}\n\n\texecuteTransaction(transaction: Transaction | Uint8Array) {\n\t\treturn this.#queue.runTask(async () => {\n\t\t\tconst bytes = isTransaction(transaction)\n\t\t\t\t? await this.#buildTransaction(transaction)\n\t\t\t\t: transaction;\n\n\t\t\tconst { signature } = await this.#signer.signTransaction(bytes);\n\t\t\tconst results = await this.#cache\n\t\t\t\t.executeTransaction({\n\t\t\t\t\tsignature,\n\t\t\t\t\ttransaction: bytes,\n\t\t\t\t})\n\t\t\t\t.catch(async (error) => {\n\t\t\t\t\tawait this.resetCache();\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\n\t\t\tconst effectsBytes = Uint8Array.from(results.rawEffects!);\n\t\t\tconst effects = bcs.TransactionEffects.parse(effectsBytes);\n\t\t\tawait this.applyEffects(effects);\n\n\t\t\treturn {\n\t\t\t\tdigest: results.digest,\n\t\t\t\teffects: toB64(effectsBytes),\n\t\t\t};\n\t\t});\n\t}\n}\n\nexport function getGasCoinFromEffects(effects: typeof bcs.TransactionEffects.$inferType) {\n\tif (!effects.V2) {\n\t\tthrow new Error('Unexpected effects version');\n\t}\n\n\tconst gasObjectChange = effects.V2.changedObjects[effects.V2.gasObjectIndex!];\n\n\tif (!gasObjectChange) {\n\t\tthrow new Error('Gas object not found in effects');\n\t}\n\n\tconst [objectId, { outputState }] = gasObjectChange;\n\n\tif (!outputState.ObjectWrite) {\n\t\tthrow new Error('Unexpected gas object state');\n\t}\n\n\tconst [digest, owner] = outputState.ObjectWrite;\n\n\treturn {\n\t\tref: {\n\t\t\tobjectId,\n\t\t\tdigest,\n\t\t\tversion: effects.V2.lamportVersion,\n\t\t},\n\t\towner: owner.AddressOwner || owner.ObjectOwner!,\n\t};\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { toB64 } from '@mysten/bcs';\n\nimport { bcs } from '../../bcs/index.js';\nimport type { SuiClient, SuiTransactionBlockResponseOptions } from '../../client/index.js';\nimport type { Signer } from '../../cryptography/keypair.js';\nimport type { ObjectCacheOptions } from '../ObjectCache.js';\nimport { isTransaction, Transaction } from '../Transaction.js';\nimport { CachingTransactionExecutor } from './caching.js';\nimport { SerialQueue } from './queue.js';\n\nexport class SerialTransactionExecutor {\n\t#queue = new SerialQueue();\n\t#signer: Signer;\n\t#cache: CachingTransactionExecutor;\n\t#defaultGasBudget: bigint;\n\n\tconstructor({\n\t\tsigner,\n\t\tdefaultGasBudget = 50_000_000n,\n\t\t...options\n\t}: Omit<ObjectCacheOptions, 'address'> & {\n\t\tclient: SuiClient;\n\t\tsigner: Signer;\n\t\t/** The gasBudget to use if the transaction has not defined it's own gasBudget, defaults to `50_000_000n` */\n\t\tdefaultGasBudget?: bigint;\n\t}) {\n\t\tthis.#signer = signer;\n\t\tthis.#defaultGasBudget = defaultGasBudget;\n\t\tthis.#cache = new CachingTransactionExecutor({\n\t\t\tclient: options.client,\n\t\t\tcache: options.cache,\n\t\t});\n\t}\n\n\tasync applyEffects(effects: typeof bcs.TransactionEffects.$inferType) {\n\t\treturn Promise.all([this.#cacheGasCoin(effects), this.#cache.cache.applyEffects(effects)]);\n\t}\n\n\t#cacheGasCoin = async (effects: typeof bcs.TransactionEffects.$inferType) => {\n\t\tif (!effects.V2) {\n\t\t\treturn;\n\t\t}\n\n\t\tconst gasCoin = getGasCoinFromEffects(effects).ref;\n\t\tif (gasCoin) {\n\t\t\tthis.#cache.cache.setCustom('gasCoin', gasCoin);\n\t\t} else {\n\t\t\tthis.#cache.cache.deleteCustom('gasCoin');\n\t\t}\n\t};\n\n\tasync buildTransaction(transaction: Transaction) {\n\t\treturn this.#queue.runTask(() => this.#buildTransaction(transaction));\n\t}\n\n\t#buildTransaction = async (transaction: Transaction) => {\n\t\tconst gasCoin = await this.#cache.cache.getCustom<{\n\t\t\tobjectId: string;\n\t\t\tversion: string;\n\t\t\tdigest: string;\n\t\t}>('gasCoin');\n\n\t\tconst copy = Transaction.from(transaction);\n\t\tif (gasCoin) {\n\t\t\tcopy.setGasPayment([gasCoin]);\n\t\t}\n\n\t\tcopy.setGasBudgetIfNotSet(this.#defaultGasBudget);\n\t\tcopy.setSenderIfNotSet(this.#signer.toSuiAddress());\n\n\t\treturn this.#cache.buildTransaction({ transaction: copy });\n\t};\n\n\tresetCache() {\n\t\treturn this.#cache.reset();\n\t}\n\n\twaitForLastTransaction() {\n\t\treturn this.#cache.waitForLastTransaction();\n\t}\n\n\texecuteTransaction(\n\t\ttransaction: Transaction | Uint8Array,\n\t\toptions?: SuiTransactionBlockResponseOptions,\n\t) {\n\t\treturn this.#queue.runTask(async () => {\n\t\t\tconst bytes = isTransaction(transaction)\n\t\t\t\t? await this.#buildTransaction(transaction)\n\t\t\t\t: transaction;\n\n\t\t\tconst { signature } = await this.#signer.signTransaction(bytes);\n\t\t\tconst results = await this.#cache\n\t\t\t\t.executeTransaction({\n\t\t\t\t\tsignature,\n\t\t\t\t\ttransaction: bytes,\n\t\t\t\t\toptions,\n\t\t\t\t})\n\t\t\t\t.catch(async (error) => {\n\t\t\t\t\tawait this.resetCache();\n\t\t\t\t\tthrow error;\n\t\t\t\t});\n\n\t\t\tconst effectsBytes = Uint8Array.from(results.rawEffects!);\n\t\t\tconst effects = bcs.TransactionEffects.parse(effectsBytes);\n\t\t\tawait this.applyEffects(effects);\n\n\t\t\treturn {\n\t\t\t\tdigest: results.digest,\n\t\t\t\teffects: toB64(effectsBytes),\n\t\t\t};\n\t\t});\n\t}\n}\n\nexport function getGasCoinFromEffects(effects: typeof bcs.TransactionEffects.$inferType) {\n\tif (!effects.V2) {\n\t\tthrow new Error('Unexpected effects version');\n\t}\n\n\tconst gasObjectChange = effects.V2.changedObjects[effects.V2.gasObjectIndex!];\n\n\tif (!gasObjectChange) {\n\t\tthrow new Error('Gas object not found in effects');\n\t}\n\n\tconst [objectId, { outputState }] = gasObjectChange;\n\n\tif (!outputState.ObjectWrite) {\n\t\tthrow new Error('Unexpected gas object state');\n\t}\n\n\tconst [digest, owner] = outputState.ObjectWrite;\n\n\treturn {\n\t\tref: {\n\t\t\tobjectId,\n\t\t\tdigest,\n\t\t\tversion: effects.V2.lamportVersion,\n\t\t},\n\t\towner: owner.AddressOwner || owner.ObjectOwner!,\n\t};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_bcs"]
7
7
  }
@@ -0,0 +1,8 @@
1
+ import type { TransactionObjectInput } from './Transaction.js';
2
+ export declare function createObjectMethods<T>(makeObject: (value: TransactionObjectInput) => T): {
3
+ (value: TransactionObjectInput): T;
4
+ system(): T;
5
+ clock(): T;
6
+ random(): T;
7
+ denyList(): T;
8
+ };
@@ -0,0 +1,34 @@
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 object_exports = {};
20
+ __export(object_exports, {
21
+ createObjectMethods: () => createObjectMethods
22
+ });
23
+ module.exports = __toCommonJS(object_exports);
24
+ function createObjectMethods(makeObject) {
25
+ function object(value) {
26
+ return makeObject(value);
27
+ }
28
+ object.system = () => object("0x5");
29
+ object.clock = () => object("0x6");
30
+ object.random = () => object("0x8");
31
+ object.denyList = () => object("0x403");
32
+ return object;
33
+ }
34
+ //# sourceMappingURL=object.js.map
@@ -0,0 +1,7 @@
1
+ {
2
+ "version": 3,
3
+ "sources": ["../../../src/transactions/object.ts"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { TransactionObjectInput } from './Transaction.js';\n\nexport function createObjectMethods<T>(makeObject: (value: TransactionObjectInput) => T) {\n\tfunction object(value: TransactionObjectInput) {\n\t\treturn makeObject(value);\n\t}\n\n\tobject.system = () => object('0x5');\n\tobject.clock = () => object('0x6');\n\tobject.random = () => object('0x8');\n\tobject.denyList = () => object('0x403');\n\n\treturn object;\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,SAAS,oBAAuB,YAAkD;AACxF,WAAS,OAAO,OAA+B;AAC9C,WAAO,WAAW,KAAK;AAAA,EACxB;AAEA,SAAO,SAAS,MAAM,OAAO,KAAK;AAClC,SAAO,QAAQ,MAAM,OAAO,KAAK;AACjC,SAAO,SAAS,MAAM,OAAO,KAAK;AAClC,SAAO,WAAW,MAAM,OAAO,OAAO;AAEtC,SAAO;AACR;",
6
+ "names": []
7
+ }
@@ -4,8 +4,12 @@ export declare function verifySignature(bytes: Uint8Array, signature: string): P
4
4
  export declare function verifyPersonalMessageSignature(message: Uint8Array, signature: string, options?: {
5
5
  client?: SuiGraphQLClient;
6
6
  }): Promise<PublicKey>;
7
- export declare function verifyTransactionSignature(transaction: Uint8Array, signature: string): Promise<PublicKey>;
7
+ export declare function verifyTransactionSignature(transaction: Uint8Array, signature: string, options?: {
8
+ client?: SuiGraphQLClient;
9
+ }): Promise<PublicKey>;
8
10
  export declare function publicKeyFromRawBytes(signatureScheme: SignatureScheme, bytes: Uint8Array, options?: {
9
11
  client?: SuiGraphQLClient;
10
12
  }): PublicKey;
11
- export declare function publicKeyFromSuiBytes(publicKey: string | Uint8Array): PublicKey;
13
+ export declare function publicKeyFromSuiBytes(publicKey: string | Uint8Array, options?: {
14
+ client?: SuiGraphQLClient;
15
+ }): PublicKey;
@@ -49,8 +49,8 @@ async function verifyPersonalMessageSignature(message, signature, options = {})
49
49
  }
50
50
  return parsedSignature.publicKey;
51
51
  }
52
- async function verifyTransactionSignature(transaction, signature) {
53
- const parsedSignature = parseSignature(signature);
52
+ async function verifyTransactionSignature(transaction, signature, options = {}) {
53
+ const parsedSignature = parseSignature(signature, options);
54
54
  if (!await parsedSignature.publicKey.verifyTransaction(
55
55
  transaction,
56
56
  parsedSignature.serializedSignature
@@ -93,9 +93,9 @@ function publicKeyFromRawBytes(signatureScheme, bytes, options = {}) {
93
93
  throw new Error(`Unsupported signature scheme ${signatureScheme}`);
94
94
  }
95
95
  }
96
- function publicKeyFromSuiBytes(publicKey) {
96
+ function publicKeyFromSuiBytes(publicKey, options = {}) {
97
97
  const bytes = typeof publicKey === "string" ? (0, import_bcs.fromB64)(publicKey) : publicKey;
98
98
  const signatureScheme = import_cryptography.SIGNATURE_FLAG_TO_SCHEME[bytes[0]];
99
- return publicKeyFromRawBytes(signatureScheme, bytes.slice(1));
99
+ return publicKeyFromRawBytes(signatureScheme, bytes.slice(1), options);
100
100
  }
101
101
  //# sourceMappingURL=verify.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/verify/verify.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64 } from '@mysten/bcs';\n\nimport type { PublicKey, SignatureFlag, SignatureScheme } from '../cryptography/index.js';\nimport { parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME } from '../cryptography/index.js';\nimport type { SuiGraphQLClient } from '../graphql/client.js';\nimport { Ed25519PublicKey } from '../keypairs/ed25519/publickey.js';\nimport { Secp256k1PublicKey } from '../keypairs/secp256k1/publickey.js';\nimport { Secp256r1PublicKey } from '../keypairs/secp256r1/publickey.js';\n// eslint-disable-next-line import/no-cycle\nimport { MultiSigPublicKey } from '../multisig/publickey.js';\nimport { ZkLoginPublicIdentifier } from '../zklogin/publickey.js';\n\nexport async function verifySignature(bytes: Uint8Array, signature: string): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature);\n\n\tif (!(await parsedSignature.publicKey.verify(bytes, parsedSignature.serializedSignature))) {\n\t\tthrow new Error(`Signature is not valid for the provided data`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nexport async function verifyPersonalMessageSignature(\n\tmessage: Uint8Array,\n\tsignature: string,\n\toptions: { client?: SuiGraphQLClient } = {},\n): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature, options);\n\n\tif (\n\t\t!(await parsedSignature.publicKey.verifyPersonalMessage(\n\t\t\tmessage,\n\t\t\tparsedSignature.serializedSignature,\n\t\t))\n\t) {\n\t\tthrow new Error(`Signature is not valid for the provided message`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nexport async function verifyTransactionSignature(\n\ttransaction: Uint8Array,\n\tsignature: string,\n): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature);\n\n\tif (\n\t\t!(await parsedSignature.publicKey.verifyTransaction(\n\t\t\ttransaction,\n\t\t\tparsedSignature.serializedSignature,\n\t\t))\n\t) {\n\t\tthrow new Error(`Signature is not valid for the provided Transaction`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nfunction parseSignature(signature: string, options: { client?: SuiGraphQLClient } = {}) {\n\tconst parsedSignature = parseSerializedSignature(signature);\n\n\tif (parsedSignature.signatureScheme === 'MultiSig') {\n\t\treturn {\n\t\t\t...parsedSignature,\n\t\t\tpublicKey: new MultiSigPublicKey(parsedSignature.multisig.multisig_pk),\n\t\t};\n\t}\n\n\tconst publicKey = publicKeyFromRawBytes(\n\t\tparsedSignature.signatureScheme,\n\t\tparsedSignature.publicKey,\n\t\toptions,\n\t);\n\treturn {\n\t\t...parsedSignature,\n\t\tpublicKey,\n\t};\n}\n\nexport function publicKeyFromRawBytes(\n\tsignatureScheme: SignatureScheme,\n\tbytes: Uint8Array,\n\toptions: { client?: SuiGraphQLClient } = {},\n): PublicKey {\n\tswitch (signatureScheme) {\n\t\tcase 'ED25519':\n\t\t\treturn new Ed25519PublicKey(bytes);\n\t\tcase 'Secp256k1':\n\t\t\treturn new Secp256k1PublicKey(bytes);\n\t\tcase 'Secp256r1':\n\t\t\treturn new Secp256r1PublicKey(bytes);\n\t\tcase 'MultiSig':\n\t\t\treturn new MultiSigPublicKey(bytes);\n\t\tcase 'ZkLogin':\n\t\t\treturn new ZkLoginPublicIdentifier(bytes, options);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported signature scheme ${signatureScheme}`);\n\t}\n}\n\nexport function publicKeyFromSuiBytes(publicKey: string | Uint8Array) {\n\tconst bytes = typeof publicKey === 'string' ? fromB64(publicKey) : publicKey;\n\n\tconst signatureScheme = SIGNATURE_FLAG_TO_SCHEME[bytes[0] as SignatureFlag];\n\n\treturn publicKeyFromRawBytes(signatureScheme, bytes.slice(1));\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAwB;AAGxB,0BAAmE;AAEnE,uBAAiC;AACjC,IAAAA,oBAAmC;AACnC,IAAAA,oBAAmC;AAEnC,IAAAA,oBAAkC;AAClC,IAAAA,oBAAwC;AAExC,eAAsB,gBAAgB,OAAmB,WAAuC;AAC/F,QAAM,kBAAkB,eAAe,SAAS;AAEhD,MAAI,CAAE,MAAM,gBAAgB,UAAU,OAAO,OAAO,gBAAgB,mBAAmB,GAAI;AAC1F,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAC/D;AAEA,SAAO,gBAAgB;AACxB;AAEA,eAAsB,+BACrB,SACA,WACA,UAAyC,CAAC,GACrB;AACrB,QAAM,kBAAkB,eAAe,WAAW,OAAO;AAEzD,MACC,CAAE,MAAM,gBAAgB,UAAU;AAAA,IACjC;AAAA,IACA,gBAAgB;AAAA,EACjB,GACC;AACD,UAAM,IAAI,MAAM,iDAAiD;AAAA,EAClE;AAEA,SAAO,gBAAgB;AACxB;AAEA,eAAsB,2BACrB,aACA,WACqB;AACrB,QAAM,kBAAkB,eAAe,SAAS;AAEhD,MACC,CAAE,MAAM,gBAAgB,UAAU;AAAA,IACjC;AAAA,IACA,gBAAgB;AAAA,EACjB,GACC;AACD,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACtE;AAEA,SAAO,gBAAgB;AACxB;AAEA,SAAS,eAAe,WAAmB,UAAyC,CAAC,GAAG;AACvF,QAAM,sBAAkB,8CAAyB,SAAS;AAE1D,MAAI,gBAAgB,oBAAoB,YAAY;AACnD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,WAAW,IAAI,oCAAkB,gBAAgB,SAAS,WAAW;AAAA,IACtE;AAAA,EACD;AAEA,QAAM,YAAY;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,EACD;AACA,SAAO;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;AAEO,SAAS,sBACf,iBACA,OACA,UAAyC,CAAC,GAC9B;AACZ,UAAQ,iBAAiB;AAAA,IACxB,KAAK;AACJ,aAAO,IAAI,kCAAiB,KAAK;AAAA,IAClC,KAAK;AACJ,aAAO,IAAI,qCAAmB,KAAK;AAAA,IACpC,KAAK;AACJ,aAAO,IAAI,qCAAmB,KAAK;AAAA,IACpC,KAAK;AACJ,aAAO,IAAI,oCAAkB,KAAK;AAAA,IACnC,KAAK;AACJ,aAAO,IAAI,0CAAwB,OAAO,OAAO;AAAA,IAClD;AACC,YAAM,IAAI,MAAM,gCAAgC,eAAe,EAAE;AAAA,EACnE;AACD;AAEO,SAAS,sBAAsB,WAAgC;AACrE,QAAM,QAAQ,OAAO,cAAc,eAAW,oBAAQ,SAAS,IAAI;AAEnE,QAAM,kBAAkB,6CAAyB,MAAM,CAAC,CAAkB;AAE1E,SAAO,sBAAsB,iBAAiB,MAAM,MAAM,CAAC,CAAC;AAC7D;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64 } from '@mysten/bcs';\n\nimport type { PublicKey, SignatureFlag, SignatureScheme } from '../cryptography/index.js';\nimport { parseSerializedSignature, SIGNATURE_FLAG_TO_SCHEME } from '../cryptography/index.js';\nimport type { SuiGraphQLClient } from '../graphql/client.js';\nimport { Ed25519PublicKey } from '../keypairs/ed25519/publickey.js';\nimport { Secp256k1PublicKey } from '../keypairs/secp256k1/publickey.js';\nimport { Secp256r1PublicKey } from '../keypairs/secp256r1/publickey.js';\n// eslint-disable-next-line import/no-cycle\nimport { MultiSigPublicKey } from '../multisig/publickey.js';\nimport { ZkLoginPublicIdentifier } from '../zklogin/publickey.js';\n\nexport async function verifySignature(bytes: Uint8Array, signature: string): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature);\n\n\tif (!(await parsedSignature.publicKey.verify(bytes, parsedSignature.serializedSignature))) {\n\t\tthrow new Error(`Signature is not valid for the provided data`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nexport async function verifyPersonalMessageSignature(\n\tmessage: Uint8Array,\n\tsignature: string,\n\toptions: { client?: SuiGraphQLClient } = {},\n): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature, options);\n\n\tif (\n\t\t!(await parsedSignature.publicKey.verifyPersonalMessage(\n\t\t\tmessage,\n\t\t\tparsedSignature.serializedSignature,\n\t\t))\n\t) {\n\t\tthrow new Error(`Signature is not valid for the provided message`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nexport async function verifyTransactionSignature(\n\ttransaction: Uint8Array,\n\tsignature: string,\n\toptions: { client?: SuiGraphQLClient } = {},\n): Promise<PublicKey> {\n\tconst parsedSignature = parseSignature(signature, options);\n\n\tif (\n\t\t!(await parsedSignature.publicKey.verifyTransaction(\n\t\t\ttransaction,\n\t\t\tparsedSignature.serializedSignature,\n\t\t))\n\t) {\n\t\tthrow new Error(`Signature is not valid for the provided Transaction`);\n\t}\n\n\treturn parsedSignature.publicKey;\n}\n\nfunction parseSignature(signature: string, options: { client?: SuiGraphQLClient } = {}) {\n\tconst parsedSignature = parseSerializedSignature(signature);\n\n\tif (parsedSignature.signatureScheme === 'MultiSig') {\n\t\treturn {\n\t\t\t...parsedSignature,\n\t\t\tpublicKey: new MultiSigPublicKey(parsedSignature.multisig.multisig_pk),\n\t\t};\n\t}\n\n\tconst publicKey = publicKeyFromRawBytes(\n\t\tparsedSignature.signatureScheme,\n\t\tparsedSignature.publicKey,\n\t\toptions,\n\t);\n\treturn {\n\t\t...parsedSignature,\n\t\tpublicKey,\n\t};\n}\n\nexport function publicKeyFromRawBytes(\n\tsignatureScheme: SignatureScheme,\n\tbytes: Uint8Array,\n\toptions: { client?: SuiGraphQLClient } = {},\n): PublicKey {\n\tswitch (signatureScheme) {\n\t\tcase 'ED25519':\n\t\t\treturn new Ed25519PublicKey(bytes);\n\t\tcase 'Secp256k1':\n\t\t\treturn new Secp256k1PublicKey(bytes);\n\t\tcase 'Secp256r1':\n\t\t\treturn new Secp256r1PublicKey(bytes);\n\t\tcase 'MultiSig':\n\t\t\treturn new MultiSigPublicKey(bytes);\n\t\tcase 'ZkLogin':\n\t\t\treturn new ZkLoginPublicIdentifier(bytes, options);\n\t\tdefault:\n\t\t\tthrow new Error(`Unsupported signature scheme ${signatureScheme}`);\n\t}\n}\n\nexport function publicKeyFromSuiBytes(\n\tpublicKey: string | Uint8Array,\n\toptions: { client?: SuiGraphQLClient } = {},\n) {\n\tconst bytes = typeof publicKey === 'string' ? fromB64(publicKey) : publicKey;\n\n\tconst signatureScheme = SIGNATURE_FLAG_TO_SCHEME[bytes[0] as SignatureFlag];\n\n\treturn publicKeyFromRawBytes(signatureScheme, bytes.slice(1), options);\n}\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAGA,iBAAwB;AAGxB,0BAAmE;AAEnE,uBAAiC;AACjC,IAAAA,oBAAmC;AACnC,IAAAA,oBAAmC;AAEnC,IAAAA,oBAAkC;AAClC,IAAAA,oBAAwC;AAExC,eAAsB,gBAAgB,OAAmB,WAAuC;AAC/F,QAAM,kBAAkB,eAAe,SAAS;AAEhD,MAAI,CAAE,MAAM,gBAAgB,UAAU,OAAO,OAAO,gBAAgB,mBAAmB,GAAI;AAC1F,UAAM,IAAI,MAAM,8CAA8C;AAAA,EAC/D;AAEA,SAAO,gBAAgB;AACxB;AAEA,eAAsB,+BACrB,SACA,WACA,UAAyC,CAAC,GACrB;AACrB,QAAM,kBAAkB,eAAe,WAAW,OAAO;AAEzD,MACC,CAAE,MAAM,gBAAgB,UAAU;AAAA,IACjC;AAAA,IACA,gBAAgB;AAAA,EACjB,GACC;AACD,UAAM,IAAI,MAAM,iDAAiD;AAAA,EAClE;AAEA,SAAO,gBAAgB;AACxB;AAEA,eAAsB,2BACrB,aACA,WACA,UAAyC,CAAC,GACrB;AACrB,QAAM,kBAAkB,eAAe,WAAW,OAAO;AAEzD,MACC,CAAE,MAAM,gBAAgB,UAAU;AAAA,IACjC;AAAA,IACA,gBAAgB;AAAA,EACjB,GACC;AACD,UAAM,IAAI,MAAM,qDAAqD;AAAA,EACtE;AAEA,SAAO,gBAAgB;AACxB;AAEA,SAAS,eAAe,WAAmB,UAAyC,CAAC,GAAG;AACvF,QAAM,sBAAkB,8CAAyB,SAAS;AAE1D,MAAI,gBAAgB,oBAAoB,YAAY;AACnD,WAAO;AAAA,MACN,GAAG;AAAA,MACH,WAAW,IAAI,oCAAkB,gBAAgB,SAAS,WAAW;AAAA,IACtE;AAAA,EACD;AAEA,QAAM,YAAY;AAAA,IACjB,gBAAgB;AAAA,IAChB,gBAAgB;AAAA,IAChB;AAAA,EACD;AACA,SAAO;AAAA,IACN,GAAG;AAAA,IACH;AAAA,EACD;AACD;AAEO,SAAS,sBACf,iBACA,OACA,UAAyC,CAAC,GAC9B;AACZ,UAAQ,iBAAiB;AAAA,IACxB,KAAK;AACJ,aAAO,IAAI,kCAAiB,KAAK;AAAA,IAClC,KAAK;AACJ,aAAO,IAAI,qCAAmB,KAAK;AAAA,IACpC,KAAK;AACJ,aAAO,IAAI,qCAAmB,KAAK;AAAA,IACpC,KAAK;AACJ,aAAO,IAAI,oCAAkB,KAAK;AAAA,IACnC,KAAK;AACJ,aAAO,IAAI,0CAAwB,OAAO,OAAO;AAAA,IAClD;AACC,YAAM,IAAI,MAAM,gCAAgC,eAAe,EAAE;AAAA,EACnE;AACD;AAEO,SAAS,sBACf,WACA,UAAyC,CAAC,GACzC;AACD,QAAM,QAAQ,OAAO,cAAc,eAAW,oBAAQ,SAAS,IAAI;AAEnE,QAAM,kBAAkB,6CAAyB,MAAM,CAAC,CAAkB;AAE1E,SAAO,sBAAsB,iBAAiB,MAAM,MAAM,CAAC,GAAG,OAAO;AACtE;",
6
6
  "names": ["import_publickey"]
7
7
  }
@@ -1,2 +1,2 @@
1
- export declare const PACKAGE_VERSION = "1.6.0";
1
+ export declare const PACKAGE_VERSION = "1.7.0";
2
2
  export declare const TARGETED_RPC_VERSION = "1.32.0";
@@ -22,6 +22,6 @@ __export(version_exports, {
22
22
  TARGETED_RPC_VERSION: () => TARGETED_RPC_VERSION
23
23
  });
24
24
  module.exports = __toCommonJS(version_exports);
25
- const PACKAGE_VERSION = "1.6.0";
25
+ const PACKAGE_VERSION = "1.7.0";
26
26
  const TARGETED_RPC_VERSION = "1.32.0";
27
27
  //# sourceMappingURL=version.js.map
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../src/version.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '1.6.0';\nexport const TARGETED_RPC_VERSION = '1.32.0';\n"],
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\n// This file is generated by genversion.mjs. Do not edit it directly.\n\nexport const PACKAGE_VERSION = '1.7.0';\nexport const TARGETED_RPC_VERSION = '1.32.0';\n"],
5
5
  "mappings": ";;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAKO,MAAM,kBAAkB;AACxB,MAAM,uBAAuB;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/zklogin/publickey.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64, toB64 } from '@mysten/bcs';\n\nimport { PublicKey } from '../cryptography/publickey.js';\nimport type { PublicKeyInitData } from '../cryptography/publickey.js';\nimport { SIGNATURE_SCHEME_TO_FLAG } from '../cryptography/signature-scheme.js';\nimport { SuiGraphQLClient } from '../graphql/client.js';\nimport { graphql } from '../graphql/schemas/2024.4/index.js';\nimport { extractClaimValue } from './jwt-utils.js';\nimport { parseZkLoginSignature } from './signature.js';\nimport { toPaddedBigEndianBytes } from './utils.js';\n\n/**\n * A zkLogin public identifier\n */\nexport class ZkLoginPublicIdentifier extends PublicKey {\n\t#data: Uint8Array;\n\t#client?: SuiGraphQLClient;\n\n\t/**\n\t * Create a new ZkLoginPublicIdentifier object\n\t * @param value zkLogin public identifier as buffer or base-64 encoded string\n\t */\n\tconstructor(value: PublicKeyInitData, { client }: { client?: SuiGraphQLClient } = {}) {\n\t\tsuper();\n\n\t\tthis.#client = client;\n\n\t\tif (typeof value === 'string') {\n\t\t\tthis.#data = fromB64(value);\n\t\t} else if (value instanceof Uint8Array) {\n\t\t\tthis.#data = value;\n\t\t} else {\n\t\t\tthis.#data = Uint8Array.from(value);\n\t\t}\n\t}\n\n\t/**\n\t * Checks if two zkLogin public identifiers are equal\n\t */\n\toverride equals(publicKey: ZkLoginPublicIdentifier): boolean {\n\t\treturn super.equals(publicKey);\n\t}\n\n\t/**\n\t * Return the byte array representation of the zkLogin public identifier\n\t */\n\ttoRawBytes(): Uint8Array {\n\t\treturn this.#data;\n\t}\n\n\t/**\n\t * Return the Sui address associated with this ZkLogin public identifier\n\t */\n\tflag(): number {\n\t\treturn SIGNATURE_SCHEME_TO_FLAG['ZkLogin'];\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided message\n\t */\n\tasync verify(_message: Uint8Array, _signature: Uint8Array | string): Promise<boolean> {\n\t\tthrow Error('does not support');\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided PersonalMessage\n\t */\n\tverifyPersonalMessage(message: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\tconst parsedSignature = parseSerializedZkLoginSignature(signature);\n\t\tconst address = new ZkLoginPublicIdentifier(parsedSignature.publicKey).toSuiAddress();\n\t\treturn graphqlVerifyZkLoginSignature({\n\t\t\taddress: address,\n\t\t\tbytes: toB64(message),\n\t\t\tsignature: parsedSignature.serializedSignature,\n\t\t\tintentScope: 'PERSONAL_MESSAGE',\n\t\t\tclient: this.#client,\n\t\t});\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided Transaction\n\t */\n\tverifyTransaction(transaction: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\tconst parsedSignature = parseSerializedZkLoginSignature(signature);\n\t\tconst address = new ZkLoginPublicIdentifier(parsedSignature.publicKey).toSuiAddress();\n\t\treturn graphqlVerifyZkLoginSignature({\n\t\t\taddress: address,\n\t\t\tbytes: toB64(transaction),\n\t\t\tsignature: parsedSignature.serializedSignature,\n\t\t\tintentScope: 'TRANSACTION_DATA',\n\t\t\tclient: this.#client,\n\t\t});\n\t}\n}\n\n// Derive the public identifier for zklogin based on address seed and iss.\nexport function toZkLoginPublicIdentifier(\n\taddressSeed: bigint,\n\tiss: string,\n\toptions?: { client?: SuiGraphQLClient },\n): ZkLoginPublicIdentifier {\n\t// Consists of iss_bytes_len || iss_bytes || padded_32_byte_address_seed.\n\tconst addressSeedBytesBigEndian = toPaddedBigEndianBytes(addressSeed, 32);\n\tconst issBytes = new TextEncoder().encode(iss);\n\tconst tmp = new Uint8Array(1 + issBytes.length + addressSeedBytesBigEndian.length);\n\ttmp.set([issBytes.length], 0);\n\ttmp.set(issBytes, 1);\n\ttmp.set(addressSeedBytesBigEndian, 1 + issBytes.length);\n\treturn new ZkLoginPublicIdentifier(tmp, options);\n}\n\nconst VerifyZkLoginSignatureQuery = graphql(`\n\tquery Zklogin(\n\t\t$bytes: Base64!\n\t\t$signature: Base64!\n\t\t$intentScope: ZkLoginIntentScope!\n\t\t$author: SuiAddress!\n\t) {\n\t\tverifyZkloginSignature(\n\t\t\tbytes: $bytes\n\t\t\tsignature: $signature\n\t\t\tintentScope: $intentScope\n\t\t\tauthor: $author\n\t\t) {\n\t\t\tsuccess\n\t\t\terrors\n\t\t}\n\t}\n`);\n\nasync function graphqlVerifyZkLoginSignature({\n\taddress,\n\tbytes,\n\tsignature,\n\tintentScope,\n\tclient = new SuiGraphQLClient({\n\t\turl: 'https://sui-mainnet.mystenlabs.com/graphql',\n\t}),\n}: {\n\taddress: string;\n\tbytes: string;\n\tsignature: string;\n\tintentScope: 'PERSONAL_MESSAGE' | 'TRANSACTION_DATA';\n\tclient?: SuiGraphQLClient;\n}) {\n\tconst resp = await client.query({\n\t\tquery: VerifyZkLoginSignatureQuery,\n\t\tvariables: {\n\t\t\tbytes,\n\t\t\tsignature,\n\t\t\tintentScope,\n\t\t\tauthor: address,\n\t\t},\n\t});\n\n\treturn (\n\t\tresp.data?.verifyZkloginSignature.success === true &&\n\t\tresp.data?.verifyZkloginSignature.errors.length === 0\n\t);\n}\n\nexport function parseSerializedZkLoginSignature(signature: Uint8Array | string) {\n\tconst bytes = typeof signature === 'string' ? fromB64(signature) : signature;\n\n\tif (bytes[0] !== SIGNATURE_SCHEME_TO_FLAG.ZkLogin) {\n\t\tthrow new Error('Invalid signature scheme');\n\t}\n\n\tconst signatureBytes = bytes.slice(1);\n\tconst { inputs, maxEpoch, userSignature } = parseZkLoginSignature(signatureBytes);\n\tconst { issBase64Details, addressSeed } = inputs;\n\tconst iss = extractClaimValue<string>(issBase64Details, 'iss');\n\tconst publicIdentifer = toZkLoginPublicIdentifier(BigInt(addressSeed), iss);\n\treturn {\n\t\tserializedSignature: toB64(bytes),\n\t\tsignatureScheme: 'ZkLogin' as const,\n\t\tzkLogin: {\n\t\t\tinputs,\n\t\t\tmaxEpoch,\n\t\t\tuserSignature,\n\t\t\tiss,\n\t\t\taddressSeed: BigInt(addressSeed),\n\t\t},\n\t\tsignature: bytes,\n\t\tpublicKey: publicIdentifer.toRawBytes(),\n\t};\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport { fromB64, toB64 } from '@mysten/bcs';\n\nimport { PublicKey } from '../cryptography/publickey.js';\nimport type { PublicKeyInitData } from '../cryptography/publickey.js';\nimport { SIGNATURE_SCHEME_TO_FLAG } from '../cryptography/signature-scheme.js';\nimport { SuiGraphQLClient } from '../graphql/client.js';\nimport { graphql } from '../graphql/schemas/2024.4/index.js';\nimport { extractClaimValue } from './jwt-utils.js';\nimport { parseZkLoginSignature } from './signature.js';\nimport { toPaddedBigEndianBytes } from './utils.js';\n\n/**\n * A zkLogin public identifier\n */\nexport class ZkLoginPublicIdentifier extends PublicKey {\n\t#data: Uint8Array;\n\t#client?: SuiGraphQLClient;\n\n\t/**\n\t * Create a new ZkLoginPublicIdentifier object\n\t * @param value zkLogin public identifier as buffer or base-64 encoded string\n\t */\n\tconstructor(value: PublicKeyInitData, { client }: { client?: SuiGraphQLClient } = {}) {\n\t\tsuper();\n\n\t\tthis.#client = client;\n\n\t\tif (typeof value === 'string') {\n\t\t\tthis.#data = fromB64(value);\n\t\t} else if (value instanceof Uint8Array) {\n\t\t\tthis.#data = value;\n\t\t} else {\n\t\t\tthis.#data = Uint8Array.from(value);\n\t\t}\n\t}\n\n\t/**\n\t * Checks if two zkLogin public identifiers are equal\n\t */\n\toverride equals(publicKey: ZkLoginPublicIdentifier): boolean {\n\t\treturn super.equals(publicKey);\n\t}\n\n\t/**\n\t * Return the byte array representation of the zkLogin public identifier\n\t */\n\ttoRawBytes(): Uint8Array {\n\t\treturn this.#data;\n\t}\n\n\t/**\n\t * Return the Sui address associated with this ZkLogin public identifier\n\t */\n\tflag(): number {\n\t\treturn SIGNATURE_SCHEME_TO_FLAG['ZkLogin'];\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided message\n\t */\n\tasync verify(_message: Uint8Array, _signature: Uint8Array | string): Promise<boolean> {\n\t\tthrow Error('does not support');\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided PersonalMessage\n\t */\n\tverifyPersonalMessage(message: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\tconst parsedSignature = parseSerializedZkLoginSignature(signature);\n\t\tconst address = new ZkLoginPublicIdentifier(parsedSignature.publicKey).toSuiAddress();\n\n\t\treturn graphqlVerifyZkLoginSignature({\n\t\t\taddress: address,\n\t\t\tbytes: toB64(message),\n\t\t\tsignature: parsedSignature.serializedSignature,\n\t\t\tintentScope: 'PERSONAL_MESSAGE',\n\t\t\tclient: this.#client,\n\t\t});\n\t}\n\n\t/**\n\t * Verifies that the signature is valid for for the provided Transaction\n\t */\n\tverifyTransaction(transaction: Uint8Array, signature: Uint8Array | string): Promise<boolean> {\n\t\tconst parsedSignature = parseSerializedZkLoginSignature(signature);\n\t\tconst address = new ZkLoginPublicIdentifier(parsedSignature.publicKey).toSuiAddress();\n\t\treturn graphqlVerifyZkLoginSignature({\n\t\t\taddress: address,\n\t\t\tbytes: toB64(transaction),\n\t\t\tsignature: parsedSignature.serializedSignature,\n\t\t\tintentScope: 'TRANSACTION_DATA',\n\t\t\tclient: this.#client,\n\t\t});\n\t}\n}\n\n// Derive the public identifier for zklogin based on address seed and iss.\nexport function toZkLoginPublicIdentifier(\n\taddressSeed: bigint,\n\tiss: string,\n\toptions?: { client?: SuiGraphQLClient },\n): ZkLoginPublicIdentifier {\n\t// Consists of iss_bytes_len || iss_bytes || padded_32_byte_address_seed.\n\tconst addressSeedBytesBigEndian = toPaddedBigEndianBytes(addressSeed, 32);\n\tconst issBytes = new TextEncoder().encode(iss);\n\tconst tmp = new Uint8Array(1 + issBytes.length + addressSeedBytesBigEndian.length);\n\ttmp.set([issBytes.length], 0);\n\ttmp.set(issBytes, 1);\n\ttmp.set(addressSeedBytesBigEndian, 1 + issBytes.length);\n\treturn new ZkLoginPublicIdentifier(tmp, options);\n}\n\nconst VerifyZkLoginSignatureQuery = graphql(`\n\tquery Zklogin(\n\t\t$bytes: Base64!\n\t\t$signature: Base64!\n\t\t$intentScope: ZkLoginIntentScope!\n\t\t$author: SuiAddress!\n\t) {\n\t\tverifyZkloginSignature(\n\t\t\tbytes: $bytes\n\t\t\tsignature: $signature\n\t\t\tintentScope: $intentScope\n\t\t\tauthor: $author\n\t\t) {\n\t\t\tsuccess\n\t\t\terrors\n\t\t}\n\t}\n`);\n\nasync function graphqlVerifyZkLoginSignature({\n\taddress,\n\tbytes,\n\tsignature,\n\tintentScope,\n\tclient = new SuiGraphQLClient({\n\t\turl: 'https://sui-mainnet.mystenlabs.com/graphql',\n\t}),\n}: {\n\taddress: string;\n\tbytes: string;\n\tsignature: string;\n\tintentScope: 'PERSONAL_MESSAGE' | 'TRANSACTION_DATA';\n\tclient?: SuiGraphQLClient;\n}) {\n\tconst resp = await client.query({\n\t\tquery: VerifyZkLoginSignatureQuery,\n\t\tvariables: {\n\t\t\tbytes,\n\t\t\tsignature,\n\t\t\tintentScope,\n\t\t\tauthor: address,\n\t\t},\n\t});\n\n\treturn (\n\t\tresp.data?.verifyZkloginSignature.success === true &&\n\t\tresp.data?.verifyZkloginSignature.errors.length === 0\n\t);\n}\n\nexport function parseSerializedZkLoginSignature(signature: Uint8Array | string) {\n\tconst bytes = typeof signature === 'string' ? fromB64(signature) : signature;\n\n\tif (bytes[0] !== SIGNATURE_SCHEME_TO_FLAG.ZkLogin) {\n\t\tthrow new Error('Invalid signature scheme');\n\t}\n\n\tconst signatureBytes = bytes.slice(1);\n\tconst { inputs, maxEpoch, userSignature } = parseZkLoginSignature(signatureBytes);\n\tconst { issBase64Details, addressSeed } = inputs;\n\tconst iss = extractClaimValue<string>(issBase64Details, 'iss');\n\tconst publicIdentifer = toZkLoginPublicIdentifier(BigInt(addressSeed), iss);\n\treturn {\n\t\tserializedSignature: toB64(bytes),\n\t\tsignatureScheme: 'ZkLogin' as const,\n\t\tzkLogin: {\n\t\t\tinputs,\n\t\t\tmaxEpoch,\n\t\t\tuserSignature,\n\t\t\tiss,\n\t\t\taddressSeed: BigInt(addressSeed),\n\t\t},\n\t\tsignature: bytes,\n\t\tpublicKey: publicIdentifer.toRawBytes(),\n\t};\n}\n"],
5
+ "mappings": "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",
6
6
  "names": []
7
7
  }
@@ -953,10 +953,32 @@ export declare const Arguments: {
953
953
  NestedResult: [number, number];
954
954
  };
955
955
  };
956
- object: (value: TransactionObjectInput) => (tx: Transaction) => {
957
- $kind: "Input";
958
- Input: number;
959
- type?: "object";
956
+ object: {
957
+ (value: TransactionObjectInput): (tx: Transaction) => {
958
+ $kind: "Input";
959
+ Input: number;
960
+ type?: "object";
961
+ };
962
+ system(): (tx: Transaction) => {
963
+ $kind: "Input";
964
+ Input: number;
965
+ type?: "object";
966
+ };
967
+ clock(): (tx: Transaction) => {
968
+ $kind: "Input";
969
+ Input: number;
970
+ type?: "object";
971
+ };
972
+ random(): (tx: Transaction) => {
973
+ $kind: "Input";
974
+ Input: number;
975
+ type?: "object";
976
+ };
977
+ denyList(): (tx: Transaction) => {
978
+ $kind: "Input";
979
+ Input: number;
980
+ type?: "object";
981
+ };
960
982
  };
961
983
  sharedObjectRef: (args_0: {
962
984
  objectId: string;
@@ -1,7 +1,10 @@
1
+ import { createObjectMethods } from "./object.js";
1
2
  import { createPure } from "./pure.js";
2
3
  const Arguments = {
3
4
  pure: createPure((value) => (tx) => tx.pure(value)),
4
- object: (value) => (tx) => tx.object(value),
5
+ object: createObjectMethods(
6
+ (value) => (tx) => tx.object(value)
7
+ ),
5
8
  sharedObjectRef: (...args) => (tx) => tx.sharedObjectRef(...args),
6
9
  objectRef: (...args) => (tx) => tx.objectRef(...args),
7
10
  receivingRef: (...args) => (tx) => tx.receivingRef(...args)
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/transactions/Arguments.ts"],
4
- "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Inputs } from './Inputs.js';\nimport { createPure } from './pure.js';\nimport type { Transaction, TransactionObjectInput } from './Transaction.js';\n\nexport const Arguments = {\n\tpure: createPure((value) => (tx: Transaction) => tx.pure(value)),\n\tobject: (value: TransactionObjectInput) => (tx: Transaction) => tx.object(value),\n\tsharedObjectRef:\n\t\t(...args: Parameters<(typeof Inputs)['SharedObjectRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.sharedObjectRef(...args),\n\tobjectRef:\n\t\t(...args: Parameters<(typeof Inputs)['ObjectRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.objectRef(...args),\n\treceivingRef:\n\t\t(...args: Parameters<(typeof Inputs)['ReceivingRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.receivingRef(...args),\n};\n"],
5
- "mappings": "AAIA,SAAS,kBAAkB;AAGpB,MAAM,YAAY;AAAA,EACxB,MAAM,WAAW,CAAC,UAAU,CAAC,OAAoB,GAAG,KAAK,KAAK,CAAC;AAAA,EAC/D,QAAQ,CAAC,UAAkC,CAAC,OAAoB,GAAG,OAAO,KAAK;AAAA,EAC/E,iBACC,IAAI,SACJ,CAAC,OACA,GAAG,gBAAgB,GAAG,IAAI;AAAA,EAC5B,WACC,IAAI,SACJ,CAAC,OACA,GAAG,UAAU,GAAG,IAAI;AAAA,EACtB,cACC,IAAI,SACJ,CAAC,OACA,GAAG,aAAa,GAAG,IAAI;AAC1B;",
4
+ "sourcesContent": ["// Copyright (c) Mysten Labs, Inc.\n// SPDX-License-Identifier: Apache-2.0\n\nimport type { Inputs } from './Inputs.js';\nimport { createObjectMethods } from './object.js';\nimport { createPure } from './pure.js';\nimport type { Transaction, TransactionObjectInput } from './Transaction.js';\n\nexport const Arguments = {\n\tpure: createPure((value) => (tx: Transaction) => tx.pure(value)),\n\tobject: createObjectMethods(\n\t\t(value: TransactionObjectInput) => (tx: Transaction) => tx.object(value),\n\t),\n\tsharedObjectRef:\n\t\t(...args: Parameters<(typeof Inputs)['SharedObjectRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.sharedObjectRef(...args),\n\tobjectRef:\n\t\t(...args: Parameters<(typeof Inputs)['ObjectRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.objectRef(...args),\n\treceivingRef:\n\t\t(...args: Parameters<(typeof Inputs)['ReceivingRef']>) =>\n\t\t(tx: Transaction) =>\n\t\t\ttx.receivingRef(...args),\n};\n"],
5
+ "mappings": "AAIA,SAAS,2BAA2B;AACpC,SAAS,kBAAkB;AAGpB,MAAM,YAAY;AAAA,EACxB,MAAM,WAAW,CAAC,UAAU,CAAC,OAAoB,GAAG,KAAK,KAAK,CAAC;AAAA,EAC/D,QAAQ;AAAA,IACP,CAAC,UAAkC,CAAC,OAAoB,GAAG,OAAO,KAAK;AAAA,EACxE;AAAA,EACA,iBACC,IAAI,SACJ,CAAC,OACA,GAAG,gBAAgB,GAAG,IAAI;AAAA,EAC5B,WACC,IAAI,SACJ,CAAC,OACA,GAAG,UAAU,GAAG,IAAI;AAAA,EACtB,cACC,IAAI,SACJ,CAAC,OACA,GAAG,aAAa,GAAG,IAAI;AAC1B;",
6
6
  "names": []
7
7
  }
@@ -42,6 +42,8 @@ export declare class Transaction {
42
42
  * - A byte array (or base64-encoded bytes) containing BCS transaction data.
43
43
  */
44
44
  static from(transaction: string | Uint8Array | Transaction): Transaction;
45
+ static registerGlobalSerializationPlugin(step: TransactionPlugin): void;
46
+ static registerGlobalBuildPlugin(step: TransactionPlugin): void;
45
47
  addSerializationPlugin(step: TransactionPlugin): void;
46
48
  addBuildPlugin(step: TransactionPlugin): void;
47
49
  addIntentResolver(intent: string, resolver: TransactionPlugin): void;
@@ -590,10 +592,32 @@ export declare class Transaction {
590
592
  /**
591
593
  * Add a new object input to the transaction.
592
594
  */
593
- object(value: TransactionObjectInput): {
594
- $kind: 'Input';
595
- Input: number;
596
- type?: 'object';
595
+ object: {
596
+ (value: TransactionObjectInput): {
597
+ $kind: "Input";
598
+ Input: number;
599
+ type?: "object";
600
+ };
601
+ system(): {
602
+ $kind: "Input";
603
+ Input: number;
604
+ type?: "object";
605
+ };
606
+ clock(): {
607
+ $kind: "Input";
608
+ Input: number;
609
+ type?: "object";
610
+ };
611
+ random(): {
612
+ $kind: "Input";
613
+ Input: number;
614
+ type?: "object";
615
+ };
616
+ denyList(): {
617
+ $kind: "Input";
618
+ Input: number;
619
+ type?: "object";
620
+ };
597
621
  };
598
622
  /**
599
623
  * Add a new object input to the transaction using the fully-resolved object reference.
@@ -16,6 +16,7 @@ import { serializeV1TransactionData } from "./data/v1.js";
16
16
  import { SerializedTransactionDataV2 } from "./data/v2.js";
17
17
  import { Inputs } from "./Inputs.js";
18
18
  import { resolveTransactionData } from "./json-rpc-resolver.js";
19
+ import { createObjectMethods } from "./object.js";
19
20
  import { createPure } from "./pure.js";
20
21
  import { TransactionDataBuilder } from "./TransactionData.js";
21
22
  import { getIdFromCallArg } from "./utils.js";
@@ -59,14 +60,58 @@ const TRANSACTION_BRAND = Symbol.for("@mysten/transaction");
59
60
  function isTransaction(obj) {
60
61
  return !!obj && typeof obj === "object" && obj[TRANSACTION_BRAND] === true;
61
62
  }
63
+ const modulePluginRegistry = {
64
+ buildPlugins: [],
65
+ serializationPlugins: []
66
+ };
67
+ const TRANSACTION_REGISTRY_KEY = Symbol.for("@mysten/transaction/registry");
68
+ function getGlobalPluginRegistry() {
69
+ try {
70
+ const target = globalThis;
71
+ if (!target[TRANSACTION_REGISTRY_KEY]) {
72
+ target[TRANSACTION_REGISTRY_KEY] = modulePluginRegistry;
73
+ }
74
+ return target[TRANSACTION_REGISTRY_KEY];
75
+ } catch (e) {
76
+ return modulePluginRegistry;
77
+ }
78
+ }
62
79
  const _Transaction = class _Transaction {
63
80
  constructor() {
64
81
  __privateAdd(this, _Transaction_instances);
65
- __privateAdd(this, _serializationPlugins, []);
66
- __privateAdd(this, _buildPlugins, []);
82
+ __privateAdd(this, _serializationPlugins);
83
+ __privateAdd(this, _buildPlugins);
67
84
  __privateAdd(this, _intentResolvers, /* @__PURE__ */ new Map());
68
85
  __privateAdd(this, _data);
86
+ /**
87
+ * Add a new object input to the transaction.
88
+ */
89
+ this.object = createObjectMethods(
90
+ (value) => {
91
+ if (typeof value === "function") {
92
+ return this.object(value(this));
93
+ }
94
+ if (typeof value === "object" && is(Argument, value)) {
95
+ return value;
96
+ }
97
+ const id = getIdFromCallArg(value);
98
+ const inserted = __privateGet(this, _data).inputs.find((i) => id === getIdFromCallArg(i));
99
+ if (inserted?.Object?.SharedObject && typeof value === "object" && value.Object?.SharedObject) {
100
+ inserted.Object.SharedObject.mutable = inserted.Object.SharedObject.mutable || value.Object.SharedObject.mutable;
101
+ }
102
+ return inserted ? { $kind: "Input", Input: __privateGet(this, _data).inputs.indexOf(inserted), type: "object" } : __privateGet(this, _data).addInput(
103
+ "object",
104
+ typeof value === "string" ? {
105
+ $kind: "UnresolvedObject",
106
+ UnresolvedObject: { objectId: normalizeSuiAddress(value) }
107
+ } : value
108
+ );
109
+ }
110
+ );
111
+ const globalPlugins = getGlobalPluginRegistry();
69
112
  __privateSet(this, _data, new TransactionDataBuilder());
113
+ __privateSet(this, _buildPlugins, [...globalPlugins.buildPlugins]);
114
+ __privateSet(this, _serializationPlugins, [...globalPlugins.serializationPlugins]);
70
115
  }
71
116
  /**
72
117
  * Converts from a serialize transaction kind (built with `build({ onlyTransactionKind: true })`) to a `Transaction` class.
@@ -98,6 +143,12 @@ const _Transaction = class _Transaction {
98
143
  }
99
144
  return newTransaction;
100
145
  }
146
+ static registerGlobalSerializationPlugin(step) {
147
+ getGlobalPluginRegistry().serializationPlugins.push(step);
148
+ }
149
+ static registerGlobalBuildPlugin(step) {
150
+ getGlobalPluginRegistry().buildPlugins.push(step);
151
+ }
101
152
  addSerializationPlugin(step) {
102
153
  __privateGet(this, _serializationPlugins).push(step);
103
154
  }
@@ -180,29 +231,6 @@ const _Transaction = class _Transaction {
180
231
  get gas() {
181
232
  return { $kind: "GasCoin", GasCoin: true };
182
233
  }
183
- /**
184
- * Add a new object input to the transaction.
185
- */
186
- object(value) {
187
- if (typeof value === "function") {
188
- return this.object(value(this));
189
- }
190
- if (typeof value === "object" && is(Argument, value)) {
191
- return value;
192
- }
193
- const id = getIdFromCallArg(value);
194
- const inserted = __privateGet(this, _data).inputs.find((i) => id === getIdFromCallArg(i));
195
- if (inserted?.Object?.SharedObject && typeof value === "object" && value.Object?.SharedObject) {
196
- inserted.Object.SharedObject.mutable = inserted.Object.SharedObject.mutable || value.Object.SharedObject.mutable;
197
- }
198
- return inserted ? { $kind: "Input", Input: __privateGet(this, _data).inputs.indexOf(inserted), type: "object" } : __privateGet(this, _data).addInput(
199
- "object",
200
- typeof value === "string" ? {
201
- $kind: "UnresolvedObject",
202
- UnresolvedObject: { objectId: normalizeSuiAddress(value) }
203
- } : value
204
- );
205
- }
206
234
  /**
207
235
  * Add a new object input to the transaction using the fully-resolved object reference.
208
236
  * If you only have an object ID, use `builder.object(id)` instead.