@openzeppelin/guardian-client 0.13.2

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 (47) hide show
  1. package/README.md +140 -0
  2. package/dist/auth-request.d.ts +10 -0
  3. package/dist/auth-request.d.ts.map +1 -0
  4. package/dist/auth-request.js +38 -0
  5. package/dist/auth-request.js.map +1 -0
  6. package/dist/auth-request.test.d.ts +2 -0
  7. package/dist/auth-request.test.d.ts.map +1 -0
  8. package/dist/auth-request.test.js +10 -0
  9. package/dist/auth-request.test.js.map +1 -0
  10. package/dist/conversion.d.ts +18 -0
  11. package/dist/conversion.d.ts.map +1 -0
  12. package/dist/conversion.js +187 -0
  13. package/dist/conversion.js.map +1 -0
  14. package/dist/conversion.test.d.ts +2 -0
  15. package/dist/conversion.test.d.ts.map +1 -0
  16. package/dist/conversion.test.js +317 -0
  17. package/dist/conversion.test.js.map +1 -0
  18. package/dist/http.d.ts +33 -0
  19. package/dist/http.d.ts.map +1 -0
  20. package/dist/http.js +191 -0
  21. package/dist/http.js.map +1 -0
  22. package/dist/http.test.d.ts +2 -0
  23. package/dist/http.test.d.ts.map +1 -0
  24. package/dist/http.test.js +493 -0
  25. package/dist/http.test.js.map +1 -0
  26. package/dist/index.d.ts +4 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +3 -0
  29. package/dist/index.js.map +1 -0
  30. package/dist/server-types.d.ts +150 -0
  31. package/dist/server-types.d.ts.map +1 -0
  32. package/dist/server-types.js +2 -0
  33. package/dist/server-types.js.map +1 -0
  34. package/dist/types.d.ts +159 -0
  35. package/dist/types.d.ts.map +1 -0
  36. package/dist/types.js +2 -0
  37. package/dist/types.js.map +1 -0
  38. package/package.json +36 -0
  39. package/src/auth-request.test.ts +11 -0
  40. package/src/auth-request.ts +49 -0
  41. package/src/conversion.test.ts +400 -0
  42. package/src/conversion.ts +247 -0
  43. package/src/http.test.ts +597 -0
  44. package/src/http.ts +244 -0
  45. package/src/index.ts +25 -0
  46. package/src/server-types.ts +142 -0
  47. package/src/types.ts +167 -0
