@walletmesh/aztec-rpc-wallet 0.1.0
Sign up to get free protection for your applications and to get access to all the features.
- package/CHANGELOG.md +7 -0
- package/LICENSE +201 -0
- package/README.md +260 -0
- package/dist/.tsbuildinfo +1 -0
- package/dist/aztecRemoteWallet.d.ts +73 -0
- package/dist/aztecRemoteWallet.d.ts.map +1 -0
- package/dist/aztecRemoteWallet.js +354 -0
- package/dist/chainProvider.d.ts +56 -0
- package/dist/chainProvider.d.ts.map +1 -0
- package/dist/chainProvider.js +98 -0
- package/dist/contractArtifactCache.d.ts +50 -0
- package/dist/contractArtifactCache.d.ts.map +1 -0
- package/dist/contractArtifactCache.js +66 -0
- package/dist/errors.d.ts +50 -0
- package/dist/errors.d.ts.map +1 -0
- package/dist/errors.js +62 -0
- package/dist/handlers/aztecAccountWallet.d.ts +4 -0
- package/dist/handlers/aztecAccountWallet.d.ts.map +1 -0
- package/dist/handlers/aztecAccountWallet.js +329 -0
- package/dist/handlers/transactions.d.ts +21 -0
- package/dist/handlers/transactions.d.ts.map +1 -0
- package/dist/handlers/transactions.js +90 -0
- package/dist/handlers.d.ts +27 -0
- package/dist/handlers.d.ts.map +1 -0
- package/dist/handlers.js +55 -0
- package/dist/index.d.ts +58 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +33 -0
- package/dist/provider.d.ts +105 -0
- package/dist/provider.d.ts.map +1 -0
- package/dist/provider.js +160 -0
- package/dist/serializers/account.d.ts +167 -0
- package/dist/serializers/account.d.ts.map +1 -0
- package/dist/serializers/account.js +245 -0
- package/dist/serializers/contract-utils.d.ts +40 -0
- package/dist/serializers/contract-utils.d.ts.map +1 -0
- package/dist/serializers/contract-utils.js +102 -0
- package/dist/serializers/contract.d.ts +168 -0
- package/dist/serializers/contract.d.ts.map +1 -0
- package/dist/serializers/contract.js +268 -0
- package/dist/serializers/core.d.ts +110 -0
- package/dist/serializers/core.d.ts.map +1 -0
- package/dist/serializers/core.js +130 -0
- package/dist/serializers/index.d.ts +28 -0
- package/dist/serializers/index.d.ts.map +1 -0
- package/dist/serializers/index.js +159 -0
- package/dist/serializers/log.d.ts +113 -0
- package/dist/serializers/log.d.ts.map +1 -0
- package/dist/serializers/log.js +231 -0
- package/dist/serializers/note.d.ts +127 -0
- package/dist/serializers/note.d.ts.map +1 -0
- package/dist/serializers/note.js +182 -0
- package/dist/serializers/transaction-utils.d.ts +107 -0
- package/dist/serializers/transaction-utils.d.ts.map +1 -0
- package/dist/serializers/transaction-utils.js +130 -0
- package/dist/serializers/transaction.d.ts +103 -0
- package/dist/serializers/transaction.d.ts.map +1 -0
- package/dist/serializers/transaction.js +238 -0
- package/dist/serializers/types.d.ts +49 -0
- package/dist/serializers/types.d.ts.map +1 -0
- package/dist/serializers/types.js +22 -0
- package/dist/types.d.ts +391 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +8 -0
- package/dist/wallet.d.ts +62 -0
- package/dist/wallet.d.ts.map +1 -0
- package/dist/wallet.js +77 -0
- package/package.json +44 -0
- package/src/aztecRemoteWallet.test.ts +542 -0
- package/src/aztecRemoteWallet.ts +484 -0
- package/src/chainProvider.test.ts +322 -0
- package/src/chainProvider.ts +122 -0
- package/src/contractArtifactCache.test.ts +126 -0
- package/src/contractArtifactCache.ts +75 -0
- package/src/errors.ts +71 -0
- package/src/handlers/aztecAccountWallet.test.ts +720 -0
- package/src/handlers/aztecAccountWallet.ts +593 -0
- package/src/handlers/transactions.ts +110 -0
- package/src/handlers.test.ts +270 -0
- package/src/handlers.ts +70 -0
- package/src/index.test.ts +23 -0
- package/src/index.ts +64 -0
- package/src/provider.test.ts +276 -0
- package/src/provider.ts +189 -0
- package/src/serializers/account.test.ts +125 -0
- package/src/serializers/account.ts +319 -0
- package/src/serializers/contract-utils.ts +104 -0
- package/src/serializers/contract.test.ts +162 -0
- package/src/serializers/contract.ts +350 -0
- package/src/serializers/core.test.ts +56 -0
- package/src/serializers/core.ts +141 -0
- package/src/serializers/index.test.ts +122 -0
- package/src/serializers/index.ts +213 -0
- package/src/serializers/log.test.ts +119 -0
- package/src/serializers/log.ts +283 -0
- package/src/serializers/note.test.ts +100 -0
- package/src/serializers/note.ts +227 -0
- package/src/serializers/transaction-utils.ts +237 -0
- package/src/serializers/transaction.test.ts +153 -0
- package/src/serializers/transaction.ts +342 -0
- package/src/serializers/types.ts +58 -0
- package/src/types.ts +295 -0
- package/src/wallet.test.ts +275 -0
- package/src/wallet.ts +94 -0
- package/tsconfig.build.json +6 -0
- package/tsconfig.json +11 -0
- package/typedoc.json +15 -0
- package/vitest.config.ts +10 -0
@@ -0,0 +1,130 @@
|
|
1
|
+
import { Fr, AztecAddress, CompleteAddress, AuthWitness, TxHash } from '@aztec/aztec.js';
|
2
|
+
import { encodeBase64, decodeBase64 } from './types.js';
|
3
|
+
/**
|
4
|
+
* Serializer for Fr (field element) values in the Aztec protocol.
|
5
|
+
* Handles conversion of field elements to/from base64-encoded strings for RPC transport.
|
6
|
+
* Field elements are fundamental to Aztec's cryptographic operations.
|
7
|
+
*/
|
8
|
+
export class FrSerializer {
|
9
|
+
/**
|
10
|
+
* Converts an Fr value to a base64-encoded string.
|
11
|
+
* @param value - The field element to serialize
|
12
|
+
* @returns Base64-encoded string representation
|
13
|
+
*/
|
14
|
+
serialize(value) {
|
15
|
+
return encodeBase64(value.toString());
|
16
|
+
}
|
17
|
+
/**
|
18
|
+
* Reconstructs an Fr value from a base64-encoded string.
|
19
|
+
* @param data - The base64-encoded string to deserialize
|
20
|
+
* @returns Reconstructed field element
|
21
|
+
* @throws If the input string is not a valid field element representation
|
22
|
+
*/
|
23
|
+
deserialize(data) {
|
24
|
+
return Fr.fromHexString(decodeBase64(data));
|
25
|
+
}
|
26
|
+
}
|
27
|
+
/**
|
28
|
+
* Serializer for Aztec protocol addresses.
|
29
|
+
* Handles conversion of AztecAddress instances to/from base64-encoded strings.
|
30
|
+
* Aztec addresses represent accounts and contracts in the protocol.
|
31
|
+
*/
|
32
|
+
export class AztecAddressSerializer {
|
33
|
+
/**
|
34
|
+
* Converts an AztecAddress to a base64-encoded string.
|
35
|
+
* @param value - The Aztec address to serialize
|
36
|
+
* @returns Base64-encoded string representation
|
37
|
+
*/
|
38
|
+
serialize(value) {
|
39
|
+
return encodeBase64(value.toString());
|
40
|
+
}
|
41
|
+
/**
|
42
|
+
* Reconstructs an AztecAddress from a base64-encoded string.
|
43
|
+
* @param data - The base64-encoded string to deserialize
|
44
|
+
* @returns Reconstructed Aztec address
|
45
|
+
* @throws If the input string is not a valid address representation
|
46
|
+
*/
|
47
|
+
deserialize(data) {
|
48
|
+
return AztecAddress.fromString(decodeBase64(data));
|
49
|
+
}
|
50
|
+
}
|
51
|
+
/**
|
52
|
+
* Serializer for complete Aztec addresses that include additional metadata.
|
53
|
+
* CompleteAddress extends AztecAddress with extra information needed for certain operations.
|
54
|
+
*/
|
55
|
+
export class CompleteAddressSerializer {
|
56
|
+
/**
|
57
|
+
* Converts a CompleteAddress to a base64-encoded string.
|
58
|
+
* @param value - The complete address to serialize
|
59
|
+
* @returns Base64-encoded string representation
|
60
|
+
*/
|
61
|
+
serialize(value) {
|
62
|
+
return encodeBase64(value.toString());
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Reconstructs a CompleteAddress from a base64-encoded string.
|
66
|
+
* @param data - The base64-encoded string to deserialize
|
67
|
+
* @returns Reconstructed complete address
|
68
|
+
* @throws If the input string is not a valid complete address representation
|
69
|
+
*/
|
70
|
+
deserialize(data) {
|
71
|
+
return CompleteAddress.fromString(decodeBase64(data));
|
72
|
+
}
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* Serializer for authentication witnesses in the Aztec protocol.
|
76
|
+
* AuthWitness values are used to prove transaction authorization.
|
77
|
+
*/
|
78
|
+
export class AuthWitnessSerializer {
|
79
|
+
/**
|
80
|
+
* Converts an AuthWitness to a base64-encoded string.
|
81
|
+
* @param value - The authentication witness to serialize
|
82
|
+
* @returns Base64-encoded string representation
|
83
|
+
*/
|
84
|
+
serialize(value) {
|
85
|
+
return encodeBase64(value.toString());
|
86
|
+
}
|
87
|
+
/**
|
88
|
+
* Reconstructs an AuthWitness from a base64-encoded string.
|
89
|
+
* @param data - The base64-encoded string to deserialize
|
90
|
+
* @returns Reconstructed authentication witness
|
91
|
+
* @throws If the input string is not a valid auth witness representation
|
92
|
+
*/
|
93
|
+
deserialize(data) {
|
94
|
+
return AuthWitness.fromString(decodeBase64(data));
|
95
|
+
}
|
96
|
+
}
|
97
|
+
/**
|
98
|
+
* Serializer for transaction hashes in the Aztec protocol.
|
99
|
+
* TxHash values uniquely identify transactions and are used for lookups and references.
|
100
|
+
*/
|
101
|
+
export class TxHashSerializer {
|
102
|
+
/**
|
103
|
+
* Converts a TxHash to a base64-encoded string.
|
104
|
+
* @param value - The transaction hash to serialize
|
105
|
+
* @returns Base64-encoded string representation
|
106
|
+
*/
|
107
|
+
serialize(value) {
|
108
|
+
return encodeBase64(value.toString());
|
109
|
+
}
|
110
|
+
/**
|
111
|
+
* Reconstructs a TxHash from a base64-encoded string.
|
112
|
+
* @param data - The base64-encoded string to deserialize
|
113
|
+
* @returns Reconstructed transaction hash
|
114
|
+
* @throws If the input string is not a valid transaction hash representation
|
115
|
+
*/
|
116
|
+
deserialize(data) {
|
117
|
+
return TxHash.fromString(decodeBase64(data));
|
118
|
+
}
|
119
|
+
}
|
120
|
+
/**
|
121
|
+
* Pre-instantiated serializer instances for common Aztec types.
|
122
|
+
* These singletons should be used instead of creating new instances
|
123
|
+
* to ensure consistent serialization across the application.
|
124
|
+
*/
|
125
|
+
export const frSerializer = new FrSerializer();
|
126
|
+
export const aztecAddressSerializer = new AztecAddressSerializer();
|
127
|
+
export const completeAddressSerializer = new CompleteAddressSerializer();
|
128
|
+
export const authWitnessSerializer = new AuthWitnessSerializer();
|
129
|
+
export const txHashSerializer = new TxHashSerializer();
|
130
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29yZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemVycy9jb3JlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxFQUFFLEVBQUUsWUFBWSxFQUFFLGVBQWUsRUFBRSxXQUFXLEVBQUUsTUFBTSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDekYsT0FBTyxFQUFFLFlBQVksRUFBRSxZQUFZLEVBQUUsTUFBTSxZQUFZLENBQUM7QUFHeEQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxZQUFZO0lBQ3ZCOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBUztRQUNqQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLEVBQUUsQ0FBQyxhQUFhLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDOUMsQ0FBQztDQUNGO0FBRUQ7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyxzQkFBc0I7SUFDakM7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxLQUFtQjtRQUMzQixPQUFPLFlBQVksQ0FBQyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUN4QyxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxXQUFXLENBQUMsSUFBWTtRQUN0QixPQUFPLFlBQVksQ0FBQyxVQUFVLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUM7SUFDckQsQ0FBQztDQUNGO0FBRUQ7OztHQUdHO0FBQ0gsTUFBTSxPQUFPLHlCQUF5QjtJQUNwQzs7OztPQUlHO0lBQ0gsU0FBUyxDQUFDLEtBQXNCO1FBQzlCLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sZUFBZSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUN4RCxDQUFDO0NBQ0Y7QUFFRDs7O0dBR0c7QUFDSCxNQUFNLE9BQU8scUJBQXFCO0lBQ2hDOzs7O09BSUc7SUFDSCxTQUFTLENBQUMsS0FBa0I7UUFDMUIsT0FBTyxZQUFZLENBQUMsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDLENBQUM7SUFDeEMsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsV0FBVyxDQUFDLElBQVk7UUFDdEIsT0FBTyxXQUFXLENBQUMsVUFBVSxDQUFDLFlBQVksQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDO0lBQ3BELENBQUM7Q0FDRjtBQUVEOzs7R0FHRztBQUNILE1BQU0sT0FBTyxnQkFBZ0I7SUFDM0I7Ozs7T0FJRztJQUNILFNBQVMsQ0FBQyxLQUFhO1FBQ3JCLE9BQU8sWUFBWSxDQUFDLEtBQUssQ0FBQyxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQ3hDLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILFdBQVcsQ0FBQyxJQUFZO1FBQ3RCLE9BQU8sTUFBTSxDQUFDLFVBQVUsQ0FBQyxZQUFZLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQztJQUMvQyxDQUFDO0NBQ0Y7QUFFRDs7OztHQUlHO0FBQ0gsTUFBTSxDQUFDLE1BQU0sWUFBWSxHQUFHLElBQUksWUFBWSxFQUFFLENBQUM7QUFDL0MsTUFBTSxDQUFDLE1BQU0sc0JBQXNCLEdBQUcsSUFBSSxzQkFBc0IsRUFBRSxDQUFDO0FBQ25FLE1BQU0sQ0FBQyxNQUFNLHlCQUF5QixHQUFHLElBQUkseUJBQXlCLEVBQUUsQ0FBQztBQUN6RSxNQUFNLENBQUMsTUFBTSxxQkFBcUIsR0FBRyxJQUFJLHFCQUFxQixFQUFFLENBQUM7QUFDakUsTUFBTSxDQUFDLE1BQU0sZ0JBQWdCLEdBQUcsSUFBSSxnQkFBZ0IsRUFBRSxDQUFDIn0=
|
@@ -0,0 +1,28 @@
|
|
1
|
+
import type { JSONRPCSerializer } from './types.js';
|
2
|
+
/**
|
3
|
+
* Re-export all serializer types and implementations.
|
4
|
+
* This provides a single entry point for importing any serializer functionality.
|
5
|
+
*/
|
6
|
+
export * from './types.js';
|
7
|
+
export * from './core.js';
|
8
|
+
export * from './account.js';
|
9
|
+
export * from './contract.js';
|
10
|
+
export * from './transaction.js';
|
11
|
+
export * from './note.js';
|
12
|
+
export * from './log.js';
|
13
|
+
/**
|
14
|
+
* Main serializer for the Aztec wallet RPC interface.
|
15
|
+
* Provides a unified interface for serializing all supported RPC methods.
|
16
|
+
*
|
17
|
+
* This serializer:
|
18
|
+
* 1. Routes each method call to its specialized serializer from methodSerializers
|
19
|
+
* 2. Provides fallback handling for unknown methods
|
20
|
+
* 3. Wraps all serialization operations in proper error handling
|
21
|
+
*
|
22
|
+
* The serializer handles both:
|
23
|
+
* - Parameters: Incoming RPC call parameters
|
24
|
+
* - Results: Outgoing RPC call results
|
25
|
+
*/
|
26
|
+
export declare const AztecWalletSerializer: JSONRPCSerializer<unknown, unknown>;
|
27
|
+
export type { JSONRPCSerializer } from './types.js';
|
28
|
+
//# sourceMappingURL=index.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/serializers/index.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,iBAAiB,EAAyB,MAAM,YAAY,CAAC;AAG3E;;;GAGG;AACH,cAAc,YAAY,CAAC;AAC3B,cAAc,WAAW,CAAC;AAC1B,cAAc,cAAc,CAAC;AAC7B,cAAc,eAAe,CAAC;AAC9B,cAAc,kBAAkB,CAAC;AACjC,cAAc,WAAW,CAAC;AAC1B,cAAc,UAAU,CAAC;AAqGzB;;;;;;;;;;;;GAYG;AACH,eAAO,MAAM,qBAAqB,EAAE,iBAAiB,CAAC,OAAO,EAAE,OAAO,CAiFrE,CAAC;AAGF,YAAY,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC"}
|
@@ -0,0 +1,159 @@
|
|
1
|
+
import { encodeBase64 } from './types.js';
|
2
|
+
/**
|
3
|
+
* Re-export all serializer types and implementations.
|
4
|
+
* This provides a single entry point for importing any serializer functionality.
|
5
|
+
*/
|
6
|
+
export * from './types.js';
|
7
|
+
export * from './core.js';
|
8
|
+
export * from './account.js';
|
9
|
+
export * from './contract.js';
|
10
|
+
export * from './transaction.js';
|
11
|
+
export * from './note.js';
|
12
|
+
export * from './log.js';
|
13
|
+
// Import all serializer instances
|
14
|
+
import { aztecSetScopesSerializer, aztecRegisterAccountSerializer, aztecAddAuthWitnessSerializer, aztecGetAuthWitnessSerializer, } from './account.js';
|
15
|
+
import { aztecGetContractInstanceSerializer, aztecGetContractClassSerializer, aztecGetContractArtifactSerializer, aztecRegisterContractSerializer, } from './contract.js';
|
16
|
+
import { aztecCreateTxExecutionRequestSerializer, aztecProveTxSerializer, aztecSendTxSerializer, aztecGetTxReceiptSerializer, } from './transaction.js';
|
17
|
+
import { aztecGetIncomingNotesSerializer, aztecAddNoteSerializer, aztecAddNullifiedNoteSerializer, } from './note.js';
|
18
|
+
import { aztecGetUnencryptedLogsSerializer, aztecGetEncryptedEventsSerializer, aztecGetUnencryptedEventsSerializer, } from './log.js';
|
19
|
+
/**
|
20
|
+
* Registry of all available method serializers.
|
21
|
+
* Maps each RPC method name to its corresponding serializer implementation.
|
22
|
+
* This mapping is used by the main AztecWalletSerializer to route method calls
|
23
|
+
* to the appropriate specialized serializer.
|
24
|
+
*/
|
25
|
+
const methodSerializers = {
|
26
|
+
// Account methods
|
27
|
+
aztec_setScopes: aztecSetScopesSerializer,
|
28
|
+
aztec_registerAccount: aztecRegisterAccountSerializer,
|
29
|
+
aztec_addAuthWitness: aztecAddAuthWitnessSerializer,
|
30
|
+
aztec_getAuthWitness: aztecGetAuthWitnessSerializer,
|
31
|
+
// Contract methods
|
32
|
+
aztec_getContractInstance: aztecGetContractInstanceSerializer,
|
33
|
+
aztec_getContractClass: aztecGetContractClassSerializer,
|
34
|
+
aztec_getContractArtifact: aztecGetContractArtifactSerializer,
|
35
|
+
aztec_registerContract: aztecRegisterContractSerializer,
|
36
|
+
// Transaction methods
|
37
|
+
aztec_createTxExecutionRequest: aztecCreateTxExecutionRequestSerializer,
|
38
|
+
aztec_proveTx: aztecProveTxSerializer,
|
39
|
+
aztec_sendTx: aztecSendTxSerializer,
|
40
|
+
aztec_getTxReceipt: aztecGetTxReceiptSerializer,
|
41
|
+
// Note methods
|
42
|
+
aztec_getIncomingNotes: aztecGetIncomingNotesSerializer,
|
43
|
+
aztec_addNote: aztecAddNoteSerializer,
|
44
|
+
aztec_addNullifiedNote: aztecAddNullifiedNoteSerializer,
|
45
|
+
// Log methods
|
46
|
+
aztec_getUnencryptedLogs: aztecGetUnencryptedLogsSerializer,
|
47
|
+
aztec_getEncryptedEvents: aztecGetEncryptedEventsSerializer,
|
48
|
+
aztec_getUnencryptedEvents: aztecGetUnencryptedEventsSerializer,
|
49
|
+
};
|
50
|
+
/**
|
51
|
+
* Helper function to wrap unknown values in a standard JSON-RPC format.
|
52
|
+
* Used as a fallback when no specific serializer is available for a method.
|
53
|
+
*
|
54
|
+
* @param method - The RPC method name
|
55
|
+
* @param value - The value to wrap
|
56
|
+
* @returns Standardized JSON-RPC data structure
|
57
|
+
*/
|
58
|
+
function wrapUnknownValue(method, value) {
|
59
|
+
return {
|
60
|
+
method,
|
61
|
+
serialized: encodeBase64(JSON.stringify(value)),
|
62
|
+
};
|
63
|
+
}
|
64
|
+
/**
|
65
|
+
* Main serializer for the Aztec wallet RPC interface.
|
66
|
+
* Provides a unified interface for serializing all supported RPC methods.
|
67
|
+
*
|
68
|
+
* This serializer:
|
69
|
+
* 1. Routes each method call to its specialized serializer from methodSerializers
|
70
|
+
* 2. Provides fallback handling for unknown methods
|
71
|
+
* 3. Wraps all serialization operations in proper error handling
|
72
|
+
*
|
73
|
+
* The serializer handles both:
|
74
|
+
* - Parameters: Incoming RPC call parameters
|
75
|
+
* - Results: Outgoing RPC call results
|
76
|
+
*/
|
77
|
+
export const AztecWalletSerializer = {
|
78
|
+
params: {
|
79
|
+
/**
|
80
|
+
* Serializes RPC method parameters using the appropriate method serializer.
|
81
|
+
* @param method - The RPC method name
|
82
|
+
* @param value - The parameters to serialize
|
83
|
+
* @returns Serialized parameter data
|
84
|
+
* @throws If serialization fails or encounters an error
|
85
|
+
*/
|
86
|
+
serialize: (method, value) => {
|
87
|
+
const serializer = methodSerializers[method];
|
88
|
+
if (!serializer?.params) {
|
89
|
+
return wrapUnknownValue(method, value);
|
90
|
+
}
|
91
|
+
try {
|
92
|
+
return serializer.params.serialize(method, value);
|
93
|
+
}
|
94
|
+
catch (error) {
|
95
|
+
throw new Error(`Failed to serialize params for method ${method}: ${error}`);
|
96
|
+
}
|
97
|
+
},
|
98
|
+
/**
|
99
|
+
* Deserializes RPC method parameters using the appropriate method serializer.
|
100
|
+
* @param method - The RPC method name
|
101
|
+
* @param data - The serialized parameter data
|
102
|
+
* @returns Deserialized parameters
|
103
|
+
* @throws If deserialization fails or encounters an error
|
104
|
+
*/
|
105
|
+
deserialize: (method, data) => {
|
106
|
+
const serializer = methodSerializers[method];
|
107
|
+
if (!serializer?.params) {
|
108
|
+
return data;
|
109
|
+
}
|
110
|
+
try {
|
111
|
+
return serializer.params.deserialize(method, data);
|
112
|
+
}
|
113
|
+
catch (error) {
|
114
|
+
throw new Error(`Failed to deserialize params for method ${method}: ${error}`);
|
115
|
+
}
|
116
|
+
},
|
117
|
+
},
|
118
|
+
result: {
|
119
|
+
/**
|
120
|
+
* Serializes RPC method results using the appropriate method serializer.
|
121
|
+
* @param method - The RPC method name
|
122
|
+
* @param value - The result to serialize
|
123
|
+
* @returns Serialized result data
|
124
|
+
* @throws If serialization fails or encounters an error
|
125
|
+
*/
|
126
|
+
serialize: (method, value) => {
|
127
|
+
const serializer = methodSerializers[method];
|
128
|
+
if (!serializer?.result) {
|
129
|
+
return wrapUnknownValue(method, value);
|
130
|
+
}
|
131
|
+
try {
|
132
|
+
return serializer.result.serialize(method, value);
|
133
|
+
}
|
134
|
+
catch (error) {
|
135
|
+
throw new Error(`Failed to serialize result for method ${method}: ${error}`);
|
136
|
+
}
|
137
|
+
},
|
138
|
+
/**
|
139
|
+
* Deserializes RPC method results using the appropriate method serializer.
|
140
|
+
* @param method - The RPC method name
|
141
|
+
* @param data - The serialized result data
|
142
|
+
* @returns Deserialized result
|
143
|
+
* @throws If deserialization fails or encounters an error
|
144
|
+
*/
|
145
|
+
deserialize: (method, data) => {
|
146
|
+
const serializer = methodSerializers[method];
|
147
|
+
if (!serializer?.result) {
|
148
|
+
return data;
|
149
|
+
}
|
150
|
+
try {
|
151
|
+
return serializer.result.deserialize(method, data);
|
152
|
+
}
|
153
|
+
catch (error) {
|
154
|
+
throw new Error(`Failed to deserialize result for method ${method}: ${error}`);
|
155
|
+
}
|
156
|
+
},
|
157
|
+
},
|
158
|
+
};
|
159
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW5kZXguanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplcnMvaW5kZXgudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBRUEsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLFlBQVksQ0FBQztBQUUxQzs7O0dBR0c7QUFDSCxjQUFjLFlBQVksQ0FBQztBQUMzQixjQUFjLFdBQVcsQ0FBQztBQUMxQixjQUFjLGNBQWMsQ0FBQztBQUM3QixjQUFjLGVBQWUsQ0FBQztBQUM5QixjQUFjLGtCQUFrQixDQUFDO0FBQ2pDLGNBQWMsV0FBVyxDQUFDO0FBQzFCLGNBQWMsVUFBVSxDQUFDO0FBRXpCLGtDQUFrQztBQUNsQyxPQUFPLEVBQ0wsd0JBQXdCLEVBQ3hCLDhCQUE4QixFQUM5Qiw2QkFBNkIsRUFDN0IsNkJBQTZCLEdBQzlCLE1BQU0sY0FBYyxDQUFDO0FBQ3RCLE9BQU8sRUFDTCxrQ0FBa0MsRUFDbEMsK0JBQStCLEVBQy9CLGtDQUFrQyxFQUNsQywrQkFBK0IsR0FDaEMsTUFBTSxlQUFlLENBQUM7QUFDdkIsT0FBTyxFQUNMLHVDQUF1QyxFQUN2QyxzQkFBc0IsRUFDdEIscUJBQXFCLEVBQ3JCLDJCQUEyQixHQUM1QixNQUFNLGtCQUFrQixDQUFDO0FBQzFCLE9BQU8sRUFDTCwrQkFBK0IsRUFDL0Isc0JBQXNCLEVBQ3RCLCtCQUErQixHQUNoQyxNQUFNLFdBQVcsQ0FBQztBQUNuQixPQUFPLEVBQ0wsaUNBQWlDLEVBQ2pDLGlDQUFpQyxFQUNqQyxtQ0FBbUMsR0FDcEMsTUFBTSxVQUFVLENBQUM7QUFvQmxCOzs7OztHQUtHO0FBQ0gsTUFBTSxpQkFBaUIsR0FBaUU7SUFDdEYsa0JBQWtCO0lBQ2xCLGVBQWUsRUFBRSx3QkFBd0I7SUFDekMscUJBQXFCLEVBQUUsOEJBQThCO0lBQ3JELG9CQUFvQixFQUFFLDZCQUE2QjtJQUNuRCxvQkFBb0IsRUFBRSw2QkFBNkI7SUFFbkQsbUJBQW1CO0lBQ25CLHlCQUF5QixFQUFF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
|
@@ -0,0 +1,113 @@
|
|
1
|
+
import type { AztecWalletMethodMap } from '../types.js';
|
2
|
+
import type { JSONRPCSerializedData, JSONRPCSerializer } from './types.js';
|
3
|
+
/**
|
4
|
+
* Serializer for the aztec_getUnencryptedLogs RPC method.
|
5
|
+
* Handles serialization of unencrypted log queries and results between JSON-RPC format and native Aztec types.
|
6
|
+
* Supports filtering logs by transaction hash, block range, and contract address.
|
7
|
+
*/
|
8
|
+
export declare class AztecGetUnencryptedLogsSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_getUnencryptedLogs']['params'], AztecWalletMethodMap['aztec_getUnencryptedLogs']['result']> {
|
9
|
+
params: {
|
10
|
+
/**
|
11
|
+
* Serializes log filter parameters for RPC transport.
|
12
|
+
* @param method - The RPC method name
|
13
|
+
* @param value - The filter parameters including txHash, block range, and contract address
|
14
|
+
* @returns Serialized filter data
|
15
|
+
*/
|
16
|
+
serialize: (method: string, value: AztecWalletMethodMap["aztec_getUnencryptedLogs"]["params"]) => JSONRPCSerializedData;
|
17
|
+
/**
|
18
|
+
* Deserializes log filter parameters from RPC transport.
|
19
|
+
* @param method - The RPC method name
|
20
|
+
* @param data - The serialized filter data
|
21
|
+
* @returns Deserialized filter parameters
|
22
|
+
*/
|
23
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getUnencryptedLogs"]["params"];
|
24
|
+
};
|
25
|
+
result: {
|
26
|
+
/**
|
27
|
+
* Serializes unencrypted log results for RPC transport.
|
28
|
+
* @param method - The RPC method name
|
29
|
+
* @param value - The log results including logs array and maxLogsHit flag
|
30
|
+
* @returns Serialized log data
|
31
|
+
*/
|
32
|
+
serialize: (method: string, value: AztecWalletMethodMap["aztec_getUnencryptedLogs"]["result"]) => JSONRPCSerializedData;
|
33
|
+
/**
|
34
|
+
* Deserializes unencrypted log results from RPC transport.
|
35
|
+
* @param method - The RPC method name
|
36
|
+
* @param data - The serialized log data
|
37
|
+
* @returns Deserialized log results
|
38
|
+
*/
|
39
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getUnencryptedLogs"]["result"];
|
40
|
+
};
|
41
|
+
}
|
42
|
+
/**
|
43
|
+
* Serializer for the aztec_getEncryptedEvents RPC method.
|
44
|
+
* Handles serialization of encrypted event queries and results between JSON-RPC format and native Aztec types.
|
45
|
+
* Supports querying events with viewing keys for decryption.
|
46
|
+
*/
|
47
|
+
export declare class AztecGetEncryptedEventsSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_getEncryptedEvents']['params'], AztecWalletMethodMap['aztec_getEncryptedEvents']['result']> {
|
48
|
+
params: {
|
49
|
+
/**
|
50
|
+
* Serializes encrypted event query parameters for RPC transport.
|
51
|
+
* @param method - The RPC method name
|
52
|
+
* @param value - The query parameters including event metadata, range, and viewing keys
|
53
|
+
* @returns Serialized query data
|
54
|
+
*/
|
55
|
+
serialize: (method: string, value: AztecWalletMethodMap["aztec_getEncryptedEvents"]["params"]) => JSONRPCSerializedData;
|
56
|
+
/**
|
57
|
+
* Deserializes encrypted event query parameters from RPC transport.
|
58
|
+
* @param method - The RPC method name
|
59
|
+
* @param data - The serialized query data
|
60
|
+
* @returns Deserialized query parameters
|
61
|
+
*/
|
62
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getEncryptedEvents"]["params"];
|
63
|
+
};
|
64
|
+
/**
|
65
|
+
* Handles serialization of encrypted event results.
|
66
|
+
* Note: The result type is generic (T[]) based on the event's ABI type definition.
|
67
|
+
* Currently handles results as unknown[] until proper ABI-based deserialization is implemented.
|
68
|
+
*/
|
69
|
+
result: {
|
70
|
+
serialize: (method: string, value: unknown[]) => JSONRPCSerializedData;
|
71
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => unknown[];
|
72
|
+
};
|
73
|
+
}
|
74
|
+
/**
|
75
|
+
* Serializer for the aztec_getUnencryptedEvents RPC method.
|
76
|
+
* Handles serialization of unencrypted event queries and results between JSON-RPC format and native Aztec types.
|
77
|
+
* Supports querying events by event selector and pagination parameters.
|
78
|
+
*/
|
79
|
+
export declare class AztecGetUnencryptedEventsSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_getUnencryptedEvents']['params'], AztecWalletMethodMap['aztec_getUnencryptedEvents']['result']> {
|
80
|
+
params: {
|
81
|
+
/**
|
82
|
+
* Serializes unencrypted event query parameters for RPC transport.
|
83
|
+
* @param method - The RPC method name
|
84
|
+
* @param value - The query parameters including event metadata and range
|
85
|
+
* @returns Serialized query data
|
86
|
+
*/
|
87
|
+
serialize: (method: string, value: AztecWalletMethodMap["aztec_getUnencryptedEvents"]["params"]) => JSONRPCSerializedData;
|
88
|
+
/**
|
89
|
+
* Deserializes unencrypted event query parameters from RPC transport.
|
90
|
+
* @param method - The RPC method name
|
91
|
+
* @param data - The serialized query data
|
92
|
+
* @returns Deserialized query parameters
|
93
|
+
*/
|
94
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getUnencryptedEvents"]["params"];
|
95
|
+
};
|
96
|
+
/**
|
97
|
+
* Handles serialization of unencrypted event results.
|
98
|
+
* Note: The result type is generic (T[]) based on the event's ABI type definition.
|
99
|
+
* Currently handles results as unknown[] until proper ABI-based deserialization is implemented.
|
100
|
+
*/
|
101
|
+
result: {
|
102
|
+
serialize: (method: string, value: unknown[]) => JSONRPCSerializedData;
|
103
|
+
deserialize: (method: string, data: JSONRPCSerializedData) => unknown[];
|
104
|
+
};
|
105
|
+
}
|
106
|
+
/**
|
107
|
+
* Pre-instantiated serializer instances for each Aztec log/event-related RPC method.
|
108
|
+
* These instances can be used directly by the RPC handler implementation.
|
109
|
+
*/
|
110
|
+
export declare const aztecGetUnencryptedLogsSerializer: AztecGetUnencryptedLogsSerializer;
|
111
|
+
export declare const aztecGetEncryptedEventsSerializer: AztecGetEncryptedEventsSerializer;
|
112
|
+
export declare const aztecGetUnencryptedEventsSerializer: AztecGetUnencryptedEventsSerializer;
|
113
|
+
//# sourceMappingURL=log.d.ts.map
|
@@ -0,0 +1 @@
|
|
1
|
+
{"version":3,"file":"log.d.ts","sourceRoot":"","sources":["../../src/serializers/log.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAQ3E;;;;GAIG;AACH,qBAAa,iCACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAC1D,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,CAC3D;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,KAChE,qBAAqB;QAexB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC;MAW7D;IAEF,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,KAChE,qBAAqB;QAOxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC;MAO7D;CACH;AAED;;;;GAIG;AACH,qBAAa,iCACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,EAC1D,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,CAC3D;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC,KAChE,qBAAqB;QAoBxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,0BAA0B,CAAC,CAAC,QAAQ,CAAC;MAgB7D;IAEF;;;;OAIG;IACH,MAAM;4BACgB,MAAM,SAAS,OAAO,EAAE,KAAG,qBAAqB;8BAM9C,MAAM,QAAQ,qBAAqB,KAAG,OAAO,EAAE;MAGrE;CACH;AAED;;;;GAIG;AACH,qBAAa,mCACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,EAC5D,oBAAoB,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,CAC7D;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC,KAClE,qBAAqB;QAmBxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,4BAA4B,CAAC,CAAC,QAAQ,CAAC;MAe/D;IAEF;;;;OAIG;IACH,MAAM;4BACgB,MAAM,SAAS,OAAO,EAAE,KAAG,qBAAqB;8BAM9C,MAAM,QAAQ,qBAAqB,KAAG,OAAO,EAAE;MAGrE;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,iCAAiC,mCAA0C,CAAC;AACzF,eAAO,MAAM,iCAAiC,mCAA0C,CAAC;AACzF,eAAO,MAAM,mCAAmC,qCAA4C,CAAC"}
|