@openzeppelin/miden-multisig-client 0.16.0 → 0.16.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (80) hide show
  1. package/README.md +12 -0
  2. package/dist/client.d.ts +8 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +9 -2
  5. package/dist/client.js.map +1 -1
  6. package/dist/index.d.ts +5 -0
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js +4 -0
  9. package/dist/index.js.map +1 -1
  10. package/dist/multisig.d.ts +63 -2
  11. package/dist/multisig.d.ts.map +1 -1
  12. package/dist/multisig.js +131 -7
  13. package/dist/multisig.js.map +1 -1
  14. package/dist/multisig.test.js +216 -13
  15. package/dist/multisig.test.js.map +1 -1
  16. package/dist/proposal/factory.d.ts.map +1 -1
  17. package/dist/proposal/factory.js +10 -0
  18. package/dist/proposal/factory.js.map +1 -1
  19. package/dist/proposal/factory.test.d.ts +2 -0
  20. package/dist/proposal/factory.test.d.ts.map +1 -0
  21. package/dist/proposal/factory.test.js +32 -0
  22. package/dist/proposal/factory.test.js.map +1 -0
  23. package/dist/prover/config.d.ts +16 -0
  24. package/dist/prover/config.d.ts.map +1 -0
  25. package/dist/prover/config.js +54 -0
  26. package/dist/prover/config.js.map +1 -0
  27. package/dist/prover/config.test.d.ts +2 -0
  28. package/dist/prover/config.test.d.ts.map +1 -0
  29. package/dist/prover/config.test.js +54 -0
  30. package/dist/prover/config.test.js.map +1 -0
  31. package/dist/prover/errors.d.ts +2 -0
  32. package/dist/prover/errors.d.ts.map +1 -0
  33. package/dist/prover/errors.js +158 -0
  34. package/dist/prover/errors.js.map +1 -0
  35. package/dist/prover/errors.test.d.ts +2 -0
  36. package/dist/prover/errors.test.d.ts.map +1 -0
  37. package/dist/prover/errors.test.js +24 -0
  38. package/dist/prover/errors.test.js.map +1 -0
  39. package/dist/prover/retry.d.ts +10 -0
  40. package/dist/prover/retry.d.ts.map +1 -0
  41. package/dist/prover/retry.js +32 -0
  42. package/dist/prover/retry.js.map +1 -0
  43. package/dist/prover/retry.test.d.ts +2 -0
  44. package/dist/prover/retry.test.d.ts.map +1 -0
  45. package/dist/prover/retry.test.js +20 -0
  46. package/dist/prover/retry.test.js.map +1 -0
  47. package/dist/prover/workflow.d.ts +11 -0
  48. package/dist/prover/workflow.d.ts.map +1 -0
  49. package/dist/prover/workflow.js +18 -0
  50. package/dist/prover/workflow.js.map +1 -0
  51. package/dist/prover/workflow.test.d.ts +2 -0
  52. package/dist/prover/workflow.test.d.ts.map +1 -0
  53. package/dist/prover/workflow.test.js +80 -0
  54. package/dist/prover/workflow.test.js.map +1 -0
  55. package/dist/transaction/p2id.d.ts +8 -1
  56. package/dist/transaction/p2id.d.ts.map +1 -1
  57. package/dist/transaction/p2id.js +12 -3
  58. package/dist/transaction/p2id.js.map +1 -1
  59. package/dist/transaction.d.ts +1 -1
  60. package/dist/transaction.d.ts.map +1 -1
  61. package/dist/transaction.js +1 -1
  62. package/dist/transaction.js.map +1 -1
  63. package/package.json +2 -2
  64. package/src/client.ts +17 -2
  65. package/src/index.ts +5 -0
  66. package/src/multisig.test.ts +262 -17
  67. package/src/multisig.ts +162 -6
  68. package/src/proposal/factory.test.ts +40 -0
  69. package/src/proposal/factory.ts +11 -1
  70. package/src/prover/config.test.ts +90 -0
  71. package/src/prover/config.ts +78 -0
  72. package/src/prover/errors.test.ts +53 -0
  73. package/src/prover/errors.ts +178 -0
  74. package/src/prover/retry.test.ts +38 -0
  75. package/src/prover/retry.ts +46 -0
  76. package/src/prover/test-node.d.ts +6 -0
  77. package/src/prover/workflow.test.ts +109 -0
  78. package/src/prover/workflow.ts +19 -0
  79. package/src/transaction/p2id.ts +29 -10
  80. package/src/transaction.ts +1 -0
