@openzeppelin/miden-multisig-client 0.12.6

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 (215) hide show
  1. package/README.md +189 -0
  2. package/dist/account/builder.d.ts +23 -0
  3. package/dist/account/builder.d.ts.map +1 -0
  4. package/dist/account/builder.js +85 -0
  5. package/dist/account/builder.js.map +1 -0
  6. package/dist/account/index.d.ts +6 -0
  7. package/dist/account/index.d.ts.map +1 -0
  8. package/dist/account/index.js +6 -0
  9. package/dist/account/index.js.map +1 -0
  10. package/dist/account/masm.d.ts +3 -0
  11. package/dist/account/masm.d.ts.map +1 -0
  12. package/dist/account/masm.js +605 -0
  13. package/dist/account/masm.js.map +1 -0
  14. package/dist/account/storage.d.ts +10 -0
  15. package/dist/account/storage.d.ts.map +1 -0
  16. package/dist/account/storage.js +56 -0
  17. package/dist/account/storage.js.map +1 -0
  18. package/dist/account.d.ts +104 -0
  19. package/dist/account.d.ts.map +1 -0
  20. package/dist/account.js +136 -0
  21. package/dist/account.js.map +1 -0
  22. package/dist/builder.d.ts +54 -0
  23. package/dist/builder.d.ts.map +1 -0
  24. package/dist/builder.js +78 -0
  25. package/dist/builder.js.map +1 -0
  26. package/dist/client.d.ts +73 -0
  27. package/dist/client.d.ts.map +1 -0
  28. package/dist/client.js +104 -0
  29. package/dist/client.js.map +1 -0
  30. package/dist/client.test.d.ts +2 -0
  31. package/dist/client.test.d.ts.map +1 -0
  32. package/dist/client.test.js +150 -0
  33. package/dist/client.test.js.map +1 -0
  34. package/dist/http.d.ts +64 -0
  35. package/dist/http.d.ts.map +1 -0
  36. package/dist/http.js +162 -0
  37. package/dist/http.js.map +1 -0
  38. package/dist/index.d.ts +53 -0
  39. package/dist/index.d.ts.map +1 -0
  40. package/dist/index.js +52 -0
  41. package/dist/index.js.map +1 -0
  42. package/dist/inspector.d.ts +49 -0
  43. package/dist/inspector.d.ts.map +1 -0
  44. package/dist/inspector.js +120 -0
  45. package/dist/inspector.js.map +1 -0
  46. package/dist/inspector.test.d.ts +2 -0
  47. package/dist/inspector.test.d.ts.map +1 -0
  48. package/dist/inspector.test.js +205 -0
  49. package/dist/inspector.test.js.map +1 -0
  50. package/dist/keystore.d.ts +65 -0
  51. package/dist/keystore.d.ts.map +1 -0
  52. package/dist/keystore.js +121 -0
  53. package/dist/keystore.js.map +1 -0
  54. package/dist/miden.d.ts +9 -0
  55. package/dist/miden.d.ts.map +1 -0
  56. package/dist/miden.js +26 -0
  57. package/dist/miden.js.map +1 -0
  58. package/dist/multisig/helpers.d.ts +4 -0
  59. package/dist/multisig/helpers.d.ts.map +1 -0
  60. package/dist/multisig/helpers.js +21 -0
  61. package/dist/multisig/helpers.js.map +1 -0
  62. package/dist/multisig/helpers.test.d.ts +2 -0
  63. package/dist/multisig/helpers.test.d.ts.map +1 -0
  64. package/dist/multisig/helpers.test.js +94 -0
  65. package/dist/multisig/helpers.test.js.map +1 -0
  66. package/dist/multisig/metadata.d.ts +18 -0
  67. package/dist/multisig/metadata.d.ts.map +1 -0
  68. package/dist/multisig/metadata.js +100 -0
  69. package/dist/multisig/metadata.js.map +1 -0
  70. package/dist/multisig/metadata.test.d.ts +2 -0
  71. package/dist/multisig/metadata.test.d.ts.map +1 -0
  72. package/dist/multisig/metadata.test.js +323 -0
  73. package/dist/multisig/metadata.test.js.map +1 -0
  74. package/dist/multisig.d.ts +199 -0
  75. package/dist/multisig.d.ts.map +1 -0
  76. package/dist/multisig.js +821 -0
  77. package/dist/multisig.js.map +1 -0
  78. package/dist/multisig.test.d.ts +2 -0
  79. package/dist/multisig.test.d.ts.map +1 -0
  80. package/dist/multisig.test.js +1121 -0
  81. package/dist/multisig.test.js.map +1 -0
  82. package/dist/procedures.d.ts +57 -0
  83. package/dist/procedures.d.ts.map +1 -0
  84. package/dist/procedures.js +62 -0
  85. package/dist/procedures.js.map +1 -0
  86. package/dist/signer.d.ts +36 -0
  87. package/dist/signer.d.ts.map +1 -0
  88. package/dist/signer.js +68 -0
  89. package/dist/signer.js.map +1 -0
  90. package/dist/signer.test.d.ts +2 -0
  91. package/dist/signer.test.d.ts.map +1 -0
  92. package/dist/signer.test.js +117 -0
  93. package/dist/signer.test.js.map +1 -0
  94. package/dist/transaction/consumeNotes.d.ts +7 -0
  95. package/dist/transaction/consumeNotes.d.ts.map +1 -0
  96. package/dist/transaction/consumeNotes.js +28 -0
  97. package/dist/transaction/consumeNotes.js.map +1 -0
  98. package/dist/transaction/index.d.ts +7 -0
  99. package/dist/transaction/index.d.ts.map +1 -0
  100. package/dist/transaction/index.js +6 -0
  101. package/dist/transaction/index.js.map +1 -0
  102. package/dist/transaction/options.d.ts +6 -0
  103. package/dist/transaction/options.d.ts.map +1 -0
  104. package/dist/transaction/options.js +2 -0
  105. package/dist/transaction/options.js.map +1 -0
  106. package/dist/transaction/p2id.d.ts +7 -0
  107. package/dist/transaction/p2id.d.ts.map +1 -0
  108. package/dist/transaction/p2id.js +43 -0
  109. package/dist/transaction/p2id.js.map +1 -0
  110. package/dist/transaction/summary.d.ts +3 -0
  111. package/dist/transaction/summary.d.ts.map +1 -0
  112. package/dist/transaction/summary.js +6 -0
  113. package/dist/transaction/summary.js.map +1 -0
  114. package/dist/transaction/updatePsm.d.ts +7 -0
  115. package/dist/transaction/updatePsm.d.ts.map +1 -0
  116. package/dist/transaction/updatePsm.js +43 -0
  117. package/dist/transaction/updatePsm.js.map +1 -0
  118. package/dist/transaction/updateSigners.d.ts +8 -0
  119. package/dist/transaction/updateSigners.d.ts.map +1 -0
  120. package/dist/transaction/updateSigners.js +60 -0
  121. package/dist/transaction/updateSigners.js.map +1 -0
  122. package/dist/transaction.d.ts +6 -0
  123. package/dist/transaction.d.ts.map +1 -0
  124. package/dist/transaction.js +8 -0
  125. package/dist/transaction.js.map +1 -0
  126. package/dist/transaction.test.d.ts +2 -0
  127. package/dist/transaction.test.d.ts.map +1 -0
  128. package/dist/transaction.test.js +117 -0
  129. package/dist/transaction.test.js.map +1 -0
  130. package/dist/transport/http.d.ts +64 -0
  131. package/dist/transport/http.d.ts.map +1 -0
  132. package/dist/transport/http.js +162 -0
  133. package/dist/transport/http.js.map +1 -0
  134. package/dist/transport/index.d.ts +5 -0
  135. package/dist/transport/index.d.ts.map +1 -0
  136. package/dist/transport/index.js +5 -0
  137. package/dist/transport/index.js.map +1 -0
  138. package/dist/types/proposal.d.ts +74 -0
  139. package/dist/types/proposal.d.ts.map +1 -0
  140. package/dist/types/proposal.js +2 -0
  141. package/dist/types/proposal.js.map +1 -0
  142. package/dist/types.d.ts +60 -0
  143. package/dist/types.d.ts.map +1 -0
  144. package/dist/types.js +2 -0
  145. package/dist/types.js.map +1 -0
  146. package/dist/utils/encoding.d.ts +7 -0
  147. package/dist/utils/encoding.d.ts.map +1 -0
  148. package/dist/utils/encoding.js +54 -0
  149. package/dist/utils/encoding.js.map +1 -0
  150. package/dist/utils/encoding.test.d.ts +2 -0
  151. package/dist/utils/encoding.test.d.ts.map +1 -0
  152. package/dist/utils/encoding.test.js +185 -0
  153. package/dist/utils/encoding.test.js.map +1 -0
  154. package/dist/utils/index.d.ts +5 -0
  155. package/dist/utils/index.d.ts.map +1 -0
  156. package/dist/utils/index.js +5 -0
  157. package/dist/utils/index.js.map +1 -0
  158. package/dist/utils/random.d.ts +3 -0
  159. package/dist/utils/random.d.ts.map +1 -0
  160. package/dist/utils/random.js +14 -0
  161. package/dist/utils/random.js.map +1 -0
  162. package/dist/utils/signature.d.ts +12 -0
  163. package/dist/utils/signature.d.ts.map +1 -0
  164. package/dist/utils/signature.js +28 -0
  165. package/dist/utils/signature.js.map +1 -0
  166. package/dist/utils/signature.test.d.ts +2 -0
  167. package/dist/utils/signature.test.d.ts.map +1 -0
  168. package/dist/utils/signature.test.js +149 -0
  169. package/dist/utils/signature.test.js.map +1 -0
  170. package/dist/utils/word.d.ts +4 -0
  171. package/dist/utils/word.d.ts.map +1 -0
  172. package/dist/utils/word.js +8 -0
  173. package/dist/utils/word.js.map +1 -0
  174. package/dist/utils/word.test.d.ts +2 -0
  175. package/dist/utils/word.test.d.ts.map +1 -0
  176. package/dist/utils/word.test.js +54 -0
  177. package/dist/utils/word.test.js.map +1 -0
  178. package/masm/multisig.masm +423 -0
  179. package/masm/psm.masm +178 -0
  180. package/package.json +42 -0
  181. package/src/account/builder.ts +112 -0
  182. package/src/account/index.ts +15 -0
  183. package/src/account/masm.ts +606 -0
  184. package/src/account/storage.ts +70 -0
  185. package/src/client.test.ts +177 -0
  186. package/src/client.ts +129 -0
  187. package/src/index.ts +118 -0
  188. package/src/inspector.test.ts +237 -0
  189. package/src/inspector.ts +142 -0
  190. package/src/multisig/helpers.test.ts +114 -0
  191. package/src/multisig/helpers.ts +23 -0
  192. package/src/multisig.test.ts +1294 -0
  193. package/src/multisig.ts +1097 -0
  194. package/src/procedures.ts +72 -0
  195. package/src/signer.test.ts +135 -0
  196. package/src/signer.ts +75 -0
  197. package/src/transaction/consumeNotes.ts +41 -0
  198. package/src/transaction/index.ts +7 -0
  199. package/src/transaction/options.ts +7 -0
  200. package/src/transaction/p2id.ts +105 -0
  201. package/src/transaction/summary.ts +12 -0
  202. package/src/transaction/updatePsm.ts +69 -0
  203. package/src/transaction/updateSigners.ts +96 -0
  204. package/src/transaction.test.ts +136 -0
  205. package/src/transaction.ts +16 -0
  206. package/src/types/proposal.ts +80 -0
  207. package/src/types.ts +81 -0
  208. package/src/utils/encoding.test.ts +233 -0
  209. package/src/utils/encoding.ts +60 -0
  210. package/src/utils/index.ts +5 -0
  211. package/src/utils/random.ts +15 -0
  212. package/src/utils/signature.test.ts +187 -0
  213. package/src/utils/signature.ts +36 -0
  214. package/src/utils/word.test.ts +64 -0
  215. package/src/utils/word.ts +11 -0