package/README.md ADDED
@@ -0,0 +1,140 @@
1
+ # @openzeppelin/guardian-client
2
+
3
+ TypeScript HTTP client for Guardian server.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @openzeppelin/guardian-client
9
+ ```
10
+
11
+ ## Setup
12
+
13
+ ```typescript
14
+ import { GuardianHttpClient } from '@openzeppelin/guardian-client';
15
+
16
+ const client = new GuardianHttpClient('http://localhost:3000');
17
+ ```
18
+
19
+ ## Usage
20
+
21
+ ### Get Server Public Key (Unauthenticated)
22
+
23
+ ```typescript
24
+ const pubkey = await client.getPubkey();
25
+ console.log('GUARDIAN pubkey:', pubkey);
26
+ ```
27
+
28
+ ### Set Signer for Authenticated Requests
29
+
30
+ All endpoints except `getPubkey()` require authentication. You must provide a signer that implements the `Signer` interface:
31
+
32
+ ```typescript
33
+ import type { Signer, RequestAuthPayload } from '@openzeppelin/guardian-client';
34
+
35
+ const signer: Signer = {
36
+ commitment: '0x...', // 64 hex chars
37
+ publicKey: '0x...', // Full public key hex
38
+ // Sign account ID + timestamp + request payload digest
39
+ signRequest: (accountId: string, timestamp: number, requestPayload: RequestAuthPayload) => {
40
+ // requestPayload is canonicalized by the client before this call
41
+ // implement your signing logic here
42
+ return '0x...';
43
+ },
44
+ signCommitment: (commitmentHex: string) => '0x...', // Returns signature hex
45
+ };
46
+
47
+ client.setSigner(signer);
48
+ ```
49
+
50
+ ### Configure an Account
51
+
52
+ ```typescript
53
+ await client.configure({
54
+ account_id: '0x...',
55
+ auth: {
56
+ MidenFalconRpo: {
57
+ cosigner_commitments: ['0x...', '0x...'],
58
+ },
59
+ },
60
+ initial_state: { data: '<base64-encoded-account>', account_id: '0x...' },
61
+ });
62
+ ```
63
+
64
+ ### Get Account State
65
+
66
+ ```typescript
67
+ const state = await client.getState(accountId);
68
+ console.log('Commitment:', state.commitment);
69
+ console.log('State data:', state.state_json.data);
70
+ ```
71
+
72
+ ### Work with Delta Proposals
73
+
74
+ ```typescript
75
+ // Get all proposals for an account
76
+ const proposals = await client.getDeltaProposals(accountId);
77
+
78
+ // Get one proposal by commitment
79
+ const proposal = await client.getDeltaProposal(accountId, '0x...');
80
+
81
+ // Push a new proposal
82
+ const response = await client.pushDeltaProposal({
83
+ account_id: accountId,
84
+ nonce: 1,
85
+ delta_payload: {
86
+ tx_summary: { data: '<base64-tx-summary>' },
87
+ signatures: [],
88
+ },
89
+ });
90
+
91
+ // Sign a proposal
92
+ const delta = await client.signDeltaProposal({
93
+ account_id: accountId,
94
+ commitment: response.commitment,
95
+ signature: { scheme: 'falcon', signature: '0x...' },
96
+ });
97
+
98
+ // Execute a proposal
99
+ const result = await client.pushDelta({
100
+ account_id: accountId,
101
+ nonce: 1,
102
+ prev_commitment: '0x...',
103
+ delta_payload: { data: '<base64-tx-summary>' },
104
+ status: { status: 'pending', timestamp: '...', proposer_id: '0x...', cosigner_sigs: [] },
105
+ });
106
+ ```
107
+
108
+ ### Get Deltas
109
+
110
+ ```typescript
111
+ // Get specific delta by nonce
112
+ const delta = await client.getDelta(accountId, 5);
113
+
114
+ // Get merged delta since a nonce
115
+ const merged = await client.getDeltaSince(accountId, 3);
116
+ ```
117
+
118
+ ## Error Handling
119
+
120
+ The client throws `GuardianHttpError` for non-2xx responses:
121
+
122
+ ```typescript
123
+ import { GuardianHttpError } from '@openzeppelin/guardian-client';
124
+
125
+ try {
126
+ await client.getState(accountId);
127
+ } catch (error) {
128
+ if (error instanceof GuardianHttpError) {
129
+ console.error(`HTTP ${error.status}: ${error.statusText}`);
130
+ console.error('Body:', error.body);
131
+ }
132
+ }
133
+ ```
134
+
135
+ ## Testing
136
+
137
+ ```bash
138
+ npm test # Run tests once
139
+ npm run test:watch # Run tests in watch mode
140
+ ```
@@ -0,0 +1,10 @@
1
+ export declare class RequestAuthPayload {
2
+ private readonly canonicalJson;
3
+ private constructor();
4
+ static fromRequest(requestPayload: unknown): RequestAuthPayload;
5
+ toCanonicalJson(): string;
6
+ toBytes(): Uint8Array;
7
+ private static normalizeJson;
8
+ private static canonicalizeJson;
9
+ }
10
+ //# sourceMappingURL=auth-request.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-request.d.ts","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"AAQA,qBAAa,kBAAkB;IACT,OAAO,CAAC,QAAQ,CAAC,aAAa;IAAlD,OAAO;IAEP,MAAM,CAAC,WAAW,CAAC,cAAc,EAAE,OAAO,GAAG,kBAAkB;IAM/D,eAAe,IAAI,MAAM;IAIzB,OAAO,IAAI,UAAU;IAIrB,OAAO,CAAC,MAAM,CAAC,aAAa;IAO5B,OAAO,CAAC,MAAM,CAAC,gBAAgB;CAgBhC"}
@@ -0,0 +1,38 @@
1
+ export class RequestAuthPayload {
2
+ canonicalJson;
3
+ constructor(canonicalJson) {
4
+ this.canonicalJson = canonicalJson;
5
+ }
6
+ static fromRequest(requestPayload) {
7
+ const normalized = RequestAuthPayload.normalizeJson(requestPayload);
8
+ const canonical = RequestAuthPayload.canonicalizeJson(normalized);
9
+ return new RequestAuthPayload(JSON.stringify(canonical));
10
+ }
11
+ toCanonicalJson() {
12
+ return this.canonicalJson;
13
+ }
14
+ toBytes() {
15
+ return new TextEncoder().encode(this.canonicalJson);
16
+ }
17
+ static normalizeJson(value) {
18
+ if (value === undefined) {
19
+ return null;
20
+ }
21
+ return JSON.parse(JSON.stringify(value));
22
+ }
23
+ static canonicalizeJson(value) {
24
+ if (Array.isArray(value)) {
25
+ return value.map((item) => RequestAuthPayload.canonicalizeJson(item));
26
+ }
27
+ if (value && typeof value === 'object') {
28
+ const entries = Object.entries(value).sort(([left], [right]) => left.localeCompare(right));
29
+ const normalized = {};
30
+ for (const [key, item] of entries) {
31
+ normalized[key] = RequestAuthPayload.canonicalizeJson(item);
32
+ }
33
+ return normalized;
34
+ }
35
+ return value;
36
+ }
37
+ }
38
+ //# sourceMappingURL=auth-request.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-request.js","sourceRoot":"","sources":["../src/auth-request.ts"],"names":[],"mappings":"AAQA,MAAM,OAAO,kBAAkB;IACQ;IAArC,YAAqC,aAAqB;QAArB,kBAAa,GAAb,aAAa,CAAQ;IAAG,CAAC;IAE9D,MAAM,CAAC,WAAW,CAAC,cAAuB;QACxC,MAAM,UAAU,GAAG,kBAAkB,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QACpE,MAAM,SAAS,GAAG,kBAAkB,CAAC,gBAAgB,CAAC,UAAU,CAAC,CAAC;QAClE,OAAO,IAAI,kBAAkB,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;IAC3D,CAAC;IAED,eAAe;QACb,OAAO,IAAI,CAAC,aAAa,CAAC;IAC5B,CAAC;IAED,OAAO;QACL,OAAO,IAAI,WAAW,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;IACtD,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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=auth-request.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-request.test.d.ts","sourceRoot":"","sources":["../src/auth-request.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,10 @@
1
+ import { describe, expect, it } from 'vitest';
2
+ import { RequestAuthPayload } from './auth-request.js';
3
+ describe('RequestAuthPayload', () => {
4
+ it('canonicalizes object keys recursively', () => {
5
+ const left = RequestAuthPayload.fromRequest({ b: 2, a: { y: 2, x: 1 } });
6
+ const right = RequestAuthPayload.fromRequest({ a: { x: 1, y: 2 }, b: 2 });
7
+ expect(left.toCanonicalJson()).toEqual(right.toCanonicalJson());
8
+ });
9
+ });
10
+ //# sourceMappingURL=auth-request.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"auth-request.test.js","sourceRoot":"","sources":["../src/auth-request.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,MAAM,QAAQ,CAAC;AAC9C,OAAO,EAAE,kBAAkB,EAAE,MAAM,mBAAmB,CAAC;AAEvD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,uCAAuC,EAAE,GAAG,EAAE;QAC/C,MAAM,IAAI,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC;QACzE,MAAM,KAAK,GAAG,kBAAkB,CAAC,WAAW,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,CAAC,EAAE,CAAC,CAAC;QAE1E,MAAM,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC,CAAC,OAAO,CAAC,KAAK,CAAC,eAAe,EAAE,CAAC,CAAC;IAClE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -0,0 +1,18 @@
1
+ import type { CosignerSignature, ConfigureRequest, ConfigureResponse, DeltaObject, DeltaProposalRequest, DeltaStatus, ExecutionDelta, ProposalSignature, ProposalMetadata, SignProposalRequest, StateObject } from './types.js';
2
+ import type { ServerCosignerSignature, ServerConfigureRequest, ServerConfigureResponse, ServerDeltaObject, ServerDeltaProposalRequest, ServerDeltaStatus, ServerExecutionDelta, ServerProposalSignature, ServerProposalMetadata, ServerSignProposalRequest, ServerStateObject } from './server-types.js';
3
+ export declare function fromServerSignature(signature: ServerProposalSignature): ProposalSignature;
4
+ export declare function fromServerCosignerSignature(server: ServerCosignerSignature): CosignerSignature;
5
+ export declare function fromServerDeltaStatus(server: ServerDeltaStatus): DeltaStatus;
6
+ export declare function fromServerProposalMetadata(server: ServerProposalMetadata): ProposalMetadata;
7
+ export declare function fromServerDeltaObject(server: ServerDeltaObject): DeltaObject;
8
+ export declare function fromServerStateObject(server: ServerStateObject): StateObject;
9
+ export declare function fromServerConfigureResponse(server: ServerConfigureResponse): ConfigureResponse;
10
+ export declare function toServerSignature(sig: ProposalSignature): ServerProposalSignature;
11
+ export declare function toServerCosignerSignature(sig: CosignerSignature): ServerCosignerSignature;
12
+ export declare function toServerDeltaStatus(status: DeltaStatus): ServerDeltaStatus;
13
+ export declare function toServerProposalMetadata(meta: ProposalMetadata): ServerProposalMetadata;
14
+ export declare function toServerConfigureRequest(req: ConfigureRequest): ServerConfigureRequest;
15
+ export declare function toServerDeltaProposalRequest(req: DeltaProposalRequest): ServerDeltaProposalRequest;
16
+ export declare function toServerSignProposalRequest(req: SignProposalRequest): ServerSignProposalRequest;
17
+ export declare function toServerExecutionDelta(delta: ExecutionDelta): ServerExecutionDelta;
18
+ //# sourceMappingURL=conversion.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.d.ts","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,iBAAiB,EACjB,gBAAgB,EAChB,iBAAiB,EACjB,WAAW,EACX,oBAAoB,EACpB,WAAW,EACX,cAAc,EACd,iBAAiB,EACjB,gBAAgB,EAChB,mBAAmB,EACnB,WAAW,EACZ,MAAM,YAAY,CAAC;AACpB,OAAO,KAAK,EACV,uBAAuB,EACvB,sBAAsB,EACtB,uBAAuB,EACvB,iBAAiB,EACjB,0BAA0B,EAC1B,iBAAiB,EACjB,oBAAoB,EACpB,uBAAuB,EACvB,sBAAsB,EACtB,yBAAyB,EACzB,iBAAiB,EAClB,MAAM,mBAAmB,CAAC;AA2B3B,wBAAgB,mBAAmB,CAAC,SAAS,EAAE,uBAAuB,GAAG,iBAAiB,CASzF;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAM9F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAgB5E;AAED,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,sBAAsB,GAAG,gBAAgB,CAgB3F;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAqB5E;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,iBAAiB,GAAG,WAAW,CAS5E;AAED,wBAAgB,2BAA2B,CAAC,MAAM,EAAE,uBAAuB,GAAG,iBAAiB,CAO9F;AAED,wBAAgB,iBAAiB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CASjF;AAED,wBAAgB,yBAAyB,CAAC,GAAG,EAAE,iBAAiB,GAAG,uBAAuB,CAMzF;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,WAAW,GAAG,iBAAiB,CAgB1E;AAED,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,gBAAgB,GAAG,sBAAsB,CAgBvF;AAED,wBAAgB,wBAAwB,CAAC,GAAG,EAAE,gBAAgB,GAAG,sBAAsB,CAMtF;AAED,wBAAgB,4BAA4B,CAAC,GAAG,EAAE,oBAAoB,GAAG,0BAA0B,CAalG;AAED,wBAAgB,2BAA2B,CAAC,GAAG,EAAE,mBAAmB,GAAG,yBAAyB,CAM/F;AAED,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,cAAc,GAAG,oBAAoB,CAUlF"}
@@ -0,0 +1,187 @@
1
+ function extractDeltaPayload(payload) {
2
+ const txSummary = 'tx_summary' in payload ? payload.tx_summary : { data: payload.data };
3
+ const signatures = 'signatures' in payload && Array.isArray(payload.signatures) ? payload.signatures : [];
4
+ const metadata = 'metadata' in payload ? payload.metadata : undefined;
5
+ return { txSummary, signatures, metadata };
6
+ }
7
+ export function fromServerSignature(signature) {
8
+ if (signature.scheme === 'ecdsa') {
9
+ return {
10
+ scheme: 'ecdsa',
11
+ signature: signature.signature,
12
+ publicKey: signature.public_key,
13
+ };
14
+ }
15
+ return signature;
16
+ }
17
+ export function fromServerCosignerSignature(server) {
18
+ return {
19
+ signerId: server.signer_id,
20
+ signature: fromServerSignature(server.signature),
21
+ timestamp: server.timestamp,
22
+ };
23
+ }
24
+ export function fromServerDeltaStatus(server) {
25
+ switch (server.status) {
26
+ case 'pending':
27
+ return {
28
+ status: 'pending',
29
+ timestamp: server.timestamp,
30
+ proposerId: server.proposer_id,
31
+ cosignerSigs: server.cosigner_sigs.map(fromServerCosignerSignature),
32
+ };
33
+ case 'candidate':
34
+ return { status: 'candidate', timestamp: server.timestamp };
35
+ case 'canonical':
36
+ return { status: 'canonical', timestamp: server.timestamp };
37
+ case 'discarded':
38
+ return { status: 'discarded', timestamp: server.timestamp };
39
+ }
40
+ }
41
+ export function fromServerProposalMetadata(server) {
42
+ return {
43
+ proposalType: server.proposal_type,
44
+ targetThreshold: server.target_threshold,
45
+ requiredSignatures: server.required_signatures,
46
+ signerCommitments: server.signer_commitments,
47
+ targetProcedure: server.target_procedure,
48
+ salt: server.salt,
49
+ description: server.description,
50
+ newGuardianPubkey: server.new_guardian_pubkey,
51
+ newGuardianEndpoint: server.new_guardian_endpoint,
52
+ noteIds: server.note_ids,
53
+ recipientId: server.recipient_id,
54
+ faucetId: server.faucet_id,
55
+ amount: server.amount,
56
+ };
57
+ }
58
+ export function fromServerDeltaObject(server) {
59
+ const { txSummary, signatures, metadata } = extractDeltaPayload(server.delta_payload);
60
+ return {
61
+ accountId: server.account_id,
62
+ nonce: server.nonce,
63
+ prevCommitment: server.prev_commitment,
64
+ newCommitment: server.new_commitment,
65
+ deltaPayload: {
66
+ txSummary,
67
+ signatures: signatures.map((s) => ({
68
+ signerId: s.signer_id,
69
+ signature: fromServerSignature(s.signature),
70
+ })),
71
+ metadata: metadata ? fromServerProposalMetadata(metadata) : undefined,
72
+ },
73
+ ackSig: server.ack_sig,
74
+ ackPubkey: server.ack_pubkey,
75
+ ackScheme: server.ack_scheme,
76
+ status: fromServerDeltaStatus(server.status),
77
+ };
78
+ }
79
+ export function fromServerStateObject(server) {
80
+ return {
81
+ accountId: server.account_id,
82
+ commitment: server.commitment,
83
+ stateJson: server.state_json,
84
+ createdAt: server.created_at,
85
+ updatedAt: server.updated_at,
86
+ authScheme: server.auth_scheme,
87
+ };
88
+ }
89
+ export function fromServerConfigureResponse(server) {
90
+ return {
91
+ success: server.success,
92
+ message: server.message,
93
+ ackPubkey: server.ack_pubkey,
94
+ ackCommitment: server.ack_commitment,
95
+ };
96
+ }
97
+ export function toServerSignature(sig) {
98
+ if (sig.scheme === 'ecdsa') {
99
+ return {
100
+ scheme: 'ecdsa',
101
+ signature: sig.signature,
102
+ public_key: sig.publicKey,
103
+ };
104
+ }
105
+ return sig;
106
+ }
107
+ export function toServerCosignerSignature(sig) {
108
+ return {
109
+ signer_id: sig.signerId,
110
+ signature: toServerSignature(sig.signature),
111
+ timestamp: sig.timestamp,
112
+ };
113
+ }
114
+ export function toServerDeltaStatus(status) {
115
+ switch (status.status) {
116
+ case 'pending':
117
+ return {
118
+ status: 'pending',
119
+ timestamp: status.timestamp,
120
+ proposer_id: status.proposerId,
121
+ cosigner_sigs: status.cosignerSigs.map(toServerCosignerSignature),
122
+ };
123
+ case 'candidate':
124
+ return { status: 'candidate', timestamp: status.timestamp };
125
+ case 'canonical':
126
+ return { status: 'canonical', timestamp: status.timestamp };
127
+ case 'discarded':
128
+ return { status: 'discarded', timestamp: status.timestamp };
129
+ }
130
+ }
131
+ export function toServerProposalMetadata(meta) {
132
+ return {
133
+ proposal_type: meta.proposalType === 'unknown' ? undefined : meta.proposalType,
134
+ target_threshold: meta.targetThreshold,
135
+ required_signatures: meta.requiredSignatures,
136
+ signer_commitments: meta.signerCommitments,
137
+ target_procedure: meta.targetProcedure,
138
+ salt: meta.salt,
139
+ description: meta.description,
140
+ new_guardian_pubkey: meta.newGuardianPubkey,
141
+ new_guardian_endpoint: meta.newGuardianEndpoint,
142
+ note_ids: meta.noteIds,
143
+ recipient_id: meta.recipientId,
144
+ faucet_id: meta.faucetId,
145
+ amount: meta.amount,
146
+ };
147
+ }
148
+ export function toServerConfigureRequest(req) {
149
+ return {
150
+ account_id: req.accountId,
151
+ auth: req.auth,
152
+ initial_state: { data: req.initialState.data, account_id: req.initialState.accountId },
153
+ };
154
+ }
155
+ export function toServerDeltaProposalRequest(req) {
156
+ return {
157
+ account_id: req.accountId,
158
+ nonce: req.nonce,
159
+ delta_payload: {
160
+ tx_summary: req.deltaPayload.txSummary,
161
+ signatures: req.deltaPayload.signatures.map((s) => ({
162
+ signer_id: s.signerId,
163
+ signature: toServerSignature(s.signature),
164
+ })),
165
+ metadata: req.deltaPayload.metadata ? toServerProposalMetadata(req.deltaPayload.metadata) : undefined,
166
+ },
167
+ };
168
+ }
169
+ export function toServerSignProposalRequest(req) {
170
+ return {
171
+ account_id: req.accountId,
172
+ commitment: req.commitment,
173
+ signature: toServerSignature(req.signature),
174
+ };
175
+ }
176
+ export function toServerExecutionDelta(delta) {
177
+ return {
178
+ account_id: delta.accountId,
179
+ nonce: delta.nonce,
180
+ prev_commitment: delta.prevCommitment,
181
+ new_commitment: delta.newCommitment,
182
+ delta_payload: delta.deltaPayload,
183
+ ack_sig: delta.ackSig,
184
+ status: toServerDeltaStatus(delta.status),
185
+ };
186
+ }
187
+ //# sourceMappingURL=conversion.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.js","sourceRoot":"","sources":["../src/conversion.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=conversion.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversion.test.d.ts","sourceRoot":"","sources":["../src/conversion.test.ts"],"names":[],"mappings":""}