@openzeppelin/miden-multisig-client 0.17.0-rc.2 → 0.17.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 (278) hide show
  1. package/README.md +172 -47
  2. package/dist/account/builder.d.ts +2 -2
  3. package/dist/account/builder.d.ts.map +1 -1
  4. package/dist/account/builder.js +49 -24
  5. package/dist/account/builder.js.map +1 -1
  6. package/dist/connectivity.d.ts +2 -0
  7. package/dist/connectivity.d.ts.map +1 -1
  8. package/dist/connectivity.js +7 -4
  9. package/dist/connectivity.js.map +1 -1
  10. package/dist/index.d.ts +8 -1
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +7 -1
  13. package/dist/index.js.map +1 -1
  14. package/dist/multisig/authArgErrors.d.ts +59 -0
  15. package/dist/multisig/authArgErrors.d.ts.map +1 -0
  16. package/dist/multisig/authArgErrors.js +115 -0
  17. package/dist/multisig/authArgErrors.js.map +1 -0
  18. package/dist/multisig/helpers.d.ts +5 -0
  19. package/dist/multisig/helpers.d.ts.map +1 -1
  20. package/dist/multisig/helpers.js +7 -2
  21. package/dist/multisig/helpers.js.map +1 -1
  22. package/dist/multisig.d.ts +140 -0
  23. package/dist/multisig.d.ts.map +1 -1
  24. package/dist/multisig.js +419 -12
  25. package/dist/multisig.js.map +1 -1
  26. package/dist/procedures.d.ts +1 -1
  27. package/dist/procedures.js +1 -1
  28. package/dist/recovery/proposalNoteImport.d.ts +173 -0
  29. package/dist/recovery/proposalNoteImport.d.ts.map +1 -0
  30. package/dist/recovery/proposalNoteImport.js +411 -0
  31. package/dist/recovery/proposalNoteImport.js.map +1 -0
  32. package/dist/recovery/publicNoteBackfill.d.ts +168 -0
  33. package/dist/recovery/publicNoteBackfill.d.ts.map +1 -0
  34. package/dist/recovery/publicNoteBackfill.js +368 -0
  35. package/dist/recovery/publicNoteBackfill.js.map +1 -0
  36. package/dist/recovery/recoverNotes.d.ts +147 -0
  37. package/dist/recovery/recoverNotes.d.ts.map +1 -0
  38. package/dist/recovery/recoverNotes.js +163 -0
  39. package/dist/recovery/recoverNotes.js.map +1 -0
  40. package/dist/recovery/transportDrain.d.ts +124 -0
  41. package/dist/recovery/transportDrain.d.ts.map +1 -0
  42. package/dist/recovery/transportDrain.js +262 -0
  43. package/dist/recovery/transportDrain.js.map +1 -0
  44. package/dist/transaction/consumeNotes.d.ts.map +1 -1
  45. package/dist/transaction/consumeNotes.js +4 -1
  46. package/dist/transaction/consumeNotes.js.map +1 -1
  47. package/dist/transaction/p2id.d.ts.map +1 -1
  48. package/dist/transaction/p2id.js +4 -1
  49. package/dist/transaction/p2id.js.map +1 -1
  50. package/dist/transaction/summary.d.ts +10 -4
  51. package/dist/transaction/summary.d.ts.map +1 -1
  52. package/dist/transaction/summary.js +13 -7
  53. package/dist/transaction/summary.js.map +1 -1
  54. package/dist/transaction/updateGuardian.js +4 -1
  55. package/dist/transaction/updateGuardian.js.map +1 -1
  56. package/dist/transaction/updateProcedureThreshold.js +4 -1
  57. package/dist/transaction/updateProcedureThreshold.js.map +1 -1
  58. package/dist/transaction/updateSigners.js +4 -1
  59. package/dist/transaction/updateSigners.js.map +1 -1
  60. package/dist/transaction.d.ts +1 -1
  61. package/dist/transaction.d.ts.map +1 -1
  62. package/dist/transaction.js +1 -1
  63. package/dist/transaction.js.map +1 -1
  64. package/package.json +14 -10
  65. package/src/account/builder.ts +87 -35
  66. package/src/connectivity.ts +9 -4
  67. package/src/index.ts +34 -1
  68. package/src/multisig/authArgErrors.ts +138 -0
  69. package/src/multisig/helpers.ts +7 -2
  70. package/src/multisig.ts +513 -20
  71. package/src/procedures.ts +1 -1
  72. package/src/recovery/proposalNoteImport.ts +548 -0
  73. package/src/recovery/publicNoteBackfill.ts +502 -0
  74. package/src/recovery/recoverNotes.ts +288 -0
  75. package/src/recovery/transportDrain.ts +330 -0
  76. package/src/transaction/consumeNotes.ts +4 -1
  77. package/src/transaction/p2id.ts +4 -1
  78. package/src/transaction/summary.ts +13 -7
  79. package/src/transaction/updateGuardian.ts +4 -1
  80. package/src/transaction/updateProcedureThreshold.ts +4 -1
  81. package/src/transaction/updateSigners.ts +4 -1
  82. package/src/transaction.ts +1 -1
  83. package/dist/account/builder.test.d.ts +0 -2
  84. package/dist/account/builder.test.d.ts.map +0 -1
  85. package/dist/account/builder.test.js +0 -166
  86. package/dist/account/builder.test.js.map +0 -1
  87. package/dist/account/masm/account-components/auth.d.ts +0 -2
  88. package/dist/account/masm/account-components/auth.d.ts.map +0 -1
  89. package/dist/account/masm/account-components/auth.js +0 -46
  90. package/dist/account/masm/account-components/auth.js.map +0 -1
  91. package/dist/account/masm/index.d.ts +0 -2
  92. package/dist/account/masm/index.d.ts.map +0 -1
  93. package/dist/account/masm/index.js +0 -4
  94. package/dist/account/masm/index.js.map +0 -1
  95. package/dist/account/masm.d.ts +0 -2
  96. package/dist/account/masm.d.ts.map +0 -1
  97. package/dist/account/masm.js +0 -4
  98. package/dist/account/masm.js.map +0 -1
  99. package/dist/account/storage.test.d.ts +0 -2
  100. package/dist/account/storage.test.d.ts.map +0 -1
  101. package/dist/account/storage.test.js +0 -73
  102. package/dist/account/storage.test.js.map +0 -1
  103. package/dist/client.test.d.ts +0 -2
  104. package/dist/client.test.d.ts.map +0 -1
  105. package/dist/client.test.js +0 -380
  106. package/dist/client.test.js.map +0 -1
  107. package/dist/connectivity.test.d.ts +0 -2
  108. package/dist/connectivity.test.d.ts.map +0 -1
  109. package/dist/connectivity.test.js +0 -61
  110. package/dist/connectivity.test.js.map +0 -1
  111. package/dist/inspector.test.d.ts +0 -2
  112. package/dist/inspector.test.d.ts.map +0 -1
  113. package/dist/inspector.test.js +0 -425
  114. package/dist/inspector.test.js.map +0 -1
  115. package/dist/lookupAuth.test.d.ts +0 -2
  116. package/dist/lookupAuth.test.d.ts.map +0 -1
  117. package/dist/lookupAuth.test.js +0 -138
  118. package/dist/lookupAuth.test.js.map +0 -1
  119. package/dist/multisig/consumeNotesErrors.test.d.ts +0 -2
  120. package/dist/multisig/consumeNotesErrors.test.d.ts.map +0 -1
  121. package/dist/multisig/consumeNotesErrors.test.js +0 -28
  122. package/dist/multisig/consumeNotesErrors.test.js.map +0 -1
  123. package/dist/multisig/helpers.test.d.ts +0 -2
  124. package/dist/multisig/helpers.test.d.ts.map +0 -1
  125. package/dist/multisig/helpers.test.js +0 -94
  126. package/dist/multisig/helpers.test.js.map +0 -1
  127. package/dist/multisig.test.d.ts +0 -2
  128. package/dist/multisig.test.d.ts.map +0 -1
  129. package/dist/multisig.test.js +0 -4112
  130. package/dist/multisig.test.js.map +0 -1
  131. package/dist/proposal/factory.test.d.ts +0 -2
  132. package/dist/proposal/factory.test.d.ts.map +0 -1
  133. package/dist/proposal/factory.test.js +0 -32
  134. package/dist/proposal/factory.test.js.map +0 -1
  135. package/dist/proposal/metadata.test.d.ts +0 -2
  136. package/dist/proposal/metadata.test.d.ts.map +0 -1
  137. package/dist/proposal/metadata.test.js +0 -193
  138. package/dist/proposal/metadata.test.js.map +0 -1
  139. package/dist/prover/config.test.d.ts +0 -2
  140. package/dist/prover/config.test.d.ts.map +0 -1
  141. package/dist/prover/config.test.js +0 -54
  142. package/dist/prover/config.test.js.map +0 -1
  143. package/dist/prover/errors.test.d.ts +0 -2
  144. package/dist/prover/errors.test.d.ts.map +0 -1
  145. package/dist/prover/errors.test.js +0 -29
  146. package/dist/prover/errors.test.js.map +0 -1
  147. package/dist/prover/retry.test.d.ts +0 -2
  148. package/dist/prover/retry.test.d.ts.map +0 -1
  149. package/dist/prover/retry.test.js +0 -20
  150. package/dist/prover/retry.test.js.map +0 -1
  151. package/dist/prover/workflow.test.d.ts +0 -2
  152. package/dist/prover/workflow.test.d.ts.map +0 -1
  153. package/dist/prover/workflow.test.js +0 -105
  154. package/dist/prover/workflow.test.js.map +0 -1
  155. package/dist/raw-client.test.d.ts +0 -2
  156. package/dist/raw-client.test.d.ts.map +0 -1
  157. package/dist/raw-client.test.js +0 -111
  158. package/dist/raw-client.test.js.map +0 -1
  159. package/dist/rpc/config.test.d.ts +0 -2
  160. package/dist/rpc/config.test.d.ts.map +0 -1
  161. package/dist/rpc/config.test.js +0 -24
  162. package/dist/rpc/config.test.js.map +0 -1
  163. package/dist/rpc/errors.test.d.ts +0 -2
  164. package/dist/rpc/errors.test.d.ts.map +0 -1
  165. package/dist/rpc/errors.test.js +0 -34
  166. package/dist/rpc/errors.test.js.map +0 -1
  167. package/dist/rpc/retry.test.d.ts +0 -2
  168. package/dist/rpc/retry.test.d.ts.map +0 -1
  169. package/dist/rpc/retry.test.js +0 -98
  170. package/dist/rpc/retry.test.js.map +0 -1
  171. package/dist/signers/ecdsa.test.d.ts +0 -2
  172. package/dist/signers/ecdsa.test.d.ts.map +0 -1
  173. package/dist/signers/ecdsa.test.js +0 -88
  174. package/dist/signers/ecdsa.test.js.map +0 -1
  175. package/dist/signers/falcon.test.d.ts +0 -2
  176. package/dist/signers/falcon.test.d.ts.map +0 -1
  177. package/dist/signers/falcon.test.js +0 -161
  178. package/dist/signers/falcon.test.js.map +0 -1
  179. package/dist/signers/miden-wallet.ecdsa-recovery.test.d.ts +0 -2
  180. package/dist/signers/miden-wallet.ecdsa-recovery.test.d.ts.map +0 -1
  181. package/dist/signers/miden-wallet.ecdsa-recovery.test.js +0 -148
  182. package/dist/signers/miden-wallet.ecdsa-recovery.test.js.map +0 -1
  183. package/dist/signers/miden-wallet.test.d.ts +0 -2
  184. package/dist/signers/miden-wallet.test.d.ts.map +0 -1
  185. package/dist/signers/miden-wallet.test.js +0 -164
  186. package/dist/signers/miden-wallet.test.js.map +0 -1
  187. package/dist/signers/para.test.d.ts +0 -2
  188. package/dist/signers/para.test.d.ts.map +0 -1
  189. package/dist/signers/para.test.js +0 -146
  190. package/dist/signers/para.test.js.map +0 -1
  191. package/dist/transaction/index.d.ts +0 -8
  192. package/dist/transaction/index.d.ts.map +0 -1
  193. package/dist/transaction/index.js +0 -7
  194. package/dist/transaction/index.js.map +0 -1
  195. package/dist/transaction/p2id.test.d.ts +0 -2
  196. package/dist/transaction/p2id.test.d.ts.map +0 -1
  197. package/dist/transaction/p2id.test.js +0 -246
  198. package/dist/transaction/p2id.test.js.map +0 -1
  199. package/dist/transaction/rpoRandomCoin.test.d.ts +0 -2
  200. package/dist/transaction/rpoRandomCoin.test.d.ts.map +0 -1
  201. package/dist/transaction/rpoRandomCoin.test.js +0 -52
  202. package/dist/transaction/rpoRandomCoin.test.js.map +0 -1
  203. package/dist/transaction/summary.test.d.ts +0 -2
  204. package/dist/transaction/summary.test.d.ts.map +0 -1
  205. package/dist/transaction/summary.test.js +0 -26
  206. package/dist/transaction/summary.test.js.map +0 -1
  207. package/dist/transaction.test.d.ts +0 -2
  208. package/dist/transaction.test.d.ts.map +0 -1
  209. package/dist/transaction.test.js +0 -122
  210. package/dist/transaction.test.js.map +0 -1
  211. package/dist/types/proposal.test.d.ts +0 -2
  212. package/dist/types/proposal.test.d.ts.map +0 -1
  213. package/dist/types/proposal.test.js +0 -56
  214. package/dist/types/proposal.test.js.map +0 -1
  215. package/dist/utils/digest.test.d.ts +0 -2
  216. package/dist/utils/digest.test.d.ts.map +0 -1
  217. package/dist/utils/digest.test.js +0 -48
  218. package/dist/utils/digest.test.js.map +0 -1
  219. package/dist/utils/ecdsa.test.d.ts +0 -2
  220. package/dist/utils/ecdsa.test.d.ts.map +0 -1
  221. package/dist/utils/ecdsa.test.js +0 -131
  222. package/dist/utils/ecdsa.test.js.map +0 -1
  223. package/dist/utils/encoding.test.d.ts +0 -2
  224. package/dist/utils/encoding.test.d.ts.map +0 -1
  225. package/dist/utils/encoding.test.js +0 -185
  226. package/dist/utils/encoding.test.js.map +0 -1
  227. package/dist/utils/key.test.d.ts +0 -2
  228. package/dist/utils/key.test.d.ts.map +0 -1
  229. package/dist/utils/key.test.js +0 -82
  230. package/dist/utils/key.test.js.map +0 -1
  231. package/dist/utils/signature.test.d.ts +0 -2
  232. package/dist/utils/signature.test.d.ts.map +0 -1
  233. package/dist/utils/signature.test.js +0 -164
  234. package/dist/utils/signature.test.js.map +0 -1
  235. package/dist/utils/word.test.d.ts +0 -2
  236. package/dist/utils/word.test.d.ts.map +0 -1
  237. package/dist/utils/word.test.js +0 -54
  238. package/dist/utils/word.test.js.map +0 -1
  239. package/masm/account_components/auth/guarded_multisig.masm +0 -42
  240. package/src/account/builder.test.ts +0 -238
  241. package/src/account/masm/account-components/auth.ts +0 -46
  242. package/src/account/masm/index.ts +0 -4
  243. package/src/account/masm.ts +0 -4
  244. package/src/account/storage.test.ts +0 -90
  245. package/src/client.test.ts +0 -473
  246. package/src/connectivity.test.ts +0 -67
  247. package/src/inspector.test.ts +0 -542
  248. package/src/lookupAuth.test.ts +0 -185
  249. package/src/multisig/consumeNotesErrors.test.ts +0 -43
  250. package/src/multisig/helpers.test.ts +0 -114
  251. package/src/multisig.test.ts +0 -5008
  252. package/src/proposal/factory.test.ts +0 -40
  253. package/src/proposal/metadata.test.ts +0 -235
  254. package/src/prover/config.test.ts +0 -90
  255. package/src/prover/errors.test.ts +0 -61
  256. package/src/prover/retry.test.ts +0 -38
  257. package/src/prover/workflow.test.ts +0 -145
  258. package/src/raw-client.test.ts +0 -171
  259. package/src/rpc/config.test.ts +0 -45
  260. package/src/rpc/errors.test.ts +0 -69
  261. package/src/rpc/retry.test.ts +0 -144
  262. package/src/signers/ecdsa.test.ts +0 -111
  263. package/src/signers/falcon.test.ts +0 -197
  264. package/src/signers/miden-wallet.ecdsa-recovery.test.ts +0 -201
  265. package/src/signers/miden-wallet.test.ts +0 -206
  266. package/src/signers/para.test.ts +0 -186
  267. package/src/transaction/index.ts +0 -13
  268. package/src/transaction/p2id.test.ts +0 -371
  269. package/src/transaction/rpoRandomCoin.test.ts +0 -64
  270. package/src/transaction/summary.test.ts +0 -32
  271. package/src/transaction.test.ts +0 -142
  272. package/src/types/proposal.test.ts +0 -68
  273. package/src/utils/digest.test.ts +0 -55
  274. package/src/utils/ecdsa.test.ts +0 -164
  275. package/src/utils/encoding.test.ts +0 -233
  276. package/src/utils/key.test.ts +0 -91
  277. package/src/utils/signature.test.ts +0 -210
  278. package/src/utils/word.test.ts +0 -64
