@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.
- package/README.md +12 -0
- package/dist/client.d.ts +8 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +9 -2
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +5 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +4 -0
- package/dist/index.js.map +1 -1
- package/dist/multisig.d.ts +63 -2
- package/dist/multisig.d.ts.map +1 -1
- package/dist/multisig.js +131 -7
- package/dist/multisig.js.map +1 -1
- package/dist/multisig.test.js +216 -13
- package/dist/multisig.test.js.map +1 -1
- package/dist/proposal/factory.d.ts.map +1 -1
- package/dist/proposal/factory.js +10 -0
- package/dist/proposal/factory.js.map +1 -1
- package/dist/proposal/factory.test.d.ts +2 -0
- package/dist/proposal/factory.test.d.ts.map +1 -0
- package/dist/proposal/factory.test.js +32 -0
- package/dist/proposal/factory.test.js.map +1 -0
- package/dist/prover/config.d.ts +16 -0
- package/dist/prover/config.d.ts.map +1 -0
- package/dist/prover/config.js +54 -0
- package/dist/prover/config.js.map +1 -0
- package/dist/prover/config.test.d.ts +2 -0
- package/dist/prover/config.test.d.ts.map +1 -0
- package/dist/prover/config.test.js +54 -0
- package/dist/prover/config.test.js.map +1 -0
- package/dist/prover/errors.d.ts +2 -0
- package/dist/prover/errors.d.ts.map +1 -0
- package/dist/prover/errors.js +158 -0
- package/dist/prover/errors.js.map +1 -0
- package/dist/prover/errors.test.d.ts +2 -0
- package/dist/prover/errors.test.d.ts.map +1 -0
- package/dist/prover/errors.test.js +24 -0
- package/dist/prover/errors.test.js.map +1 -0
- package/dist/prover/retry.d.ts +10 -0
- package/dist/prover/retry.d.ts.map +1 -0
- package/dist/prover/retry.js +32 -0
- package/dist/prover/retry.js.map +1 -0
- package/dist/prover/retry.test.d.ts +2 -0
- package/dist/prover/retry.test.d.ts.map +1 -0
- package/dist/prover/retry.test.js +20 -0
- package/dist/prover/retry.test.js.map +1 -0
- package/dist/prover/workflow.d.ts +11 -0
- package/dist/prover/workflow.d.ts.map +1 -0
- package/dist/prover/workflow.js +18 -0
- package/dist/prover/workflow.js.map +1 -0
- package/dist/prover/workflow.test.d.ts +2 -0
- package/dist/prover/workflow.test.d.ts.map +1 -0
- package/dist/prover/workflow.test.js +80 -0
- package/dist/prover/workflow.test.js.map +1 -0
- package/dist/transaction/p2id.d.ts +8 -1
- package/dist/transaction/p2id.d.ts.map +1 -1
- package/dist/transaction/p2id.js +12 -3
- package/dist/transaction/p2id.js.map +1 -1
- package/dist/transaction.d.ts +1 -1
- package/dist/transaction.d.ts.map +1 -1
- package/dist/transaction.js +1 -1
- package/dist/transaction.js.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +17 -2
- package/src/index.ts +5 -0
- package/src/multisig.test.ts +262 -17
- package/src/multisig.ts +162 -6
- package/src/proposal/factory.test.ts +40 -0
- package/src/proposal/factory.ts +11 -1
- package/src/prover/config.test.ts +90 -0
- package/src/prover/config.ts +78 -0
- package/src/prover/errors.test.ts +53 -0
- package/src/prover/errors.ts +178 -0
- package/src/prover/retry.test.ts +38 -0
- package/src/prover/retry.ts +46 -0
- package/src/prover/test-node.d.ts +6 -0
- package/src/prover/workflow.test.ts +109 -0
- package/src/prover/workflow.ts +19 -0
- package/src/transaction/p2id.ts +29 -10
- 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,
|
|
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"}
|
package/dist/transaction/p2id.js
CHANGED
|
@@ -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
|
-
|
|
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
|
-
|
|
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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"}
|
package/dist/transaction.d.ts
CHANGED
|
@@ -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"}
|
package/dist/transaction.js
CHANGED
|
@@ -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';
|
package/dist/transaction.js.map
CHANGED
|
@@ -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.
|
|
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.
|
|
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';
|