@@ -0,0 +1,80 @@
1
+ import { describe, expect, it, vi } from 'vitest';
2
+ import { ProverWorkflow } from './workflow.js';
3
+ function asType(value) {
4
+ return value;
5
+ }
6
+ describe('ProverWorkflow', () => {
7
+ it('executes once, retries proof with fresh provers, submits once, and applies once', async () => {
8
+ const transient = Object.assign(new Error('temporarily unavailable'), {
9
+ code: 'Unavailable',
10
+ });
11
+ const apply = vi.fn().mockResolvedValue({});
12
+ const submit = vi.fn().mockResolvedValue({ apply });
13
+ const prove = vi.fn().mockRejectedValueOnce(transient).mockResolvedValueOnce({ submit });
14
+ const execution = { marker: 'unchanged', prove };
15
+ const executeRequest = vi.fn().mockResolvedValue(execution);
16
+ const client = {
17
+ transactions: { executeRequest },
18
+ };
19
+ const provers = [];
20
+ const config = {
21
+ kind: 'remote',
22
+ url: 'https://prover.example/',
23
+ maxAttempts: 2,
24
+ createProver: () => {
25
+ const prover = asType({});
26
+ provers.push(prover);
27
+ return prover;
28
+ },
29
+ };
30
+ const runtime = {
31
+ sleep: vi.fn().mockResolvedValue(undefined),
32
+ unitRandom: () => 0.5,
33
+ };
34
+ const workflow = new ProverWorkflow(asType(client), config, runtime);
35
+ await workflow.submit(asType({}), asType({}));
36
+ expect(executeRequest).toHaveBeenCalledTimes(1);
37
+ expect(prove).toHaveBeenCalledTimes(2);
38
+ expect(provers).toHaveLength(2);
39
+ expect(provers[0]).not.toBe(provers[1]);
40
+ expect(submit).toHaveBeenCalledTimes(1);
41
+ expect(apply).toHaveBeenCalledTimes(1);
42
+ expect(runtime.sleep).toHaveBeenCalledTimes(1);
43
+ });
44
+ it('returns the final original error without sleeping after exhaustion', async () => {
45
+ const first = Object.assign(new Error('unavailable'), { code: 'Unavailable' });
46
+ const final = Object.assign(new Error('deadline exceeded'), {
47
+ code: 'DeadlineExceeded',
48
+ });
49
+ const prove = vi.fn().mockRejectedValueOnce(first).mockRejectedValueOnce(final);
50
+ const client = { transactions: { executeRequest: vi.fn().mockResolvedValue({ prove }) } };
51
+ const runtime = {
52
+ sleep: vi.fn().mockResolvedValue(undefined),
53
+ unitRandom: () => 0.5,
54
+ };
55
+ const workflow = new ProverWorkflow(asType(client), {
56
+ kind: 'remote',
57
+ maxAttempts: 2,
58
+ createProver: () => asType({}),
59
+ }, runtime);
60
+ await expect(workflow.submit(asType({}), asType({}))).rejects.toBe(final);
61
+ expect(prove).toHaveBeenCalledTimes(2);
62
+ expect(runtime.sleep).toHaveBeenCalledTimes(1);
63
+ });
64
+ it('uses the injected prover directly when no cloneable remote override exists', async () => {
65
+ const apply = vi.fn().mockResolvedValue({});
66
+ const submit = vi.fn().mockResolvedValue({ apply });
67
+ const prove = vi.fn().mockResolvedValue({ submit });
68
+ const client = {
69
+ transactions: { executeRequest: vi.fn().mockResolvedValue({ prove }) },
70
+ };
71
+ const workflow = new ProverWorkflow(asType(client), {
72
+ kind: 'injected',
73
+ maxAttempts: 1,
74
+ createProver: () => undefined,
75
+ });
76
+ await workflow.submit(asType({}), asType({}));
77
+ expect(prove).toHaveBeenCalledWith();
78
+ });
79
+ });
80
+ //# sourceMappingURL=workflow.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"workflow.test.js","sourceRoot":"","sources":["../../src/prover/workflow.test.ts"],"names":[],"mappings":"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"}
@@ -1,5 +1,5 @@
1
1
  import type { Account, TransactionRequest, Word } from '@miden-sdk/miden-sdk';