@@ -0,0 +1,3 @@
1
+ import type { TransactionRequest, TransactionSummary, WebClient } from '@demox-labs/miden-sdk';
2
+ export declare function executeForSummary(client: WebClient, accountId: string, txRequest: TransactionRequest): Promise<TransactionSummary>;
3
+ //# sourceMappingURL=summary.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.d.ts","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAG/F,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,SAAS,EACjB,SAAS,EAAE,MAAM,EACjB,SAAS,EAAE,kBAAkB,GAC5B,OAAO,CAAC,kBAAkB,CAAC,CAG7B"}
@@ -0,0 +1,6 @@
1
+ import { AccountId } from '@demox-labs/miden-sdk';
2
+ export async function executeForSummary(client, accountId, txRequest) {
3
+ const acc = AccountId.fromHex(accountId);
4
+ return client.executeForSummary(acc, txRequest);
5
+ }
6
+ //# sourceMappingURL=summary.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"summary.js","sourceRoot":"","sources":["../../src/transaction/summary.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAE,MAAM,uBAAuB,CAAC;AAElD,MAAM,CAAC,KAAK,UAAU,iBAAiB,CACrC,MAAiB,EACjB,SAAiB,EACjB,SAA6B;IAE7B,MAAM,GAAG,GAAG,SAAS,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACzC,OAAQ,MAAc,CAAC,iBAAiB,CAAC,GAAG,EAAE,SAAS,CAAC,CAAC;AAC3D,CAAC"}
@@ -0,0 +1,7 @@
1
+ import { TransactionRequest, WebClient, Word } from '@demox-labs/miden-sdk';
2
+ import type { SignatureOptions } from './options.js';
3
+ export declare function buildUpdatePsmTransactionRequest(webClient: WebClient, newPsmPubkey: string, options?: SignatureOptions): Promise<{
4
+ request: TransactionRequest;
5
+ salt: Word;
6
+ }>;
7
+ //# sourceMappingURL=updatePsm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePsm.d.ts","sourceRoot":"","sources":["../../src/transaction/updatePsm.ts"],"names":[],"mappings":"AAAA,OAAO,EAGL,kBAAkB,EAGlB,SAAS,EACT,IAAI,EAEL,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAoBrD,wBAAsB,gCAAgC,CACpD,SAAS,EAAE,SAAS,EACpB,YAAY,EAAE,MAAM,EACpB,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAAC,CA8BtD"}
@@ -0,0 +1,43 @@
1
+ import { AdviceMap, FeltArray, TransactionRequestBuilder, Word as WordType, } from '@demox-labs/miden-sdk';
2
+ import { PSM_MASM } from '../account/masm.js';
3
+ import { normalizeHexWord } from '../utils/encoding.js';
4
+ import { randomWord } from '../utils/random.js';
5
+ function buildUpdatePsmScript(webClient) {
6
+ const libBuilder = webClient.createScriptBuilder();
7
+ const psmLib = libBuilder.buildLibrary('openzeppelin::psm', PSM_MASM);
8
+ libBuilder.linkDynamicLibrary(psmLib);
9
+ const scriptSource = `
10
+ use.openzeppelin::psm
11
+
12
+ begin
13
+ adv.push_mapval
14
+ dropw
15
+ call.psm::update_psm_public_key
16
+ end
17
+ `;
18
+ return libBuilder.compileTxScript(scriptSource);
19
+ }
20
+ export async function buildUpdatePsmTransactionRequest(webClient, newPsmPubkey, options = {}) {
21
+ const script = buildUpdatePsmScript(webClient);
22
+ const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
23
+ const pubkeyWordForAdvice = WordType.fromHex(normalizeHexWord(newPsmPubkey));
24
+ const pubkeyWordForFelts = WordType.fromHex(normalizeHexWord(newPsmPubkey));
25
+ const pubkeyWordForScript = WordType.fromHex(normalizeHexWord(newPsmPubkey));
26
+ const advice = new AdviceMap();
27
+ advice.insert(pubkeyWordForAdvice, new FeltArray(pubkeyWordForFelts.toFelts()));
28
+ const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
29
+ let txBuilder = new TransactionRequestBuilder();
30
+ txBuilder = txBuilder.withCustomScript(script);
31
+ txBuilder = txBuilder.withScriptArg(pubkeyWordForScript);
32
+ txBuilder = txBuilder.extendAdviceMap(advice);
33
+ txBuilder = txBuilder.withAuthArg(authSaltForBuilder);
34
+ if (options.signatureAdviceMap) {
35
+ txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
36
+ }
37
+ const authSaltForReturn = WordType.fromHex(normalizeHexWord(authSaltHex));
38
+ return {
39
+ request: txBuilder.build(),
40
+ salt: authSaltForReturn,
41
+ };
42
+ }
43
+ //# sourceMappingURL=updatePsm.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updatePsm.js","sourceRoot":"","sources":["../../src/transaction/updatePsm.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,SAAS,EAET,yBAAyB,EAIzB,IAAI,IAAI,QAAQ,GACjB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,gBAAgB,EAAE,MAAM,sBAAsB,CAAC;AACxD,OAAO,EAAE,UAAU,EAAE,MAAM,oBAAoB,CAAC;AAGhD,SAAS,oBAAoB,CAAC,SAAoB;IAChD,MAAM,UAAU,GAAG,SAAS,CAAC,mBAAmB,EAAE,CAAC;IACnD,MAAM,MAAM,GAAG,UAAU,CAAC,YAAY,CAAC,mBAAmB,EAAE,QAAQ,CAAC,CAAC;IACtE,UAAU,CAAC,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,YAAY,GAAG;;;;;;;;GAQpB,CAAC;IAEF,OAAO,UAAU,CAAC,eAAe,CAAC,YAAY,CAAC,CAAC;AAClD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,gCAAgC,CACpD,SAAoB,EACpB,YAAoB,EACpB,UAA4B,EAAE;IAE9B,MAAM,MAAM,GAAG,oBAAoB,CAAC,SAAS,CAAC,CAAC;IAE/C,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,UAAU,EAAE,CAAC,KAAK,EAAE,CAAC;IAE/E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC7E,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAC5E,MAAM,mBAAmB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC,CAAC;IAE7E,MAAM,MAAM,GAAG,IAAI,SAAS,EAAE,CAAC;IAC/B,MAAM,CAAC,MAAM,CAAC,mBAAmB,EAAE,IAAI,SAAS,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;IAEhF,MAAM,kBAAkB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE3E,IAAI,SAAS,GAAG,IAAI,yBAAyB,EAAE,CAAC;IAChD,SAAS,GAAG,SAAS,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAC/C,SAAS,GAAG,SAAS,CAAC,aAAa,CAAC,mBAAmB,CAAC,CAAC;IACzD,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAC9C,SAAS,GAAG,SAAS,CAAC,WAAW,CAAC,kBAAkB,CAAC,CAAC;IAEtD,IAAI,OAAO,CAAC,kBAAkB,EAAE,CAAC;QAC/B,SAAS,GAAG,SAAS,CAAC,eAAe,CAAC,OAAO,CAAC,kBAAkB,CAAC,CAAC;IACpE,CAAC;IAED,MAAM,iBAAiB,GAAG,QAAQ,CAAC,OAAO,CAAC,gBAAgB,CAAC,WAAW,CAAC,CAAC,CAAC;IAE1E,OAAO;QACL,OAAO,EAAE,SAAS,CAAC,KAAK,EAAE;QAC1B,IAAI,EAAE,iBAAiB;KACxB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,8 @@
1
+ import { TransactionRequest, WebClient, Word } from '@demox-labs/miden-sdk';
2
+ import type { SignatureOptions } from './options.js';
3
+ export declare function buildUpdateSignersTransactionRequest(webClient: WebClient, threshold: number, signerCommitments: string[], options?: SignatureOptions): Promise<{
4
+ request: TransactionRequest;
5
+ salt: Word;
6
+ configHash: Word;
7
+ }>;
8
+ //# sourceMappingURL=updateSigners.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSigners.d.ts","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"AAAA,OAAO,EAKL,kBAAkB,EAGlB,SAAS,EACT,IAAI,EAEL,MAAM,uBAAuB,CAAC;AAI/B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAyCrD,wBAAsB,oCAAoC,CACxD,SAAS,EAAE,SAAS,EACpB,SAAS,EAAE,MAAM,EACjB,iBAAiB,EAAE,MAAM,EAAE,EAC3B,OAAO,GAAE,gBAAqB,GAC7B,OAAO,CAAC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAC;IAAC,UAAU,EAAE,IAAI,CAAA;CAAE,CAAC,CAiCxE"}
@@ -0,0 +1,60 @@
1
+ import { AdviceMap, Felt, FeltArray, Rpo256, TransactionRequestBuilder, Word as WordType, } from '@demox-labs/miden-sdk';
2
+ import { MULTISIG_MASM, PSM_MASM } from '../account/masm.js';
3
+ import { normalizeHexWord } from '../utils/encoding.js';
4
+ import { randomWord } from '../utils/random.js';
5
+ function buildMultisigConfigAdvice(threshold, signerCommitments) {
6
+ const numApprovers = signerCommitments.length;
7
+ const felts = [
8
+ new Felt(BigInt(threshold)),
9
+ new Felt(BigInt(numApprovers)),
10
+ new Felt(0n),
11
+ new Felt(0n),
12
+ ];
13
+ for (const commitment of [...signerCommitments].reverse()) {
14
+ const word = WordType.fromHex(normalizeHexWord(commitment));
15
+ felts.push(...word.toFelts());
16
+ }
17
+ const payload = new FeltArray(felts);
18
+ const configHash = Rpo256.hashElements(payload);
19
+ return { configHash, payload };
20
+ }
21
+ function buildUpdateSignersScript(webClient) {
22
+ const libBuilder = webClient.createScriptBuilder();
23
+ const psmLib = libBuilder.buildLibrary('openzeppelin::psm', PSM_MASM);
24
+ libBuilder.linkStaticLibrary(psmLib);
25
+ const multisigLib = libBuilder.buildLibrary('auth::multisig', MULTISIG_MASM);
26
+ libBuilder.linkDynamicLibrary(multisigLib);
27
+ const scriptSource = `
28
+ use.auth::multisig
29
+
30
+ begin
31
+ call.multisig::update_signers_and_threshold
32
+ end
33
+ `;
34
+ return libBuilder.compileTxScript(scriptSource);
35
+ }
36
+ export async function buildUpdateSignersTransactionRequest(webClient, threshold, signerCommitments, options = {}) {
37
+ const { configHash: configHashForAdvice, payload } = buildMultisigConfigAdvice(threshold, signerCommitments);
38
+ const { configHash: configHashForScript } = buildMultisigConfigAdvice(threshold, signerCommitments);
39
+ const { configHash: configHashForReturn } = buildMultisigConfigAdvice(threshold, signerCommitments);
40
+ const advice = new AdviceMap();
41
+ advice.insert(configHashForAdvice, payload);
42
+ const script = buildUpdateSignersScript(webClient);
43
+ const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
44
+ const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
45
+ let txBuilder = new TransactionRequestBuilder();
46
+ txBuilder = txBuilder.withCustomScript(script);
47
+ txBuilder = txBuilder.withScriptArg(configHashForScript);
48
+ txBuilder = txBuilder.extendAdviceMap(advice);
49
+ txBuilder = txBuilder.withAuthArg(authSaltForBuilder);
50
+ if (options.signatureAdviceMap) {
51
+ txBuilder = txBuilder.extendAdviceMap(options.signatureAdviceMap);
52
+ }
53
+ const authSaltForReturn = WordType.fromHex(normalizeHexWord(authSaltHex));
54
+ return {
55
+ request: txBuilder.build(),
56
+ salt: authSaltForReturn,
57
+ configHash: configHashForReturn,
58
+ };
59
+ }
60
+ //# sourceMappingURL=updateSigners.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"updateSigners.js","sourceRoot":"","sources":["../../src/transaction/updateSigners.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ export { buildConsumeNotesTransactionRequest, } from './transaction/consumeNotes.js';
2
+ export { executeForSummary } from './transaction/summary.js';
3
+ export { buildP2idTransactionRequest, } from './transaction/p2id.js';
4
+ export { buildUpdatePsmTransactionRequest, } from './transaction/updatePsm.js';
5
+ export { buildUpdateSignersTransactionRequest, } from './transaction/updateSigners.js';
6
+ //# sourceMappingURL=transaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,8 @@
1
+ // Backward-compatible entry point for transaction helpers.
2
+ // The implementations now live in ./transaction/.
3
+ export { buildConsumeNotesTransactionRequest, } from './transaction/consumeNotes.js';
4
+ export { executeForSummary } from './transaction/summary.js';
5
+ export { buildP2idTransactionRequest, } from './transaction/p2id.js';
6
+ export { buildUpdatePsmTransactionRequest, } from './transaction/updatePsm.js';
7
+ export { buildUpdateSignersTransactionRequest, } from './transaction/updateSigners.js';
8
+ //# sourceMappingURL=transaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,2DAA2D;AAC3D,kDAAkD;AAClD,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,2BAA2B,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,gCAAgC,GACjC,MAAM,4BAA4B,CAAC;AACpC,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=transaction.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.test.d.ts","sourceRoot":"","sources":["../src/transaction.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,117 @@
1
+ import { describe, it, expect, vi, beforeAll } from 'vitest';
2
+ // Mock Miden SDK before importing transaction module
3
+ vi.mock('@demox-labs/miden-sdk', () => ({
4
+ AccountId: { fromHex: vi.fn() },
5
+ AdviceMap: vi.fn(),
6
+ Felt: vi.fn().mockImplementation((v) => ({ value: v })),
7
+ FeltArray: vi.fn().mockImplementation((arr) => arr),
8
+ Rpo256: { hashElements: vi.fn() },
9
+ Signature: { deserialize: vi.fn() },
10
+ TransactionRequestBuilder: vi.fn().mockImplementation(() => ({
11
+ withCustomScript: vi.fn().mockReturnThis(),
12
+ withScriptArg: vi.fn().mockReturnThis(),
13
+ extendAdviceMap: vi.fn().mockReturnThis(),
14
+ withAuthArg: vi.fn().mockReturnThis(),
15
+ build: vi.fn().mockReturnValue({}),
16
+ })),
17
+ Word: {
18
+ fromHex: vi.fn().mockImplementation((hex) => ({
19
+ toHex: () => hex,
20
+ toFelts: () => [1, 2, 3, 4],
21
+ })),
22
+ },
23
+ }));
24
+ // Now import the module under test - use dynamic import to ensure mocks are in place
25
+ let normalizeHexWord;
26
+ let signatureHexToBytes;
27
+ let hexToBytes;
28
+ beforeAll(async () => {
29
+ const encoding = await import('./utils/encoding.js');
30
+ const sig = await import('./utils/signature.js');
31
+ normalizeHexWord = encoding.normalizeHexWord;
32
+ hexToBytes = encoding.hexToBytes;
33
+ signatureHexToBytes = sig.signatureHexToBytes;
34
+ });
35
+ describe('transaction utilities', () => {
36
+ describe('normalizeHexWord', () => {
37
+ it('should handle hex without 0x prefix', () => {
38
+ const result = normalizeHexWord('abc123');
39
+ expect(result).toBe('0x' + '0'.repeat(58) + 'abc123');
40
+ });
41
+ it('should handle hex with 0x prefix', () => {
42
+ const result = normalizeHexWord('0xabc123');
43
+ expect(result).toBe('0x' + '0'.repeat(58) + 'abc123');
44
+ });
45
+ it('should handle hex with 0X prefix', () => {
46
+ const result = normalizeHexWord('0Xabc123');
47
+ expect(result).toBe('0x' + '0'.repeat(58) + 'abc123');
48
+ });
49
+ it('should convert to lowercase', () => {
50
+ const result = normalizeHexWord('0xABC123DEF');
51
+ expect(result).toBe('0x' + '0'.repeat(55) + 'abc123def');
52
+ });
53
+ it('should pad to 64 characters', () => {
54
+ const result = normalizeHexWord('1');
55
+ expect(result).toBe('0x' + '0'.repeat(63) + '1');
56
+ expect(result.length).toBe(66); // 0x + 64 chars
57
+ });
58
+ it('should preserve full 64-char hex', () => {
59
+ const fullHex = 'a'.repeat(64);
60
+ const result = normalizeHexWord(fullHex);
61
+ expect(result).toBe('0x' + fullHex);
62
+ });
63
+ it('should preserve full 64-char hex with prefix', () => {
64
+ const fullHex = 'b'.repeat(64);
65
+ const result = normalizeHexWord('0x' + fullHex);
66
+ expect(result).toBe('0x' + fullHex);
67
+ });
68
+ });
69
+ describe('hexToBytes', () => {
70
+ it('should convert hex string to Uint8Array', () => {
71
+ const result = hexToBytes('deadbeef');
72
+ expect(result).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
73
+ });
74
+ it('should handle 0x prefix', () => {
75
+ const result = hexToBytes('0xdeadbeef');
76
+ expect(result).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
77
+ });
78
+ it('should handle empty string', () => {
79
+ const result = hexToBytes('');
80
+ expect(result).toEqual(new Uint8Array([]));
81
+ });
82
+ it('should handle single byte', () => {
83
+ const result = hexToBytes('ff');
84
+ expect(result).toEqual(new Uint8Array([0xff]));
85
+ });
86
+ it('should handle zeros', () => {
87
+ const result = hexToBytes('00000000');
88
+ expect(result).toEqual(new Uint8Array([0, 0, 0, 0]));
89
+ });
90
+ it('should handle mixed case', () => {
91
+ const result = hexToBytes('DeAdBeEf');
92
+ expect(result).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
93
+ });
94
+ });
95
+ describe('signatureHexToBytes', () => {
96
+ it('should prepend auth scheme byte (0 = RpoFalcon512)', () => {
97
+ const result = signatureHexToBytes('deadbeef');
98
+ expect(result[0]).toBe(0); // RpoFalcon512 scheme byte
99
+ expect(result.slice(1)).toEqual(new Uint8Array([0xde, 0xad, 0xbe, 0xef]));
100
+ });
101
+ it('should handle 0x prefix', () => {
102
+ const result = signatureHexToBytes('0xaabbccdd');
103
+ expect(result[0]).toBe(0);
104
+ expect(result.slice(1)).toEqual(new Uint8Array([0xaa, 0xbb, 0xcc, 0xdd]));
105
+ });
106
+ it('should return correct length', () => {
107
+ const sigHex = 'a'.repeat(128); // 64 bytes
108
+ const result = signatureHexToBytes(sigHex);
109
+ expect(result.length).toBe(65); // 64 bytes + 1 prefix byte
110
+ });
111
+ it('should handle empty signature', () => {
112
+ const result = signatureHexToBytes('');
113
+ expect(result).toEqual(new Uint8Array([0])); // Just the prefix
114
+ });
115
+ });
116
+ });
117
+ //# sourceMappingURL=transaction.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"transaction.test.js","sourceRoot":"","sources":["../src/transaction.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,64 @@
1
+ /**
2
+ * HTTP client for PSM server communication.
3
+ */
4
+ import type { ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaProposalResponse, SignProposalRequest, Signer, StateObject } from '../types.js';
5
+ /**
6
+ * Error thrown by the PSM HTTP client.
7
+ */
8
+ export declare class PsmHttpError extends Error {
9
+ readonly status: number;
10
+ readonly statusText: string;
11
+ readonly body: string;
12
+ constructor(status: number, statusText: string, body: string);
13
+ }
14
+ /**
15
+ * HTTP client for PSM server.
16
+ */
17
+ export declare class PsmHttpClient {
18
+ private readonly baseUrl;
19
+ private signer;
20
+ constructor(baseUrl: string);
21
+ /**
22
+ * Set the signer for authenticated requests.
23
+ */
24
+ setSigner(signer: Signer): void;
25
+ /**
26
+ * Get the PSM server's public key.
27
+ */
28
+ getPubkey(): Promise<string>;
29
+ /**
30
+ * Configure/register an account on PSM.
31
+ */
32
+ configure(request: ConfigureRequest): Promise<ConfigureResponse>;
33
+ /**
34
+ * Get account state from PSM.
35
+ */
36
+ getState(accountId: string): Promise<StateObject>;
37
+ /**
38
+ * Get all delta proposals for an account.
39
+ */
40
+ getDeltaProposals(accountId: string): Promise<DeltaObject[]>;
41
+ /**
42
+ * Push a new delta proposal.
43
+ */
44
+ pushDeltaProposal(request: DeltaProposalRequest): Promise<DeltaProposalResponse>;
45
+ /**
46
+ * Sign a delta proposal.
47
+ */
48
+ signDeltaProposal(request: SignProposalRequest): Promise<DeltaObject>;
49
+ /**
50
+ * Push a delta (execute a proposal).
51
+ */
52
+ pushDelta(delta: DeltaObject): Promise<DeltaObject>;
53
+ /**
54
+ * Get a specific delta by nonce.
55
+ */
56
+ getDelta(accountId: string, nonce: number): Promise<DeltaObject>;
57
+ /**
58
+ * Get merged delta since a nonce.
59
+ */
60
+ getDeltaSince(accountId: string, fromNonce: number): Promise<DeltaObject>;
61
+ private fetch;
62
+ private fetchAuthenticated;
63
+ }
64
+ //# sourceMappingURL=http.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EACV,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,qBAAqB,EAIrB,mBAAmB,EACnB,MAAM,EACN,WAAW,EACZ,MAAM,aAAa,CAAC;AAErB;;GAEG;AACH,qBAAa,YAAa,SAAQ,KAAK;aAEnB,MAAM,EAAE,MAAM;aACd,UAAU,EAAE,MAAM;aAClB,IAAI,EAAE,MAAM;gBAFZ,MAAM,EAAE,MAAM,EACd,UAAU,EAAE,MAAM,EAClB,IAAI,EAAE,MAAM;CAK/B;AAED;;GAEG;AACH,qBAAa,aAAa;IAGZ,OAAO,CAAC,QAAQ,CAAC,OAAO;IAFpC,OAAO,CAAC,MAAM,CAAuB;gBAER,OAAO,EAAE,MAAM;IAE5C;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI;IAI/B;;OAEG;IACG,SAAS,IAAI,OAAO,CAAC,MAAM,CAAC;IAMlC;;OAEG;IACG,SAAS,CAAC,OAAO,EAAE,gBAAgB,GAAG,OAAO,CAAC,iBAAiB,CAAC;IAQtE;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAQvD;;OAEG;IACG,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,EAAE,CAAC;IASlE;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAQtF;;OAEG;IACG,iBAAiB,CAAC,OAAO,EAAE,mBAAmB,GAAG,OAAO,CAAC,WAAW,CAAC;IAQ3E;;OAEG;IACG,SAAS,CAAC,KAAK,EAAE,WAAW,GAAG,OAAO,CAAC,WAAW,CAAC;IAQzD;;OAEG;IACG,QAAQ,CAAC,SAAS,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;IAWtE;;OAEG;IACG,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC;YAejE,KAAK;YAkBL,kBAAkB;CAoBjC"}
@@ -0,0 +1,162 @@
1
+ /**
2
+ * HTTP client for PSM server communication.
3
+ */
4
+ /**
5
+ * Error thrown by the PSM HTTP client.
6
+ */
7
+ export class PsmHttpError extends Error {
8
+ status;
9
+ statusText;
10
+ body;
11
+ constructor(status, statusText, body) {
12
+ super(`PSM HTTP error ${status}: ${statusText} - ${body}`);
13
+ this.status = status;
14
+ this.statusText = statusText;
15
+ this.body = body;
16
+ this.name = 'PsmHttpError';
17
+ }
18
+ }
19
+ /**
20
+ * HTTP client for PSM server.
21
+ */
22
+ export class PsmHttpClient {
23
+ baseUrl;
24
+ signer = null;
25
+ constructor(baseUrl) {
26
+ this.baseUrl = baseUrl;
27
+ }
28
+ /**
29
+ * Set the signer for authenticated requests.
30
+ */
31
+ setSigner(signer) {
32
+ this.signer = signer;
33
+ }
34
+ /**
35
+ * Get the PSM server's public key.
36
+ */
37
+ async getPubkey() {
38
+ const response = await this.fetch('/pubkey', { method: 'GET' });
39
+ const data = (await response.json());
40
+ return data.pubkey;
41
+ }
42
+ /**
43
+ * Configure/register an account on PSM.
44
+ */
45
+ async configure(request) {
46
+ const response = await this.fetchAuthenticated('/configure', {
47
+ method: 'POST',
48
+ body: JSON.stringify(request),
49
+ }, request.account_id);
50
+ return (await response.json());
51
+ }
52
+ /**
53
+ * Get account state from PSM.
54
+ */
55
+ async getState(accountId) {
56
+ const params = new URLSearchParams({ account_id: accountId });
57
+ const response = await this.fetchAuthenticated(`/state?${params}`, {
58
+ method: 'GET',
59
+ }, accountId);
60
+ return (await response.json());
61
+ }
62
+ /**
63
+ * Get all delta proposals for an account.
64
+ */
65
+ async getDeltaProposals(accountId) {
66
+ const params = new URLSearchParams({ account_id: accountId });
67
+ const response = await this.fetchAuthenticated(`/delta/proposal?${params}`, {
68
+ method: 'GET',
69
+ }, accountId);
70
+ const data = (await response.json());
71
+ return data.proposals;
72
+ }
73
+ /**
74
+ * Push a new delta proposal.
75
+ */
76
+ async pushDeltaProposal(request) {
77
+ const response = await this.fetchAuthenticated('/delta/proposal', {
78
+ method: 'POST',
79
+ body: JSON.stringify(request),
80
+ }, request.account_id);
81
+ return (await response.json());
82
+ }
83
+ /**
84
+ * Sign a delta proposal.
85
+ */
86
+ async signDeltaProposal(request) {
87
+ const response = await this.fetchAuthenticated('/delta/proposal', {
88
+ method: 'PUT',
89
+ body: JSON.stringify(request),
90
+ }, request.account_id);
91
+ return (await response.json());
92
+ }
93
+ /**
94
+ * Push a delta (execute a proposal).
95
+ */
96
+ async pushDelta(delta) {
97
+ const response = await this.fetchAuthenticated('/delta', {
98
+ method: 'POST',
99
+ body: JSON.stringify(delta),
100
+ }, delta.account_id);
101
+ return (await response.json());
102
+ }
103
+ /**
104
+ * Get a specific delta by nonce.
105
+ */
106
+ async getDelta(accountId, nonce) {
107
+ const params = new URLSearchParams({
108
+ account_id: accountId,
109
+ nonce: nonce.toString(),
110
+ });
111
+ const response = await this.fetchAuthenticated(`/delta?${params}`, {
112
+ method: 'GET',
113
+ }, accountId);
114
+ return (await response.json());
115
+ }
116
+ /**
117
+ * Get merged delta since a nonce.
118
+ */
119
+ async getDeltaSince(accountId, fromNonce) {
120
+ const params = new URLSearchParams({
121
+ account_id: accountId,
122
+ nonce: fromNonce.toString(),
123
+ });
124
+ const response = await this.fetchAuthenticated(`/delta/since?${params}`, {
125
+ method: 'GET',
126
+ }, accountId);
127
+ return (await response.json());
128
+ }
129
+ // ==========================================================================
130
+ // Private helpers
131
+ // ==========================================================================
132
+ async fetch(path, init) {
133
+ const url = `${this.baseUrl}${path}`;
134
+ const response = await fetch(url, {
135
+ ...init,
136
+ headers: {
137
+ 'Content-Type': 'application/json',
138
+ ...init.headers,
139
+ },
140
+ });
141
+ if (!response.ok) {
142
+ const body = await response.text();
143
+ throw new PsmHttpError(response.status, response.statusText, body);
144
+ }
145
+ return response;
146
+ }
147
+ async fetchAuthenticated(path, init, accountId) {
148
+ if (!this.signer) {
149
+ throw new Error('No signer configured. Call setSigner() first.');
150
+ }
151
+ const signature = this.signer.signAccountId(accountId);
152
+ return this.fetch(path, {
153
+ ...init,
154
+ headers: {
155
+ ...init.headers,
156
+ 'x-pubkey': this.signer.publicKey,
157
+ 'x-signature': signature,
158
+ },
159
+ });
160
+ }
161
+ }
162
+ //# sourceMappingURL=http.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"http.js","sourceRoot":"","sources":["../../src/transport/http.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Transport layer for PSM server communication.
3
+ */
4
+ export { PsmHttpClient, PsmHttpError } from './http.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Transport layer for PSM server communication.
3
+ */
4
+ export { PsmHttpClient, PsmHttpError } from './http.js';
5
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/transport/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,aAAa,EAAE,YAAY,EAAE,MAAM,WAAW,CAAC"}