@walletmesh/aztec-rpc-wallet 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (108) hide show
  1. package/CHANGELOG.md +7 -0
  2. package/LICENSE +201 -0
  3. package/README.md +260 -0
  4. package/dist/.tsbuildinfo +1 -0
  5. package/dist/aztecRemoteWallet.d.ts +73 -0
  6. package/dist/aztecRemoteWallet.d.ts.map +1 -0
  7. package/dist/aztecRemoteWallet.js +354 -0
  8. package/dist/chainProvider.d.ts +56 -0
  9. package/dist/chainProvider.d.ts.map +1 -0
  10. package/dist/chainProvider.js +98 -0
  11. package/dist/contractArtifactCache.d.ts +50 -0
  12. package/dist/contractArtifactCache.d.ts.map +1 -0
  13. package/dist/contractArtifactCache.js +66 -0
  14. package/dist/errors.d.ts +50 -0
  15. package/dist/errors.d.ts.map +1 -0
  16. package/dist/errors.js +62 -0
  17. package/dist/handlers/aztecAccountWallet.d.ts +4 -0
  18. package/dist/handlers/aztecAccountWallet.d.ts.map +1 -0
  19. package/dist/handlers/aztecAccountWallet.js +329 -0
  20. package/dist/handlers/transactions.d.ts +21 -0
  21. package/dist/handlers/transactions.d.ts.map +1 -0
  22. package/dist/handlers/transactions.js +90 -0
  23. package/dist/handlers.d.ts +27 -0
  24. package/dist/handlers.d.ts.map +1 -0
  25. package/dist/handlers.js +55 -0
  26. package/dist/index.d.ts +58 -0
  27. package/dist/index.d.ts.map +1 -0
  28. package/dist/index.js +33 -0
  29. package/dist/provider.d.ts +105 -0
  30. package/dist/provider.d.ts.map +1 -0
  31. package/dist/provider.js +160 -0
  32. package/dist/serializers/account.d.ts +167 -0
  33. package/dist/serializers/account.d.ts.map +1 -0
  34. package/dist/serializers/account.js +245 -0
  35. package/dist/serializers/contract-utils.d.ts +40 -0
  36. package/dist/serializers/contract-utils.d.ts.map +1 -0
  37. package/dist/serializers/contract-utils.js +102 -0
  38. package/dist/serializers/contract.d.ts +168 -0
  39. package/dist/serializers/contract.d.ts.map +1 -0
  40. package/dist/serializers/contract.js +268 -0
  41. package/dist/serializers/core.d.ts +110 -0
  42. package/dist/serializers/core.d.ts.map +1 -0
  43. package/dist/serializers/core.js +130 -0
  44. package/dist/serializers/index.d.ts +28 -0
  45. package/dist/serializers/index.d.ts.map +1 -0
  46. package/dist/serializers/index.js +159 -0
  47. package/dist/serializers/log.d.ts +113 -0
  48. package/dist/serializers/log.d.ts.map +1 -0
  49. package/dist/serializers/log.js +231 -0
  50. package/dist/serializers/note.d.ts +127 -0
  51. package/dist/serializers/note.d.ts.map +1 -0
  52. package/dist/serializers/note.js +182 -0
  53. package/dist/serializers/transaction-utils.d.ts +107 -0
  54. package/dist/serializers/transaction-utils.d.ts.map +1 -0
  55. package/dist/serializers/transaction-utils.js +130 -0
  56. package/dist/serializers/transaction.d.ts +103 -0
  57. package/dist/serializers/transaction.d.ts.map +1 -0
  58. package/dist/serializers/transaction.js +238 -0
  59. package/dist/serializers/types.d.ts +49 -0
  60. package/dist/serializers/types.d.ts.map +1 -0
  61. package/dist/serializers/types.js +22 -0
  62. package/dist/types.d.ts +391 -0
  63. package/dist/types.d.ts.map +1 -0
  64. package/dist/types.js +8 -0
  65. package/dist/wallet.d.ts +62 -0
  66. package/dist/wallet.d.ts.map +1 -0
  67. package/dist/wallet.js +77 -0
  68. package/package.json +44 -0
  69. package/src/aztecRemoteWallet.test.ts +542 -0
  70. package/src/aztecRemoteWallet.ts +484 -0
  71. package/src/chainProvider.test.ts +322 -0
  72. package/src/chainProvider.ts +122 -0
  73. package/src/contractArtifactCache.test.ts +126 -0
  74. package/src/contractArtifactCache.ts +75 -0
  75. package/src/errors.ts +71 -0
  76. package/src/handlers/aztecAccountWallet.test.ts +720 -0
  77. package/src/handlers/aztecAccountWallet.ts +593 -0
  78. package/src/handlers/transactions.ts +110 -0
  79. package/src/handlers.test.ts +270 -0
  80. package/src/handlers.ts +70 -0
  81. package/src/index.test.ts +23 -0
  82. package/src/index.ts +64 -0
  83. package/src/provider.test.ts +276 -0
  84. package/src/provider.ts +189 -0
  85. package/src/serializers/account.test.ts +125 -0
  86. package/src/serializers/account.ts +319 -0
  87. package/src/serializers/contract-utils.ts +104 -0
  88. package/src/serializers/contract.test.ts +162 -0
  89. package/src/serializers/contract.ts +350 -0
  90. package/src/serializers/core.test.ts +56 -0
  91. package/src/serializers/core.ts +141 -0
  92. package/src/serializers/index.test.ts +122 -0
  93. package/src/serializers/index.ts +213 -0
  94. package/src/serializers/log.test.ts +119 -0
  95. package/src/serializers/log.ts +283 -0
  96. package/src/serializers/note.test.ts +100 -0
  97. package/src/serializers/note.ts +227 -0
  98. package/src/serializers/transaction-utils.ts +237 -0
  99. package/src/serializers/transaction.test.ts +153 -0
  100. package/src/serializers/transaction.ts +342 -0
  101. package/src/serializers/types.ts +58 -0
  102. package/src/types.ts +295 -0
  103. package/src/wallet.test.ts +275 -0
  104. package/src/wallet.ts +94 -0
  105. package/tsconfig.build.json +6 -0
  106. package/tsconfig.json +11 -0
  107. package/typedoc.json +15 -0
  108. 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"}