2
- import { NoteType } from '@miden-sdk/miden-sdk';
2
+ import { Note, NoteType } from '@miden-sdk/miden-sdk';
3
3
  import type { SignatureOptions } from './options.js';
4
4
  import type { P2idNoteVisibility } from '../types/proposal.js';
5
5
  export interface P2idTransactionOptions extends SignatureOptions {
@@ -19,6 +19,13 @@ export declare function parseP2idNoteType(value: string | undefined): NoteType;
19
19
  */
20
20
  export declare function p2idNoteTypeToMetadata(noteType: NoteType | undefined): P2idNoteVisibility | undefined;
21
21
  export declare function deriveP2idSerialNumber(salt: Word): Word;
22
+ /**
23
+ * Rebuilds the P2ID note a proposal creates, from its metadata fields. The
24
+ * note is deterministic in the salt, so the resulting ID matches the note the
25
+ * proposal produces on execution (issue #356). The asset is derived from the
26
+ * account's current vault state, so call this before the transfer executes.
27
+ */
28
+ export declare function buildP2idNoteFromMetadata(senderId: string, recipientId: string, faucetId: string, amount: bigint, account: Account, noteType: NoteType, saltHex: string): Note;
22
29
  export declare function buildP2idTransactionRequest(senderId: string, recipientId: string, faucetId: string, amount: bigint, account: Account, options?: P2idTransactionOptions): {
23
30
  request: TransactionRequest;
24
31
  salt: Word;
@@ -1 +1 @@
1
- {"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAYL,QAAQ,EAIT,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAErG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMvD;AAwDD,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,sBAA2B,GACnC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CAqC7C"}
1
+ {"version":3,"file":"p2id.d.ts","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,OAAO,EAAE,kBAAkB,EAAE,IAAI,EAAE,MAAM,sBAAsB,CAAC;AAC9E,OAAO,EAKL,IAAI,EAOJ,QAAQ,EAIT,MAAM,sBAAsB,CAAC;AAG9B,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AACrD,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE/D,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,qEAAqE;IACrE,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,GAAG,QAAQ,CAUrE;AAED;;;GAGG;AACH,wBAAgB,sBAAsB,CAAC,QAAQ,EAAE,QAAQ,GAAG,SAAS,GAAG,kBAAkB,GAAG,SAAS,CAErG;AAED,wBAAgB,sBAAsB,CAAC,IAAI,EAAE,IAAI,GAAG,IAAI,CAMvD;AAwDD;;;;;GAKG;AACH,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,QAAQ,EAAE,QAAQ,EAClB,OAAO,EAAE,MAAM,GACd,IAAI,CASN;AAED,wBAAgB,2BAA2B,CACzC,QAAQ,EAAE,MAAM,EAChB,WAAW,EAAE,MAAM,EACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EACd,OAAO,EAAE,OAAO,EAChB,OAAO,GAAE,sBAA2B,GACnC;IAAE,OAAO,EAAE,kBAAkB,CAAC;IAAC,IAAI,EAAE,IAAI,CAAA;CAAE,CA+B7C"}
@@ -64,14 +64,23 @@ function buildP2idNote(sender, recipient, noteAssets, noteType, saltHex) {
64
64
  const noteMetadata = new NoteMetadata(sender, noteType, noteTag);
65
65
  return new Note(noteAssets, noteMetadata, noteRecipient);
66
66
  }
67
- export function buildP2idTransactionRequest(senderId, recipientId, faucetId, amount, account, options = {}) {
67
+ /**
68
+ * Rebuilds the P2ID note a proposal creates, from its metadata fields. The
69
+ * note is deterministic in the salt, so the resulting ID matches the note the
70
+ * proposal produces on execution (issue #356). The asset is derived from the
71
+ * account's current vault state, so call this before the transfer executes.
72
+ */
73
+ export function buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, account, noteType, saltHex) {
68
74
  const sender = AccountId.fromHex(senderId);
69
75
  const recipient = AccountId.fromHex(recipientId);
70
76
  const faucet = AccountId.fromHex(faucetId);
71
- const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
72
77
  const asset = resolveFungibleAssetFromVault(account, faucet, amount);
73
78
  const noteAssets = new NoteAssets([asset]);
74
- const note = buildP2idNote(sender, recipient, noteAssets, options.noteType ?? NoteType.Public, authSaltHex);
79
+ return buildP2idNote(sender, recipient, noteAssets, noteType, saltHex);
80
+ }
81
+ export function buildP2idTransactionRequest(senderId, recipientId, faucetId, amount, account, options = {}) {
82
+ const authSaltHex = options.salt ? options.salt.toHex() : randomWord().toHex();
83
+ const note = buildP2idNoteFromMetadata(senderId, recipientId, faucetId, amount, account, options.noteType ?? NoteType.Public, authSaltHex);
75
84
  const outputNotes = new MidenArrays.NoteArray([note]);
76
85
  const authSaltForBuilder = WordType.fromHex(normalizeHexWord(authSaltHex));
77
86
  let txBuilder = new TransactionRequestBuilder();
@@ -1 +1 @@
1
- {"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"p2id.js","sourceRoot":"","sources":["../../src/transaction/p2id.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,6 @@
1
1
  export { buildConsumeNotesTransactionRequest, } from './transaction/consumeNotes.js';
2
2
  export { executeForSummary } from './transaction/summary.js';
3
- export { buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, type P2idTransactionOptions, } from './transaction/p2id.js';
3
+ export { buildP2idNoteFromMetadata, buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, type P2idTransactionOptions, } from './transaction/p2id.js';
4
4
  export { buildUpdateGuardianTransactionRequest, } from './transaction/updateGuardian.js';
5
5
  export { buildUpdateProcedureThresholdTransactionRequest, } from './transaction/updateProcedureThreshold.js';
6
6
  export { buildUpdateSignersTransactionRequest, } from './transaction/updateSigners.js';
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"transaction.d.ts","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,EACtB,KAAK,sBAAsB,GAC5B,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
@@ -1,6 +1,6 @@
1
1
  export { buildConsumeNotesTransactionRequest, } from './transaction/consumeNotes.js';
2
2
  export { executeForSummary } from './transaction/summary.js';
3
- export { buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, } from './transaction/p2id.js';
3
+ export { buildP2idNoteFromMetadata, buildP2idTransactionRequest, parseP2idNoteType, p2idNoteTypeToMetadata, } from './transaction/p2id.js';
4
4
  export { buildUpdateGuardianTransactionRequest, } from './transaction/updateGuardian.js';
5
5
  export { buildUpdateProcedureThresholdTransactionRequest, } from './transaction/updateProcedureThreshold.js';
6
6
  export { buildUpdateSignersTransactionRequest, } from './transaction/updateSigners.js';
@@ -1 +1 @@
1
- {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
1
+ {"version":3,"file":"transaction.js","sourceRoot":"","sources":["../src/transaction.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mCAAmC,GACpC,MAAM,+BAA+B,CAAC;AACvC,OAAO,EAAE,iBAAiB,EAAE,MAAM,0BAA0B,CAAC;AAC7D,OAAO,EACL,yBAAyB,EACzB,2BAA2B,EAC3B,iBAAiB,EACjB,sBAAsB,GAEvB,MAAM,uBAAuB,CAAC;AAC/B,OAAO,EACL,qCAAqC,GACtC,MAAM,iCAAiC,CAAC;AACzC,OAAO,EACL,+CAA+C,GAChD,MAAM,2CAA2C,CAAC;AACnD,OAAO,EACL,oCAAoC,GACrC,MAAM,gCAAgC,CAAC"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@openzeppelin/miden-multisig-client",
3
- "version": "0.16.0",
3
+ "version": "0.16.1",
4
4
  "description": "TypeScript SDK for Miden multisig accounts with GUARDIAN integration",
5
5
  "repository": {
6
6
  "type": "git",
@@ -39,7 +39,7 @@
39
39
  "@miden-sdk/miden-sdk": "^0.15.8",
40
40
  "@noble/curves": "^1.9.7",
41
41
  "@noble/hashes": "^2.0.1",
42
- "@openzeppelin/guardian-client": "^0.16.0"
42
+ "@openzeppelin/guardian-client": "^0.16.1"
43
43
  },
44
44
  "devDependencies": {
45
45
  "typescript": "^5.7.2",
package/src/client.ts CHANGED
@@ -13,6 +13,11 @@ import { createMultisigAccount } from './account/index.js';
13
13
  import { AccountInspector } from './inspector.js';
14
14
  import { getRawMidenClient, requireConfigValue, requireMidenRpcEndpoint } from './raw-client.js';
15
15
  import type { MultisigConfig, Signer } from './types.js';
16
+ import {
17
+ resolveProverConfig,
18
+ type ProverConfig,
19
+ type ResolvedProverConfig,
20
+ } from './prover/config.js';
16
21
 
17
22
  interface AccountKeyBindingSigner {
18
23
  bindAccountKey?(midenClient: MidenClient, accountId: string): Promise<void>;
@@ -41,6 +46,8 @@ export interface MultisigClientConfig {
41
46
  * the injected `MidenClient`; there is no default.
42
47
  */
43
48
  midenRpcEndpoint: string;
49
+ /** Multisig-owned remote prover override and proof retry policy. */
50
+ prover?: ProverConfig;
44
51
  }
45
52
 
46
53
  /**
@@ -70,6 +77,10 @@ export interface RecoveredAccount {
70
77
  * const client = new MultisigClient(midenClient, {
71
78
  * guardianEndpoint: 'http://localhost:3000',
72
79
  * midenRpcEndpoint: 'https://rpc.devnet.miden.io',
80
+ * prover: {
81
+ * url: 'https://prover.example',
82
+ * retry: { maxAttempts: 4 },
83
+ * },
73
84
  * });
74
85
  *
75
86
  * // Get GUARDIAN pubkey for config
@@ -83,11 +94,13 @@ export interface RecoveredAccount {
83
94
  export class MultisigClient {
84
95
  private readonly midenClient: MidenClient;
85
96
  private readonly midenRpcEndpoint: string;
97
+ private readonly proverConfig: ResolvedProverConfig;
86
98
  private _guardianClient: GuardianHttpClient;
87
99
 
88
100
  constructor(midenClient: MidenClient, config: MultisigClientConfig) {
89
101
  this.midenClient = midenClient;
90
102
  this.midenRpcEndpoint = requireMidenRpcEndpoint(config?.midenRpcEndpoint);
103
+ this.proverConfig = resolveProverConfig(config?.prover, midenClient.defaultProver);
91
104
  this._guardianClient = new GuardianHttpClient(
92
105
  requireConfigValue('guardianEndpoint', config?.guardianEndpoint),
93
106
  );
@@ -161,7 +174,8 @@ export class MultisigClient {
161
174
  signer,
162
175
  this.midenClient,
163
176
  undefined,
164
- this.midenRpcEndpoint
177
+ this.midenRpcEndpoint,
178
+ this.proverConfig,
165
179
  );
166
180
  }
167
181
 
@@ -213,7 +227,8 @@ export class MultisigClient {
213
227
  signer,
214
228
  this.midenClient,
215
229
  accountId,
216
- this.midenRpcEndpoint
230
+ this.midenRpcEndpoint,
231
+ this.proverConfig,
217
232
  );
218
233
  }
219
234
  }
package/src/index.ts CHANGED
@@ -25,6 +25,10 @@
25
25
  * const client = new MultisigClient(midenClient, {
26
26
  * guardianEndpoint: 'http://localhost:3000',
27
27
  * midenRpcEndpoint: 'https://rpc.devnet.miden.io',
28
+ * prover: {
29
+ * url: 'https://prover.example',
30
+ * retry: { maxAttempts: 4 },
31
+ * },
28
32
  * });
29
33
  *
30
34
  * // Get GUARDIAN pubkey for config
@@ -45,6 +49,7 @@ export {
45
49
  type MultisigClientConfig,
46
50
  type RecoveredAccount,
47
51
  } from './client.js';
52
+ export type { ProverConfig, ProverRetryPolicy } from './prover/config.js';
48
53
  export { lookupAuthDigest } from './lookupAuth.js';
49
54
  export { Multisig, type AccountState } from './multisig.js';
50
55
  export { AccountInspector, type DetectedMultisigConfig, type VaultBalance } from './inspector.js';