@@ -69,7 +69,10 @@ export async function buildUpdateGuardianTransactionRequest(
69
69
 
70
70
  let txBuilder = new TransactionRequestBuilder();
71
71
  txBuilder = txBuilder.withCustomScript(script);
72
- txBuilder = txBuilder.withAuthArg(authSaltForBuilder);
72
+ txBuilder = txBuilder.withFeeConversionSalt(authSaltForBuilder);
73
+ // Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
74
+ // so the handle stays ours to release once the builder has read it.
75
+ authSaltForBuilder.free?.();
73
76
 
74
77
  if (options.signatureAdviceMap) {
75
78
  txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
@@ -93,7 +93,10 @@ export async function buildUpdateProcedureThresholdTransactionRequest(
93
93
 
94
94
  let txBuilder = new TransactionRequestBuilder();
95
95
  txBuilder = txBuilder.withCustomScript(script);
96
- txBuilder = txBuilder.withAuthArg(authSalt);
96
+ txBuilder = txBuilder.withFeeConversionSalt(authSalt);
97
+ // Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
98
+ // so the handle stays ours to release once the builder has read it.
99
+ authSalt.free?.();
97
100
 
98
101
  if (options.signatureAdviceMap) {
99
102
  txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
@@ -123,7 +123,10 @@ export async function buildUpdateSignersTransactionRequest(
123
123
  txBuilder = txBuilder.withCustomScript(script);
124
124
  txBuilder = txBuilder.withScriptArg(configHashForScript);
125
125
  txBuilder = txBuilder.extendAdviceMap(advice);
126
- txBuilder = txBuilder.withAuthArg(authSaltForBuilder);
126
+ txBuilder = txBuilder.withFeeConversionSalt(authSaltForBuilder);
127
+ // Borrows rather than consumes: the glue passes `__wbg_ptr` without taking it,
128
+ // so the handle stays ours to release once the builder has read it.
129
+ authSaltForBuilder.free?.();
127
130
 
128
131
  if (options.signatureAdviceMap) {
129
132
  txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
@@ -6,7 +6,7 @@ export {
6
6
  chainAnchorToBase64,
7
7
  executeForSummary,
8
8
  executeForSummaryAt,
9
- summarySalt,
9
+ summaryAuthArg,
10
10
  } from './transaction/summary.js';
11
11
  export {
12
12
  buildP2idNoteFromMetadata,
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=builder.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.test.d.ts","sourceRoot":"","sources":["../../src/account/builder.test.ts"],"names":[],"mappings":""}
@@ -1,166 +0,0 @@
1
- import { beforeEach, describe, expect, it, vi } from 'vitest';
2
- import { createMultisigAccount, validateMultisigConfig } from './builder.js';
3
- import { GUARDED_MULTISIG_ACCOUNT_COMPONENT_MASM } from './masm/account-components/auth.js';
4
- const { buildMultisigStorageSlots, buildGuardianStorageSlots, withSupportsAllTypes, compileComponent, MockAccountBuilder, } = vi.hoisted(() => {
5
- const buildMultisigStorageSlots = vi.fn(() => ['multisig-slots']);
6
- const buildGuardianStorageSlots = vi.fn(() => ['guardian-slots']);
7
- const withSupportsAllTypes = vi.fn((component) => component);
8
- const compileComponent = vi.fn((code, slots) => ({
9
- code,
10
- slots,
11
- withSupportsAllTypes: () => withSupportsAllTypes({ code, slots }),
12
- }));
13
- class MockAccountBuilder {
14
- accountType() {
15
- return this;
16
- }
17
- storageMode() {
18
- return this;
19
- }
20
- withAuthComponent() {
21
- return this;
22
- }
23
- withComponent() {
24
- return this;
25
- }
26
- withBasicWalletComponent() {
27
- return this;
28
- }
29
- build() {
30
- return {
31
- account: { id: () => ({ toString: () => '0x' + 'a'.repeat(30) }) },
32
- };
33
- }
34
- buildWithoutSchemaCommitment() {
35
- return {
36
- account: { id: () => ({ toString: () => '0x' + 'a'.repeat(30) }) },
37
- };
38
- }
39
- }
40
- return {
41
- buildMultisigStorageSlots,
42
- buildGuardianStorageSlots,
43
- withSupportsAllTypes,
44
- compileComponent,
45
- MockAccountBuilder,
46
- };
47
- });
48
- vi.mock('./storage.js', () => ({
49
- buildMultisigStorageSlots,
50
- buildGuardianStorageSlots,
51
- }));
52
- vi.mock('@miden-sdk/miden-sdk', () => ({
53
- AccountBuilder: MockAccountBuilder,
54
- AccountComponent: {
55
- compile: compileComponent,
56
- },
57
- AccountStorageMode: {
58
- public: () => 'public',
59
- private: () => 'private',
60
- },
61
- }));
62
- describe('createMultisigAccount', () => {
63
- beforeEach(() => {
64
- vi.stubGlobal('crypto', {
65
- getRandomValues(buffer) {
66
- return buffer;
67
- },
68
- });
69
- buildMultisigStorageSlots.mockClear();
70
- buildGuardianStorageSlots.mockClear();
71
- withSupportsAllTypes.mockClear();
72
- compileComponent.mockClear();
73
- });
74
- function makeClient() {
75
- const authBuilder = {
76
- linkModule: vi.fn(),
77
- compileAccountComponentCode: vi.fn((source) => ({ source })),
78
- };
79
- const webClient = {
80
- createCodeBuilder: vi.fn().mockReturnValue(authBuilder),
81
- accounts: {
82
- insert: vi.fn().mockResolvedValue(undefined),
83
- },
84
- };
85
- return { authBuilder, webClient };
86
- }
87
- it('compiles the guarded component without re-linking SDK-provided modules (Falcon)', async () => {
88
- const { authBuilder, webClient } = makeClient();
89
- await createMultisigAccount(webClient, {
90
- threshold: 1,
91
- signerCommitments: ['0x' + '1'.repeat(64)],
92
- guardianCommitment: '0x' + '2'.repeat(64),
93
- }, 'http://localhost:57291');
94
- // The web SDK assembler already provides `miden::standards::auth::*`; re-linking would
95
- // raise a duplicate-definition error, so the builder must NOT call linkModule.
96
- expect(authBuilder.linkModule).not.toHaveBeenCalled();
97
- expect(authBuilder.compileAccountComponentCode).toHaveBeenCalledWith(GUARDED_MULTISIG_ACCOUNT_COMPONENT_MASM);
98
- expect(webClient.accounts.insert).toHaveBeenCalledTimes(1);
99
- });
100
- it('uses the same scheme-agnostic component for ECDSA', async () => {
101
- const { authBuilder, webClient } = makeClient();
102
- await createMultisigAccount(webClient, {
103
- threshold: 1,
104
- signerCommitments: ['0x' + '1'.repeat(64)],
105
- guardianCommitment: '0x' + '2'.repeat(64),
106
- signatureScheme: 'ecdsa',
107
- }, 'http://localhost:57291');
108
- expect(authBuilder.linkModule).not.toHaveBeenCalled();
109
- expect(authBuilder.compileAccountComponentCode).toHaveBeenCalledWith(GUARDED_MULTISIG_ACCOUNT_COMPONENT_MASM);
110
- expect(webClient.accounts.insert).toHaveBeenCalledTimes(1);
111
- });
112
- });
113
- describe('validateMultisigConfig', () => {
114
- const signer = '0x' + '1'.repeat(64);
115
- it('rejects a guardian commitment equal to a signer (matches upstream Rust invariant)', () => {
116
- expect(() => validateMultisigConfig({
117
- threshold: 1,
118
- signerCommitments: [signer],
119
- guardianCommitment: signer,
120
- })).toThrow(/different from all signer commitments/);
121
- });
122
- it('accepts a distinct guardian commitment', () => {
123
- expect(() => validateMultisigConfig({
124
- threshold: 1,
125
- signerCommitments: [signer],
126
- guardianCommitment: '0x' + '2'.repeat(64),
127
- })).not.toThrow();
128
- });
129
- describe('procedure threshold overrides vs update_procedure_threshold', () => {
130
- const signers = Array.from({ length: 5 }, (_, i) => '0x' + String(i + 1).repeat(64));
131
- const guardian = '0x' + '9'.repeat(64);
132
- const config = (threshold, procedureThresholds) => ({
133
- threshold,
134
- signerCommitments: signers,
135
- guardianCommitment: guardian,
136
- procedureThresholds,
137
- });
138
- it('rejects an override above the default threshold that guards the setter', () => {
139
- expect(() => validateMultisigConfig(config(2, [{ procedure: 'send_asset', threshold: 4 }]))).toThrow(/exceeds the threshold of 2 that guards update_procedure_threshold/);
140
- });
141
- it('accepts the same override once the setter is raised to match', () => {
142
- expect(() => validateMultisigConfig(config(2, [
143
- { procedure: 'send_asset', threshold: 4 },
144
- { procedure: 'update_procedure_threshold', threshold: 4 },
145
- ]))).not.toThrow();
146
- });
147
- it('rejects an override above an explicitly raised setter', () => {
148
- expect(() => validateMultisigConfig(config(2, [
149
- { procedure: 'send_asset', threshold: 4 },
150
- { procedure: 'update_procedure_threshold', threshold: 3 },
151
- ]))).toThrow(/exceeds the threshold of 3 that guards update_procedure_threshold/);
152
- });
153
- it('accepts overrides at or below the default threshold', () => {
154
- expect(() => validateMultisigConfig(config(3, [
155
- { procedure: 'send_asset', threshold: 3 },
156
- { procedure: 'receive_asset', threshold: 1 },
157
- ]))).not.toThrow();
158
- });
159
- it('allows the setter override to exceed the default threshold', () => {
160
- // Raising only the setter is always safe: it makes overrides harder to
161
- // edit, never easier.
162
- expect(() => validateMultisigConfig(config(2, [{ procedure: 'update_procedure_threshold', threshold: 5 }]))).not.toThrow();
163
- });
164
- });
165
- });
166
- //# sourceMappingURL=builder.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"builder.test.js","sourceRoot":"","sources":["../../src/account/builder.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export declare const GUARDED_MULTISIG_ACCOUNT_COMPONENT_MASM = "# The MASM code of the Multi-Signature Authentication component integrated with a state guardian.\n#\n# See the `AuthGuardedMultisig` Rust type's documentation for more details.\n\nuse miden::standards::auth::multisig\nuse miden::standards::auth::guardian\n\npub use {update_signers_and_threshold} from miden::standards::auth::multisig\npub use {get_threshold_and_num_approvers} from miden::standards::auth::multisig\npub use {set_procedure_threshold} from miden::standards::auth::multisig\npub use {get_signer_at} from miden::standards::auth::multisig\npub use {is_signer} from miden::standards::auth::multisig\n\npub use {update_guardian_public_key} from miden::standards::auth::guardian\n\n#! Authenticate a transaction with multi-signature support and optional guardian verification.\n#!\n#! Inputs:\n#! Operand stack: [SALT]\n#! Outputs:\n#! Operand stack: []\n#!\n#! Invocation: call\n@auth_script\npub proc auth_tx_guarded_multisig(salt: word)\n # zero the leading user params (not exposed through this component's interface); the SALT\n # occupies the trailing four\n push.0.0.0\n # => [0, 0, 0, SALT]\n\n exec.multisig::auth_tx\n # => [TX_SUMMARY_COMMITMENT]\n\n dupw\n # => [TX_SUMMARY_COMMITMENT, TX_SUMMARY_COMMITMENT]\n \n exec.guardian::verify_signature\n # => [TX_SUMMARY_COMMITMENT]\n\n exec.multisig::record_and_assert_new_tx\n # => []\nend\n";
2
- //# sourceMappingURL=auth.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.d.ts","sourceRoot":"","sources":["../../../../src/account/masm/account-components/auth.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,uCAAuC,+3CA0CnD,CAAC"}
@@ -1,46 +0,0 @@
1
- // This file is generated by scripts/generate-masm.mjs from the MASM contract sources.
2
- // Do not edit it by hand.
3
- export const GUARDED_MULTISIG_ACCOUNT_COMPONENT_MASM = `# The MASM code of the Multi-Signature Authentication component integrated with a state guardian.
4
- #
5
- # See the \`AuthGuardedMultisig\` Rust type's documentation for more details.
6
-
7
- use miden::standards::auth::multisig
8
- use miden::standards::auth::guardian
9
-
10
- pub use {update_signers_and_threshold} from miden::standards::auth::multisig
11
- pub use {get_threshold_and_num_approvers} from miden::standards::auth::multisig
12
- pub use {set_procedure_threshold} from miden::standards::auth::multisig
13
- pub use {get_signer_at} from miden::standards::auth::multisig
14
- pub use {is_signer} from miden::standards::auth::multisig
15
-
16
- pub use {update_guardian_public_key} from miden::standards::auth::guardian
17
-
18
- #! Authenticate a transaction with multi-signature support and optional guardian verification.
19
- #!
20
- #! Inputs:
21
- #! Operand stack: [SALT]
22
- #! Outputs:
23
- #! Operand stack: []
24
- #!
25
- #! Invocation: call
26
- @auth_script
27
- pub proc auth_tx_guarded_multisig(salt: word)
28
- # zero the leading user params (not exposed through this component's interface); the SALT
29
- # occupies the trailing four
30
- push.0.0.0
31
- # => [0, 0, 0, SALT]
32
-
33
- exec.multisig::auth_tx
34
- # => [TX_SUMMARY_COMMITMENT]
35
-
36
- dupw
37
- # => [TX_SUMMARY_COMMITMENT, TX_SUMMARY_COMMITMENT]
38
-
39
- exec.guardian::verify_signature
40
- # => [TX_SUMMARY_COMMITMENT]
41
-
42
- exec.multisig::record_and_assert_new_tx
43
- # => []
44
- end
45
- `;
46
- //# sourceMappingURL=auth.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"auth.js","sourceRoot":"","sources":["../../../../src/account/masm/account-components/auth.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,0BAA0B;AAE1B,MAAM,CAAC,MAAM,uCAAuC,GAAG;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA0CtD,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './account-components/auth.js';
2
- //# sourceMappingURL=index.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/account/masm/index.ts"],"names":[],"mappings":"AAGA,cAAc,8BAA8B,CAAC"}
@@ -1,4 +0,0 @@
1
- // This file is generated by scripts/generate-masm.mjs from the MASM contract sources.
2
- // Do not edit it by hand.
3
- export * from './account-components/auth.js';
4
- //# sourceMappingURL=index.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/account/masm/index.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,0BAA0B;AAE1B,cAAc,8BAA8B,CAAC"}
@@ -1,2 +0,0 @@
1
- export * from './masm/index.js';
2
- //# sourceMappingURL=masm.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"masm.d.ts","sourceRoot":"","sources":["../../src/account/masm.ts"],"names":[],"mappings":"AAGA,cAAc,iBAAiB,CAAC"}
@@ -1,4 +0,0 @@
1
- // This file is generated by scripts/generate-masm.mjs from the MASM contract sources.
2
- // Do not edit it by hand.
3
- export * from './masm/index.js';
4
- //# sourceMappingURL=masm.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"masm.js","sourceRoot":"","sources":["../../src/account/masm.ts"],"names":[],"mappings":"AAAA,sFAAsF;AACtF,0BAA0B;AAE1B,cAAc,iBAAiB,CAAC"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=storage.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.test.d.ts","sourceRoot":"","sources":["../../src/account/storage.test.ts"],"names":[],"mappings":""}
@@ -1,73 +0,0 @@
1
- import { describe, expect, it, vi, beforeEach } from 'vitest';
2
- const { storageMaps, storageSlotMap } = vi.hoisted(() => {
3
- const storageMaps = [];
4
- const storageSlotMap = vi.fn((name, map) => ({ kind: 'map', name, map }));
5
- return { storageMaps, storageSlotMap };
6
- });
7
- vi.mock('@miden-sdk/miden-sdk', () => {
8
- class MockWord {
9
- data;
10
- constructor(data) {
11
- this.data = data;
12
- }
13
- static fromHex(hex) {
14
- return new MockWord(hex);
15
- }
16
- }
17
- class MockStorageMap {
18
- entries = [];
19
- constructor() {
20
- storageMaps.push(this);
21
- }
22
- insert(key, value) {
23
- this.entries.push({ key, value });
24
- }
25
- }
26
- return {
27
- Word: MockWord,
28
- StorageMap: MockStorageMap,
29
- StorageSlot: {
30
- fromValue: vi.fn((name, value) => ({ kind: 'value', name, value })),
31
- map: storageSlotMap,
32
- },
33
- };
34
- });
35
- describe('buildMultisigStorageSlots', () => {
36
- beforeEach(() => {
37
- storageMaps.length = 0;
38
- storageSlotMap.mockClear();
39
- });
40
- it('keeps single-signer public-key and scheme maps to the configured signer count', async () => {
41
- const { buildMultisigStorageSlots } = await import('./storage.js');
42
- buildMultisigStorageSlots({
43
- threshold: 1,
44
- signerCommitments: ['0x' + '1'.repeat(64)],
45
- guardianCommitment: '0x' + '2'.repeat(64),
46
- signatureScheme: 'falcon',
47
- });
48
- const signersMap = storageMaps[0];
49
- const signerSchemesMap = storageMaps[1];
50
- expect(signersMap.entries).toHaveLength(1);
51
- expect(signerSchemesMap.entries).toHaveLength(1);
52
- expect(signersMap.entries[0].key).toMatchObject({
53
- data: new BigUint64Array([0n, 0n, 0n, 0n]),
54
- });
55
- expect(signerSchemesMap.entries[0].key).toMatchObject({
56
- data: new BigUint64Array([0n, 0n, 0n, 0n]),
57
- });
58
- });
59
- it('does not pad signer maps when there are already multiple signers', async () => {
60
- const { buildMultisigStorageSlots } = await import('./storage.js');
61
- buildMultisigStorageSlots({
62
- threshold: 1,
63
- signerCommitments: ['0x' + '1'.repeat(64), '0x' + '3'.repeat(64)],
64
- guardianCommitment: '0x' + '2'.repeat(64),
65
- signatureScheme: 'falcon',
66
- });
67
- const signersMap = storageMaps[0];
68
- const signerSchemesMap = storageMaps[1];
69
- expect(signersMap.entries).toHaveLength(2);
70
- expect(signerSchemesMap.entries).toHaveLength(2);
71
- });
72
- });
73
- //# sourceMappingURL=storage.test.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"storage.test.js","sourceRoot":"","sources":["../../src/account/storage.test.ts"],"names":[],"mappings":"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"}
@@ -1,2 +0,0 @@
1
- export {};
2
- //# sourceMappingURL=client.test.d.ts.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"client.test.d.ts","sourceRoot":"","sources":["../src/client.test.ts"],"names":[],"mappings":""}