@walletmesh/aztec-rpc-wallet 0.1.0
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/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"}
|