@openzeppelin/guardian-client 0.18.2 → 0.19.0-rc.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 +66 -5
- package/dist/auth-request.d.ts +13 -0
- package/dist/auth-request.d.ts.map +1 -1
- package/dist/auth-request.js +26 -5
- package/dist/auth-request.js.map +1 -1
- package/dist/conversion.d.ts.map +1 -1
- package/dist/conversion.js +12 -2
- package/dist/conversion.js.map +1 -1
- package/dist/error-codes.d.ts +3 -5
- package/dist/error-codes.d.ts.map +1 -1
- package/dist/error-codes.js +21 -4
- package/dist/error-codes.js.map +1 -1
- package/dist/execution.d.ts +99 -0
- package/dist/execution.d.ts.map +1 -0
- package/dist/execution.js +124 -0
- package/dist/execution.js.map +1 -0
- package/dist/http.d.ts +57 -4
- package/dist/http.d.ts.map +1 -1
- package/dist/http.js +111 -13
- package/dist/http.js.map +1 -1
- package/dist/index.d.ts +7 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +2 -0
- package/dist/index.js.map +1 -1
- package/dist/request-envelope.d.ts +22 -0
- package/dist/request-envelope.d.ts.map +1 -0
- package/dist/request-envelope.js +51 -0
- package/dist/request-envelope.js.map +1 -0
- package/dist/server-types.d.ts +20 -0
- package/dist/server-types.d.ts.map +1 -1
- package/dist/types.d.ts +48 -1
- package/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- package/src/auth-request.test.ts +12 -0
- package/src/auth-request.ts +37 -5
- package/src/conversion.test.ts +81 -0
- package/src/conversion.ts +17 -2
- package/src/dependencies.test.ts +25 -0
- package/src/error-codes.test.ts +14 -1
- package/src/error-codes.ts +21 -4
- package/src/execution.test.ts +145 -0
- package/src/execution.ts +206 -0
- package/src/http.test.ts +430 -14
- package/src/http.ts +153 -13
- package/src/index.ts +34 -1
- package/src/request-envelope.test.ts +30 -0
- package/src/request-envelope.ts +68 -0
- package/src/server-types.ts +20 -1
- package/src/types.ts +50 -1
package/README.md
CHANGED
|
@@ -69,10 +69,12 @@ await client.revokeAllSessions(); // wallet-signed: ends every session of the si
|
|
|
69
69
|
The delegated signer signs reads (`getState`, `getCanonicalNonce`, `getDelta`,
|
|
70
70
|
`getDeltaSince`, `getDeltaHistory`), proposal reads and proposal create/sign
|
|
71
71
|
(`getDeltaProposals`, `getDeltaProposal`, `pushDeltaProposal`,
|
|
72
|
-
`signDeltaProposal`)
|
|
73
|
-
`
|
|
72
|
+
`signDeltaProposal`), execution requests and status reads
|
|
73
|
+
(`executeDeltaProposal`, `getDeltaProposalExecution`, `getCurrentExecution`)
|
|
74
|
+
and delta pushes (`pushDelta`). Every other route uses the wallet signer,
|
|
75
|
+
including `configure`, `abandonCandidate`, account lookup and
|
|
74
76
|
`revokeAllSessions`; the server rejects session credentials there with
|
|
75
|
-
`wallet_signature_required`.
|
|
77
|
+
`wallet_signature_required`, as an older Guardian does for `pushDelta`.
|
|
76
78
|
|
|
77
79
|
A session is used only while the wallet that granted it
|
|
78
80
|
(`session.signerCommitment`) is the client's signer. It is dropped 30 seconds
|
|
@@ -104,6 +106,23 @@ await client.configure({
|
|
|
104
106
|
});
|
|
105
107
|
```
|
|
106
108
|
|
|
109
|
+
An account whose cosigners do not all use one signature scheme (for example
|
|
110
|
+
an ECDSA wallet and a locally held Falcon key) declares each cosigner's scheme
|
|
111
|
+
and the GUARDIAN's scheme with the `Miden` variant. Keep the single-scheme
|
|
112
|
+
variants for every other account: Guardian versions before this variant reject it.
|
|
113
|
+
|
|
114
|
+
```typescript
|
|
115
|
+
const auth: AuthConfig = {
|
|
116
|
+
Miden: {
|
|
117
|
+
cosigners: [
|
|
118
|
+
{ commitment: walletCommitment, scheme: 'ecdsa' },
|
|
119
|
+
{ commitment: falconCommitment, scheme: 'falcon' },
|
|
120
|
+
],
|
|
121
|
+
guardian_scheme: 'ecdsa',
|
|
122
|
+
},
|
|
123
|
+
};
|
|
124
|
+
```
|
|
125
|
+
|
|
107
126
|
### Get Account State
|
|
108
127
|
|
|
109
128
|
```typescript
|
|
@@ -143,15 +162,28 @@ behind it can never land. Record an
|
|
|
143
162
|
abandon intent and poll for the resolution:
|
|
144
163
|
|
|
145
164
|
```typescript
|
|
146
|
-
|
|
165
|
+
// `proposalId` names the transaction: its summary's commitment (the
|
|
166
|
+
// proposal id of a multisig proposal).
|
|
167
|
+
const accepted = await client.abandonCandidate(accountId, nonce, proposalId);
|
|
147
168
|
console.log(accepted.state); // 'pending'
|
|
148
169
|
|
|
149
170
|
// The guardian's worker confirms over a short quarantine that the tx did
|
|
150
171
|
// not land, then releases the account.
|
|
151
|
-
const status = await client.abandonStatus(accountId, nonce);
|
|
172
|
+
const status = await client.abandonStatus(accountId, nonce, accepted.commitment);
|
|
152
173
|
// 'waiting' | 'landed' | 'abandoned' | 'retained' | 'unexpected'
|
|
153
174
|
```
|
|
154
175
|
|
|
176
|
+
Pass the `commitment` the abandon returned: a Guardian execution can archive
|
|
177
|
+
the abandoned delta and take its nonce, so the nonce alone does not identify
|
|
178
|
+
it. Once that other delta is canonical the status is `'abandoned'`, since the
|
|
179
|
+
abandoned transaction can no longer land.
|
|
180
|
+
|
|
181
|
+
`proposalId` is the transaction summary's commitment, the id the server gave
|
|
182
|
+
the proposal when it was pushed (the `commitment` of the
|
|
183
|
+
`pushDeltaProposal` response). Naming it needs a Guardian server from the
|
|
184
|
+
same release: an older server does not know `proposal_id` and refuses the
|
|
185
|
+
signed request as unauthenticated, before recording anything.
|
|
186
|
+
|
|
155
187
|
`'retained'` means the guardian stopped actively verifying the candidate
|
|
156
188
|
and released the account slot, but the on-chain outcome is still
|
|
157
189
|
**uncertain**: background reconciliation may promote the delta to
|
|
@@ -247,6 +279,35 @@ const result = await client.pushDelta({
|
|
|
247
279
|
});
|
|
248
280
|
```
|
|
249
281
|
|
|
282
|
+
### Execute a Proposal Through Guardian
|
|
283
|
+
|
|
284
|
+
A proposal pushed with a `transactionRequest` (a Guardian-executable proposal) can be proved,
|
|
285
|
+
submitted and committed by Guardian once it has enough signatures. Fetched proposals keep the
|
|
286
|
+
stored request in `deltaPayload.transactionRequest`.
|
|
287
|
+
|
|
288
|
+
```typescript
|
|
289
|
+
import { isTerminalExecutionState } from '@openzeppelin/guardian-client';
|
|
290
|
+
|
|
291
|
+
let execution = await client.executeDeltaProposal(accountId, proposalId);
|
|
292
|
+
while (!isTerminalExecutionState(execution.state)) {
|
|
293
|
+
await new Promise((resolve) => setTimeout(resolve, 2000));
|
|
294
|
+
execution = await client.getDeltaProposalExecution(accountId, proposalId);
|
|
295
|
+
}
|
|
296
|
+
|
|
297
|
+
// The account's in-flight execution, or null
|
|
298
|
+
const current = await client.getCurrentExecution(accountId);
|
|
299
|
+
```
|
|
300
|
+
|
|
301
|
+
Guardian refuses a guardian switch with `proposal_executes_locally` (`meta.reason`
|
|
302
|
+
`switch_guardian`): the client that executes a switch registers the account at the new Guardian.
|
|
303
|
+
|
|
304
|
+
A refusal throws a `GuardianHttpError` whose `rawCode` is the wire code (for example
|
|
305
|
+
`GUARDIAN_EXECUTION_CONFLICT`, with `meta.blockingProposalId`). `getStatus()` reports in
|
|
306
|
+
`execution` whether the server offers Guardian execution at all; a Guardian that predates
|
|
307
|
+
Guardian execution sends none, and `execution` is then absent: it does not offer it. The multisig SDK adds a
|
|
308
|
+
`waitForGuardianExecution` helper with backoff, retries and a deadline; see
|
|
309
|
+
[`docs/MULTISIG_SDK.md`](../../docs/MULTISIG_SDK.md#guardian-execution).
|
|
310
|
+
|
|
250
311
|
### Get Deltas
|
|
251
312
|
|
|
252
313
|
```typescript
|
package/dist/auth-request.d.ts
CHANGED
|
@@ -1,9 +1,22 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* An operation whose signed payload is domain-separated from every other request's, so a
|
|
3
|
+
* signature over one never authenticates another request with the same body. Mirrors the Rust
|
|
4
|
+
* `SignedOperation`.
|
|
5
|
+
*/
|
|
6
|
+
export type SignedOperation = 'ExecuteDeltaProposal';
|
|
1
7
|
export declare class RequestAuthPayload {
|
|
2
8
|
private readonly canonicalJson;
|
|
9
|
+
private readonly tag;
|
|
3
10
|
private constructor();
|
|
4
11
|
static fromRequest(requestPayload: unknown): RequestAuthPayload;
|
|
12
|
+
/**
|
|
13
|
+
* The payload of `requestPayload` signed as `operation`: the bytes are the operation's tag
|
|
14
|
+
* followed by the canonical JSON, as the Rust `AuthRequestPayload::for_operation` builds them.
|
|
15
|
+
*/
|
|
16
|
+
static forOperation(operation: SignedOperation, requestPayload: unknown): RequestAuthPayload;
|
|
5
17
|
toCanonicalJson(): string;
|
|
6
18
|
toBytes(): Uint8Array;
|
|
19
|
+
private static canonicalJsonOf;
|
|
7
20
|
private static normalizeJson;
|
|
8
21
|
private static canonicalizeJson;
|
|
9
22
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-request.d.ts","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"AAQA,qBAAa,kBAAkB;
|
|
1
|
+
{"version":3,"file":"auth-request.d.ts","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"AAQA;;;;GAIG;AACH,MAAM,MAAM,eAAe,GAAG,sBAAsB,CAAC;AAarD,qBAAa,kBAAkB;IAE3B,OAAO,CAAC,QAAQ,CAAC,aAAa;IAC9B,OAAO,CAAC,QAAQ,CAAC,GAAG;IAFtB,OAAO;IAKP,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,GAAG,kBAAkB;IAI/D;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,eAAe,EAAE,cAAc,EAAE,OAAO,GAAG,kBAAkB;IAI5F,eAAe,IAAI,MAAM;IAIzB,OAAO,IAAI,UAAU;IAIrB,OAAO,CAAC,MAAM,CAAC,eAAe;IAK9B,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAgBhC"}
|
package/dist/auth-request.js
CHANGED
|
@@ -1,18 +1,39 @@
|
|
|
1
|
+
function operationTag(operation) {
|
|
2
|
+
switch (operation) {
|
|
3
|
+
case 'ExecuteDeltaProposal':
|
|
4
|
+
return 'guardian.ExecuteDeltaProposal\0';
|
|
5
|
+
default: {
|
|
6
|
+
const unreachable = operation;
|
|
7
|
+
throw new Error(`Unknown signed operation: ${JSON.stringify(unreachable)}`);
|
|
8
|
+
}
|
|
9
|
+
}
|
|
10
|
+
}
|
|
1
11
|
export class RequestAuthPayload {
|
|
2
12
|
canonicalJson;
|
|
3
|
-
|
|
13
|
+
tag;
|
|
14
|
+
constructor(canonicalJson, tag) {
|
|
4
15
|
this.canonicalJson = canonicalJson;
|
|
16
|
+
this.tag = tag;
|
|
5
17
|
}
|
|
6
18
|
static fromRequest(requestPayload) {
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
19
|
+
return new RequestAuthPayload(RequestAuthPayload.canonicalJsonOf(requestPayload), '');
|
|
20
|
+
}
|
|
21
|
+
/**
|
|
22
|
+
* The payload of `requestPayload` signed as `operation`: the bytes are the operation's tag
|
|
23
|
+
* followed by the canonical JSON, as the Rust `AuthRequestPayload::for_operation` builds them.
|
|
24
|
+
*/
|
|
25
|
+
static forOperation(operation, requestPayload) {
|
|
26
|
+
return new RequestAuthPayload(RequestAuthPayload.canonicalJsonOf(requestPayload), operationTag(operation));
|
|
10
27
|
}
|
|
11
28
|
toCanonicalJson() {
|
|
12
29
|
return this.canonicalJson;
|
|
13
30
|
}
|
|
14
31
|
toBytes() {
|
|
15
|
-
return new TextEncoder().encode(this.canonicalJson);
|
|
32
|
+
return new TextEncoder().encode(this.tag + this.canonicalJson);
|
|
33
|
+
}
|
|
34
|
+
static canonicalJsonOf(requestPayload) {
|
|
35
|
+
const normalized = RequestAuthPayload.normalizeJson(requestPayload);
|
|
36
|
+
return JSON.stringify(RequestAuthPayload.canonicalizeJson(normalized));
|
|
16
37
|
}
|
|
17
38
|
static normalizeJson(value) {
|
|
18
39
|
if (value === undefined) {
|
package/dist/auth-request.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"auth-request.js","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"auth-request.js","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"AAeA,SAAS,YAAY,CAAC,SAA0B;IAC9C,QAAQ,SAAS,EAAE,CAAC;QAClB,KAAK,sBAAsB;YACzB,OAAO,iCAAiC,CAAC;QAC3C,OAAO,CAAC,CAAC,CAAC;YACR,MAAM,WAAW,GAAU,SAAS,CAAC;YACrC,MAAM,IAAI,KAAK,CAAC,6BAA6B,IAAI,CAAC,SAAS,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC;QAC9E,CAAC;IACH,CAAC;AACH,CAAC;AAED,MAAM,OAAO,kBAAkB;IAEV;IACA;IAFnB,YACmB,aAAqB,EACrB,GAAW;QADX,kBAAa,GAAb,aAAa,CAAQ;QACrB,QAAG,GAAH,GAAG,CAAQ;IAC3B,CAAC;IAEJ,MAAM,CAAC,WAAW,CAAC,cAAuB;QACxC,OAAO,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,EAAE,CAAC,CAAC;IACxF,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,YAAY,CAAC,SAA0B,EAAE,cAAuB;QACrE,OAAO,IAAI,kBAAkB,CAAC,kBAAkB,CAAC,eAAe,CAAC,cAAc,CAAC,EAAE,YAAY,CAAC,SAAS,CAAC,CAAC,CAAC;IAC7G,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,GAAG,GAAG,IAAI,CAAC,aAAa,CAAC,CAAC;IACjE,CAAC;IAEO,MAAM,CAAC,eAAe,CAAC,cAAuB;QACpD,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACpE,OAAO,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC,CAAC;IACzE,CAAC;IAEO,MAAM,CAAC,aAAa,CAAC,KAAc;QACzC,IAAI,KAAK,KAAK,SAAS,EAAE,CAAC;YACxB,OAAO,IAAI,CAAC;QACd,CAAC;QACD,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAc,CAAC;IACxD,CAAC;IAEO,MAAM,CAAC,gBAAgB,CAAC,KAAgB;QAC9C,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;YACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC,CAAC;QACxE,CAAC;QAED,IAAI,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,EAAE,CAAC;YACvC,MAAM,OAAO,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,EAAE,CAAC,KAAK,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;YAC3F,MAAM,UAAU,GAAiC,EAAE,CAAC;YACpD,KAAK,MAAM,CAAC,GAAG,EAAE,IAAI,CAAC,IAAI,OAAO,EAAE,CAAC;gBAClC,UAAU,CAAC,GAAG,CAAC,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,IAAI,CAAC,CAAC;YAC9D,CAAC;YACD,OAAO,UAAU,CAAC;QACpB,CAAC;QAED,OAAO,KAAK,CAAC;IACf,CAAC;CACF"}
|
package/dist/conversion.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAElB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;
|
|
1
|
+
{"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,oBAAoB,EACpB,qBAAqB,EACrB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,YAAY,EAEZ,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,4BAA4B,EAC5B,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,0BAA0B,EAC1B,2BAA2B,EAC3B,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,kBAAkB,EAElB,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AAkC3B,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,uBAAuB,GAAG,iBAAiB,CAUzF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAkB5E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAwB3F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAwB5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAS5E;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,4BAA4B,GAAG,cAAc,CAS7F;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAO9F;AAED,wBAAgB,wBAAwB,CAAC,MAAM,EAAE,oBAAoB,GAAG,cAAc,CAOrF;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CAUjF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CAMzF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAkB1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,sBAAsB,CAwBvF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,sBAAsB,CAMtF;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,oBAAoB,GAAG,0BAA0B,CAgBlG;AAED,wBAAgB,+BAA+B,CAC7C,MAAM,EAAE,2BAA2B,GAClC,qBAAqB,CAEvB;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,oBAAoB,GAAG,0BAA0B,CAgBlG;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,yBAAyB,CAM/F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,oBAAoB,CAUlF;AAiBD,wBAAgB,sBAAsB,CAAC,MAAM,EAAE,kBAAkB,GAAG,YAAY,CAU/E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAK5E"}
|
package/dist/conversion.js
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
import { decodeTransactionRequestEnvelope } from './request-envelope.js';
|
|
1
2
|
function extractDeltaPayload(payload) {
|
|
2
3
|
const txSummary = 'tx_summary' in payload ? payload.tx_summary : { data: payload.data };
|
|
3
4
|
const signatures = 'signatures' in payload && Array.isArray(payload.signatures) ? payload.signatures : [];
|
|
4
5
|
const metadata = 'metadata' in payload ? payload.metadata : undefined;
|
|
5
|
-
|
|
6
|
+
const transactionRequest = 'transaction_request' in payload && payload.transaction_request !== undefined && payload.transaction_request !== null
|
|
7
|
+
? decodeTransactionRequestEnvelope(payload.transaction_request)
|
|
8
|
+
: undefined;
|
|
9
|
+
return { txSummary, signatures, metadata, transactionRequest };
|
|
6
10
|
}
|
|
7
11
|
export function fromServerSignature(signature) {
|
|
8
12
|
if (signature.scheme === 'ecdsa') {
|
|
@@ -47,6 +51,7 @@ export function fromServerProposalMetadata(server) {
|
|
|
47
51
|
targetThreshold: server.target_threshold,
|
|
48
52
|
requiredSignatures: server.required_signatures,
|
|
49
53
|
signerCommitments: server.signer_commitments,
|
|
54
|
+
signerSchemes: server.signer_schemes,
|
|
50
55
|
targetProcedure: server.target_procedure,
|
|
51
56
|
salt: server.salt,
|
|
52
57
|
description: server.description,
|
|
@@ -66,7 +71,7 @@ export function fromServerProposalMetadata(server) {
|
|
|
66
71
|
};
|
|
67
72
|
}
|
|
68
73
|
export function fromServerDeltaObject(server) {
|
|
69
|
-
const { txSummary, signatures, metadata } = extractDeltaPayload(server.delta_payload);
|
|
74
|
+
const { txSummary, signatures, metadata, transactionRequest } = extractDeltaPayload(server.delta_payload);
|
|
70
75
|
return {
|
|
71
76
|
accountId: server.account_id,
|
|
72
77
|
nonce: server.nonce,
|
|
@@ -79,6 +84,7 @@ export function fromServerDeltaObject(server) {
|
|
|
79
84
|
signature: fromServerSignature(s.signature),
|
|
80
85
|
})),
|
|
81
86
|
metadata: metadata ? fromServerProposalMetadata(metadata) : undefined,
|
|
87
|
+
...(transactionRequest ? { transactionRequest } : {}),
|
|
82
88
|
},
|
|
83
89
|
ackSig: server.ack_sig,
|
|
84
90
|
ackPubkey: server.ack_pubkey,
|
|
@@ -165,6 +171,7 @@ export function toServerProposalMetadata(meta) {
|
|
|
165
171
|
target_threshold: meta.targetThreshold,
|
|
166
172
|
required_signatures: meta.requiredSignatures,
|
|
167
173
|
signer_commitments: meta.signerCommitments,
|
|
174
|
+
signer_schemes: meta.signerSchemes,
|
|
168
175
|
target_procedure: meta.targetProcedure,
|
|
169
176
|
salt: meta.salt,
|
|
170
177
|
description: meta.description,
|
|
@@ -221,6 +228,9 @@ export function toServerDeltaProposalRequest(req) {
|
|
|
221
228
|
signature: toServerSignature(s.signature),
|
|
222
229
|
})),
|
|
223
230
|
metadata: req.deltaPayload.metadata ? toServerProposalMetadata(req.deltaPayload.metadata) : undefined,
|
|
231
|
+
...(req.deltaPayload.transactionRequest
|
|
232
|
+
? { transaction_request: req.deltaPayload.transactionRequest }
|
|
233
|
+
: {}),
|
|
224
234
|
},
|
|
225
235
|
};
|
|
226
236
|
}
|
package/dist/conversion.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"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"}
|
package/dist/error-codes.d.ts
CHANGED
|
@@ -2,13 +2,11 @@
|
|
|
2
2
|
* Typed vocabulary of Guardian's stable, machine-readable error codes
|
|
3
3
|
* (issue #318). Mirrors `GuardianError::code()` in
|
|
4
4
|
* `crates/server/src/error.rs` — a drift-guard test asserts the two stay in
|
|
5
|
-
* sync. The
|
|
6
|
-
*
|
|
7
|
-
* `GUARDIAN_INSUFFICIENT_OPERATOR_PERMISSION`, `GUARDIAN_CANDIDATE_LANDED`)
|
|
8
|
-
* are normalized to snake_case here so the union has one consistent shape; use
|
|
5
|
+
* sync. The codes the server emits in SCREAMING_SNAKE wire form (see
|
|
6
|
+
* `WIRE_ALIASES`) are normalized to snake_case here so the union has one consistent shape; use
|
|
9
7
|
* {@link normalizeGuardianErrorCode} at the wire boundary.
|
|
10
8
|
*/
|
|
11
|
-
export declare const GUARDIAN_ERROR_CODES: readonly ["account_already_exists", "account_data_unavailable", "account_not_found", "account_paused", "account_released", "authentication_failed", "authentication_replay", "authorization_failed", "candidate_landed", "commitment_mismatch", "configuration_error", "conflict_pending_delta", "conflict_pending_proposal", "data_unavailable", "delta_not_found", "insufficient_operator_permission", "insufficient_signatures", "invalid_account_id", "invalid_commitment", "invalid_cursor", "invalid_delta", "invalid_evm_proposal", "invalid_input", "invalid_limit", "invalid_network_config", "invalid_proposal_signature", "invalid_status_filter", "invalid_timestamp", "network_error", "pending_proposals_limit", "proposal_already_signed", "proposal_not_found", "rate_limit_exceeded", "rpc_unavailable", "rpc_validation_failed", "session_expired", "session_revoked", "signature_scheme_not_allowed", "signer_not_authorized", "signing_error", "state_not_found", "storage_error", "unsupported_evm_chain", "unsupported_for_network", "wallet_signature_required"];
|
|
9
|
+
export declare const GUARDIAN_ERROR_CODES: readonly ["account_already_exists", "account_data_unavailable", "account_not_found", "account_paused", "account_released", "account_request_capacity_exceeded", "authentication_failed", "authentication_replay", "authorization_failed", "candidate_landed", "commitment_mismatch", "configuration_error", "conflict_pending_delta", "conflict_pending_proposal", "data_unavailable", "delta_not_found", "execution_busy", "execution_conflict", "execution_not_found", "insufficient_operator_permission", "insufficient_signatures", "invalid_account_id", "invalid_commitment", "invalid_cursor", "invalid_delta", "invalid_evm_proposal", "invalid_input", "invalid_limit", "invalid_network_config", "invalid_proposal_signature", "invalid_status_filter", "invalid_timestamp", "network_error", "pending_proposals_limit", "proposal_already_signed", "proposal_executes_locally", "proposal_missing_transaction_request", "proposal_not_found", "proposal_not_ready", "proposal_request_too_large", "proving_unavailable", "rate_limit_exceeded", "rpc_unavailable", "rpc_validation_failed", "session_expired", "session_revoked", "signature_scheme_not_allowed", "signer_not_authorized", "signing_error", "state_not_found", "state_not_on_chain", "storage_error", "unsupported_evm_chain", "unsupported_for_network", "wallet_signature_required"];
|
|
12
10
|
/**
|
|
13
11
|
* A stable Guardian error code, compiler-checked: comparing against a
|
|
14
12
|
* non-member literal is a type error, and `switch` statements can be
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"error-codes.d.ts","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,eAAO,MAAM,oBAAoB,myCAwDvB,CAAC;AAEX;;;;;GAKG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,oBAAoB,CAAC,CAAC,MAAM,CAAC,CAAC;AAwBtE,6EAA6E;AAC7E,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,KAAK,IAAI,iBAAiB,CAE7E;AAED;;;;;;;GAOG;AACH,wBAAgB,0BAA0B,CAAC,GAAG,EAAE,MAAM,GAAG,iBAAiB,GAAG,IAAI,CAIhF"}
|
package/dist/error-codes.js
CHANGED
|
@@ -2,10 +2,8 @@
|
|
|
2
2
|
* Typed vocabulary of Guardian's stable, machine-readable error codes
|
|
3
3
|
* (issue #318). Mirrors `GuardianError::code()` in
|
|
4
4
|
* `crates/server/src/error.rs` — a drift-guard test asserts the two stay in
|
|
5
|
-
* sync. The
|
|
6
|
-
*
|
|
7
|
-
* `GUARDIAN_INSUFFICIENT_OPERATOR_PERMISSION`, `GUARDIAN_CANDIDATE_LANDED`)
|
|
8
|
-
* are normalized to snake_case here so the union has one consistent shape; use
|
|
5
|
+
* sync. The codes the server emits in SCREAMING_SNAKE wire form (see
|
|
6
|
+
* `WIRE_ALIASES`) are normalized to snake_case here so the union has one consistent shape; use
|
|
9
7
|
* {@link normalizeGuardianErrorCode} at the wire boundary.
|
|
10
8
|
*/
|
|
11
9
|
export const GUARDIAN_ERROR_CODES = [
|
|
@@ -14,6 +12,7 @@ export const GUARDIAN_ERROR_CODES = [
|
|
|
14
12
|
'account_not_found',
|
|
15
13
|
'account_paused',
|
|
16
14
|
'account_released',
|
|
15
|
+
'account_request_capacity_exceeded',
|
|
17
16
|
'authentication_failed',
|
|
18
17
|
'authentication_replay',
|
|
19
18
|
'authorization_failed',
|
|
@@ -24,6 +23,9 @@ export const GUARDIAN_ERROR_CODES = [
|
|
|
24
23
|
'conflict_pending_proposal',
|
|
25
24
|
'data_unavailable',
|
|
26
25
|
'delta_not_found',
|
|
26
|
+
'execution_busy',
|
|
27
|
+
'execution_conflict',
|
|
28
|
+
'execution_not_found',
|
|
27
29
|
'insufficient_operator_permission',
|
|
28
30
|
'insufficient_signatures',
|
|
29
31
|
'invalid_account_id',
|
|
@@ -40,7 +42,12 @@ export const GUARDIAN_ERROR_CODES = [
|
|
|
40
42
|
'network_error',
|
|
41
43
|
'pending_proposals_limit',
|
|
42
44
|
'proposal_already_signed',
|
|
45
|
+
'proposal_executes_locally',
|
|
46
|
+
'proposal_missing_transaction_request',
|
|
43
47
|
'proposal_not_found',
|
|
48
|
+
'proposal_not_ready',
|
|
49
|
+
'proposal_request_too_large',
|
|
50
|
+
'proving_unavailable',
|
|
44
51
|
'rate_limit_exceeded',
|
|
45
52
|
'rpc_unavailable',
|
|
46
53
|
'rpc_validation_failed',
|
|
@@ -50,6 +57,7 @@ export const GUARDIAN_ERROR_CODES = [
|
|
|
50
57
|
'signer_not_authorized',
|
|
51
58
|
'signing_error',
|
|
52
59
|
'state_not_found',
|
|
60
|
+
'state_not_on_chain',
|
|
53
61
|
'storage_error',
|
|
54
62
|
'unsupported_evm_chain',
|
|
55
63
|
'unsupported_for_network',
|
|
@@ -65,6 +73,15 @@ const WIRE_ALIASES = {
|
|
|
65
73
|
GUARDIAN_ACCOUNT_RELEASED: 'account_released',
|
|
66
74
|
GUARDIAN_INSUFFICIENT_OPERATOR_PERMISSION: 'insufficient_operator_permission',
|
|
67
75
|
GUARDIAN_CANDIDATE_LANDED: 'candidate_landed',
|
|
76
|
+
GUARDIAN_PROVING_UNAVAILABLE: 'proving_unavailable',
|
|
77
|
+
GUARDIAN_PROPOSAL_MISSING_TRANSACTION_REQUEST: 'proposal_missing_transaction_request',
|
|
78
|
+
GUARDIAN_PROPOSAL_EXECUTES_LOCALLY: 'proposal_executes_locally',
|
|
79
|
+
GUARDIAN_PROPOSAL_NOT_READY: 'proposal_not_ready',
|
|
80
|
+
GUARDIAN_EXECUTION_CONFLICT: 'execution_conflict',
|
|
81
|
+
GUARDIAN_EXECUTION_BUSY: 'execution_busy',
|
|
82
|
+
GUARDIAN_EXECUTION_NOT_FOUND: 'execution_not_found',
|
|
83
|
+
GUARDIAN_PROPOSAL_REQUEST_TOO_LARGE: 'proposal_request_too_large',
|
|
84
|
+
GUARDIAN_ACCOUNT_REQUEST_CAPACITY_EXCEEDED: 'account_request_capacity_exceeded',
|
|
68
85
|
};
|
|
69
86
|
/** Type guard narrowing an arbitrary string to {@link GuardianErrorCode}. */
|
|
70
87
|
export function isGuardianErrorCode(value) {
|
package/dist/error-codes.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"error-codes.js","sourceRoot":"","sources":["../src/error-codes.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AACH,MAAM,CAAC,MAAM,oBAAoB,GAAG;IAClC,wBAAwB;IACxB,0BAA0B;IAC1B,mBAAmB;IACnB,gBAAgB;IAChB,kBAAkB;IAClB,mCAAmC;IACnC,uBAAuB;IACvB,uBAAuB;IACvB,sBAAsB;IACtB,kBAAkB;IAClB,qBAAqB;IACrB,qBAAqB;IACrB,wBAAwB;IACxB,2BAA2B;IAC3B,kBAAkB;IAClB,iBAAiB;IACjB,gBAAgB;IAChB,oBAAoB;IACpB,qBAAqB;IACrB,kCAAkC;IAClC,yBAAyB;IACzB,oBAAoB;IACpB,oBAAoB;IACpB,gBAAgB;IAChB,eAAe;IACf,sBAAsB;IACtB,eAAe;IACf,eAAe;IACf,wBAAwB;IACxB,4BAA4B;IAC5B,uBAAuB;IACvB,mBAAmB;IACnB,eAAe;IACf,yBAAyB;IACzB,yBAAyB;IACzB,2BAA2B;IAC3B,sCAAsC;IACtC,oBAAoB;IACpB,oBAAoB;IACpB,4BAA4B;IAC5B,qBAAqB;IACrB,qBAAqB;IACrB,iBAAiB;IACjB,uBAAuB;IACvB,iBAAiB;IACjB,iBAAiB;IACjB,8BAA8B;IAC9B,uBAAuB;IACvB,eAAe;IACf,iBAAiB;IACjB,oBAAoB;IACpB,eAAe;IACf,uBAAuB;IACvB,yBAAyB;IACzB,2BAA2B;CACnB,CAAC;AAUX,MAAM,QAAQ,GAAwB,IAAI,GAAG,CAAC,oBAAoB,CAAC,CAAC;AAEpE;;;GAGG;AACH,MAAM,YAAY,GAAgD;IAChE,uBAAuB,EAAE,gBAAgB;IACzC,yBAAyB,EAAE,kBAAkB;IAC7C,yCAAyC,EAAE,kCAAkC;IAC7E,yBAAyB,EAAE,kBAAkB;IAC7C,4BAA4B,EAAE,qBAAqB;IACnD,6CAA6C,EAAE,sCAAsC;IACrF,kCAAkC,EAAE,2BAA2B;IAC/D,2BAA2B,EAAE,oBAAoB;IACjD,2BAA2B,EAAE,oBAAoB;IACjD,uBAAuB,EAAE,gBAAgB;IACzC,4BAA4B,EAAE,qBAAqB;IACnD,mCAAmC,EAAE,4BAA4B;IACjE,0CAA0C,EAAE,mCAAmC;CAChF,CAAC;AAEF,6EAA6E;AAC7E,MAAM,UAAU,mBAAmB,CAAC,KAAa;IAC/C,OAAO,QAAQ,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;AAC7B,CAAC;AAED;;;;;;;GAOG;AACH,MAAM,UAAU,0BAA0B,CAAC,GAAW;IACpD,MAAM,OAAO,GAAG,YAAY,CAAC,GAAG,CAAC,CAAC;IAClC,IAAI,OAAO,KAAK,SAAS;QAAE,OAAO,OAAO,CAAC;IAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,IAAI,CAAC;AAC/C,CAAC"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Guardian execution of threshold-met proposals, as the base client reports it. Mirrors the
|
|
3
|
+
* `guardian_shared::execution` vocabulary; drift-guard tests keep the two in step.
|
|
4
|
+
*/
|
|
5
|
+
/** The five reported states. Closed: adding one is a breaking change. */
|
|
6
|
+
export declare const EXECUTION_STATES: readonly ["pending", "proving", "submitted", "committed", "failed"];
|
|
7
|
+
export type ExecutionState = (typeof EXECUTION_STATES)[number];
|
|
8
|
+
/** Whether the execution has finished, one way or the other. Mirrors `ExecutionState::is_terminal`. */
|
|
9
|
+
export declare function isTerminalExecutionState(state: ExecutionState): boolean;
|
|
10
|
+
export declare const REQUEST_INVALID_REASONS: readonly ["bound_block_not_declared", "auth_args_missing", "approval_expiration_missing", "input_notes_not_pinned", "too_many_declared_blocks"];
|
|
11
|
+
export type RequestInvalidReason = (typeof REQUEST_INVALID_REASONS)[number];
|
|
12
|
+
export declare const EXPIRATION_BOUNDS: readonly ["approval", "transaction"];
|
|
13
|
+
export type ExpirationBound = (typeof EXPIRATION_BOUNDS)[number];
|
|
14
|
+
export declare const FOREIGN_ACCOUNT_UNAVAILABLE_REASONS: readonly ["private", "unavailable"];
|
|
15
|
+
export type ForeignAccountUnavailableReason = (typeof FOREIGN_ACCOUNT_UNAVAILABLE_REASONS)[number];
|
|
16
|
+
/** Why a server does not offer Guardian execution, as `GET /status` reports it. */
|
|
17
|
+
export declare const EXECUTION_UNAVAILABLE_REASONS: readonly ["prover_not_configured", "disabled", "canonicalization_disabled"];
|
|
18
|
+
export type ExecutionUnavailableReason = (typeof EXECUTION_UNAVAILABLE_REASONS)[number];
|
|
19
|
+
/**
|
|
20
|
+
* Whether the server accepts Guardian execution requests. It reflects the server's configuration,
|
|
21
|
+
* not whether its prover is reachable right now.
|
|
22
|
+
*/
|
|
23
|
+
export type ServerExecutionCapability = {
|
|
24
|
+
enabled: true;
|
|
25
|
+
} | {
|
|
26
|
+
enabled: false;
|
|
27
|
+
reason: ExecutionUnavailableReason;
|
|
28
|
+
};
|
|
29
|
+
/** The capability as `GET /status` sends it, before validation. */
|
|
30
|
+
export interface ServerExecutionCapabilityWire {
|
|
31
|
+
enabled: unknown;
|
|
32
|
+
reason?: unknown;
|
|
33
|
+
}
|
|
34
|
+
/** Failure codes that carry no structured meta. */
|
|
35
|
+
export declare const PLAIN_EXECUTION_FAILURE_CODES: readonly ["GUARDIAN_EXECUTION_BINDING_MISMATCH", "GUARDIAN_EXECUTION_STATE_MISMATCH", "GUARDIAN_EXECUTION_REQUEST_CODEC", "GUARDIAN_EXECUTION_PROTOCOL_MISMATCH", "GUARDIAN_EXECUTION_CHAIN_BEHIND", "GUARDIAN_EXECUTION_CHAIN_INCONSISTENT", "GUARDIAN_EXECUTION_NODE_UNAVAILABLE", "GUARDIAN_EXECUTION_INSUFFICIENT_FEE", "GUARDIAN_EXECUTION_INSUFFICIENT_SIGNATURES", "GUARDIAN_EXECUTION_PROVING_FAILED", "GUARDIAN_EXECUTION_SEALING_FAILED", "GUARDIAN_EXECUTION_ACKNOWLEDGEMENT_FAILED", "GUARDIAN_EXECUTION_EXPIRATION_BEYOND_HORIZON", "GUARDIAN_EXECUTION_ACCOUNT_INADMISSIBLE", "GUARDIAN_EXECUTION_SUBMISSION_REJECTED", "GUARDIAN_EXECUTION_SUBMISSION_NOT_PROCESSED", "GUARDIAN_EXECUTION_CANDIDATE_DISCARDED", "GUARDIAN_EXECUTION_EXPIRED", "GUARDIAN_EXECUTION_LEASE_EXPIRED", "GUARDIAN_EXECUTION_ABANDONED"];
|
|
36
|
+
export type PlainExecutionFailureCode = (typeof PLAIN_EXECUTION_FAILURE_CODES)[number];
|
|
37
|
+
/** Why an execution failed, discriminated by `code`; codes with meta carry it typed. */
|
|
38
|
+
export type ExecutionFailure = {
|
|
39
|
+
code: 'GUARDIAN_EXECUTION_REQUEST_INVALID';
|
|
40
|
+
message: string;
|
|
41
|
+
reason: RequestInvalidReason;
|
|
42
|
+
} | {
|
|
43
|
+
code: 'GUARDIAN_EXECUTION_EXPIRATION_REACHED';
|
|
44
|
+
message: string;
|
|
45
|
+
bound: ExpirationBound;
|
|
46
|
+
} | {
|
|
47
|
+
code: 'GUARDIAN_EXECUTION_FOREIGN_ACCOUNT_UNAVAILABLE';
|
|
48
|
+
message: string;
|
|
49
|
+
reason: ForeignAccountUnavailableReason;
|
|
50
|
+
} | {
|
|
51
|
+
code: PlainExecutionFailureCode;
|
|
52
|
+
message: string;
|
|
53
|
+
};
|
|
54
|
+
export type ExecutionFailureCode = ExecutionFailure['code'];
|
|
55
|
+
export declare const EXECUTION_FAILURE_CODES: readonly ExecutionFailureCode[];
|
|
56
|
+
/** One execution of a proposal, identified by `(accountId, proposalId)`. */
|
|
57
|
+
export interface ProposalExecution {
|
|
58
|
+
accountId: string;
|
|
59
|
+
proposalId: string;
|
|
60
|
+
state: ExecutionState;
|
|
61
|
+
/** Present exactly when `state` is `'failed'`. */
|
|
62
|
+
error: ExecutionFailure | null;
|
|
63
|
+
/** The delta nonce the execution committed to, once it crossed the no-retry boundary. */
|
|
64
|
+
deltaNonce: number | null;
|
|
65
|
+
/** Whether this request started the execution, rather than finding it already running. */
|
|
66
|
+
newlyAccepted: boolean;
|
|
67
|
+
/** Whether the proposal is still stored. A fact, not retry advice. */
|
|
68
|
+
proposalExists: boolean;
|
|
69
|
+
/** Stored signatures the server ignored as invalid, duplicate or not from a cosigner. */
|
|
70
|
+
ignoredSignatures: number;
|
|
71
|
+
updatedAt: string;
|
|
72
|
+
}
|
|
73
|
+
export interface ServerExecutionError {
|
|
74
|
+
code: string;
|
|
75
|
+
message: string;
|
|
76
|
+
meta?: Record<string, unknown>;
|
|
77
|
+
}
|
|
78
|
+
export interface ServerProposalExecution {
|
|
79
|
+
account_id: string;
|
|
80
|
+
proposal_id: string;
|
|
81
|
+
state: string;
|
|
82
|
+
error?: ServerExecutionError;
|
|
83
|
+
delta_nonce?: number;
|
|
84
|
+
newly_accepted: boolean;
|
|
85
|
+
proposal_exists: boolean;
|
|
86
|
+
ignored_signatures: number;
|
|
87
|
+
updated_at: string;
|
|
88
|
+
}
|
|
89
|
+
export interface ServerCurrentExecution {
|
|
90
|
+
execution: ServerProposalExecution | null;
|
|
91
|
+
}
|
|
92
|
+
/**
|
|
93
|
+
* Decodes a `GET /status` capability the server sent, refusing a missing flag or an unknown
|
|
94
|
+
* reason. A status without one does not offer Guardian execution.
|
|
95
|
+
*/
|
|
96
|
+
export declare function fromServerExecutionCapability(server: ServerExecutionCapabilityWire): ServerExecutionCapability;
|
|
97
|
+
/** Decodes the wire envelope, refusing any state, code or meta outside the vocabulary. */
|
|
98
|
+
export declare function fromServerExecution(server: ServerProposalExecution): ProposalExecution;
|
|
99
|
+
//# sourceMappingURL=execution.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"execution.d.ts","sourceRoot":"","sources":["../src/execution.ts"],"names":[],"mappings":"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"}
|