@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,167 @@
1
+ import type { AztecWalletMethodMap } from '../types.js';
2
+ import type { JSONRPCSerializedData, JSONRPCSerializer } from './types.js';
3
+ /**
4
+ * Serializer for the aztec_setScopes RPC method.
5
+ * Handles serialization of account scope settings between JSON-RPC format and native Aztec types.
6
+ * Scopes define which contracts can interact with an account.
7
+ */
8
+ export declare class AztecSetScopesSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_setScopes']['params'], AztecWalletMethodMap['aztec_setScopes']['result']> {
9
+ params: {
10
+ /**
11
+ * Serializes scope setting parameters for RPC transport.
12
+ * @param method - The RPC method name
13
+ * @param value - The parameters containing an array of Aztec addresses representing scopes
14
+ * @returns Serialized scope data
15
+ */
16
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_setScopes"]["params"]) => JSONRPCSerializedData;
17
+ /**
18
+ * Deserializes scope setting parameters from RPC transport.
19
+ * @param method - The RPC method name
20
+ * @param data - The serialized scope data
21
+ * @returns Deserialized scope parameters
22
+ */
23
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_setScopes"]["params"];
24
+ };
25
+ result: {
26
+ /**
27
+ * Serializes the scope setting result.
28
+ * @param method - The RPC method name
29
+ * @param value - Boolean indicating success of the scope setting operation
30
+ * @returns Serialized result
31
+ */
32
+ serialize: (method: string, value: boolean) => JSONRPCSerializedData;
33
+ /**
34
+ * Deserializes the scope setting result.
35
+ * @param method - The RPC method name
36
+ * @param data - The serialized result data
37
+ * @returns Boolean indicating success
38
+ */
39
+ deserialize: (method: string, data: JSONRPCSerializedData) => boolean;
40
+ };
41
+ }
42
+ /**
43
+ * Serializer for the aztec_registerAccount RPC method.
44
+ * Handles serialization of account registration data between JSON-RPC format and native Aztec types.
45
+ * Account registration involves creating a new account with a secret key and partial address.
46
+ */
47
+ export declare class AztecRegisterAccountSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_registerAccount']['params'], AztecWalletMethodMap['aztec_registerAccount']['result']> {
48
+ params: {
49
+ /**
50
+ * Serializes account registration parameters for RPC transport.
51
+ * @param method - The RPC method name
52
+ * @param value - The parameters containing secret key and partial address
53
+ * @returns Serialized registration data
54
+ */
55
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_registerAccount"]["params"]) => JSONRPCSerializedData;
56
+ /**
57
+ * Deserializes account registration parameters from RPC transport.
58
+ * @param method - The RPC method name
59
+ * @param data - The serialized registration data
60
+ * @returns Deserialized registration parameters
61
+ */
62
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_registerAccount"]["params"];
63
+ };
64
+ result: {
65
+ /**
66
+ * Serializes the account registration result.
67
+ * @param method - The RPC method name
68
+ * @param value - The complete address of the registered account
69
+ * @returns Serialized complete address
70
+ */
71
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_registerAccount"]["result"]) => JSONRPCSerializedData;
72
+ /**
73
+ * Deserializes the account registration result.
74
+ * @param method - The RPC method name
75
+ * @param data - The serialized complete address
76
+ * @returns Deserialized complete address
77
+ */
78
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_registerAccount"]["result"];
79
+ };
80
+ }
81
+ /**
82
+ * Serializer for the aztec_addAuthWitness RPC method.
83
+ * Handles serialization of authentication witness data between JSON-RPC format and native Aztec types.
84
+ * Auth witnesses are used to prove transaction authorization.
85
+ */
86
+ export declare class AztecAddAuthWitnessSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_addAuthWitness']['params'], AztecWalletMethodMap['aztec_addAuthWitness']['result']> {
87
+ params: {
88
+ /**
89
+ * Serializes auth witness addition parameters for RPC transport.
90
+ * @param method - The RPC method name
91
+ * @param value - The parameters containing the auth witness to add
92
+ * @returns Serialized auth witness data
93
+ */
94
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_addAuthWitness"]["params"]) => JSONRPCSerializedData;
95
+ /**
96
+ * Deserializes auth witness addition parameters from RPC transport.
97
+ * @param method - The RPC method name
98
+ * @param data - The serialized auth witness data
99
+ * @returns Deserialized auth witness parameters
100
+ */
101
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_addAuthWitness"]["params"];
102
+ };
103
+ result: {
104
+ /**
105
+ * Serializes the auth witness addition result.
106
+ * @param method - The RPC method name
107
+ * @param value - Boolean indicating success of the witness addition
108
+ * @returns Serialized result
109
+ */
110
+ serialize: (method: string, value: boolean) => JSONRPCSerializedData;
111
+ /**
112
+ * Deserializes the auth witness addition result.
113
+ * @param method - The RPC method name
114
+ * @param data - The serialized result data
115
+ * @returns Boolean indicating success
116
+ */
117
+ deserialize: (method: string, data: JSONRPCSerializedData) => boolean;
118
+ };
119
+ }
120
+ /**
121
+ * Serializer for the aztec_getAuthWitness RPC method.
122
+ * Handles serialization of authentication witness retrieval between JSON-RPC format and native Aztec types.
123
+ * Retrieves auth witnesses associated with a specific message hash.
124
+ */
125
+ export declare class AztecGetAuthWitnessSerializer implements JSONRPCSerializer<AztecWalletMethodMap['aztec_getAuthWitness']['params'], AztecWalletMethodMap['aztec_getAuthWitness']['result']> {
126
+ params: {
127
+ /**
128
+ * Serializes auth witness retrieval parameters for RPC transport.
129
+ * @param method - The RPC method name
130
+ * @param value - The parameters containing the message hash to look up
131
+ * @returns Serialized message hash data
132
+ */
133
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_getAuthWitness"]["params"]) => JSONRPCSerializedData;
134
+ /**
135
+ * Deserializes auth witness retrieval parameters from RPC transport.
136
+ * @param method - The RPC method name
137
+ * @param data - The serialized message hash data
138
+ * @returns Deserialized message hash parameters
139
+ */
140
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getAuthWitness"]["params"];
141
+ };
142
+ result: {
143
+ /**
144
+ * Serializes the auth witness retrieval result.
145
+ * @param method - The RPC method name
146
+ * @param value - Array of field elements representing auth witnesses
147
+ * @returns Serialized witness array
148
+ */
149
+ serialize: (method: string, value: AztecWalletMethodMap["aztec_getAuthWitness"]["result"]) => JSONRPCSerializedData;
150
+ /**
151
+ * Deserializes the auth witness retrieval result.
152
+ * @param method - The RPC method name
153
+ * @param data - The serialized witness array data
154
+ * @returns Array of deserialized field elements
155
+ */
156
+ deserialize: (method: string, data: JSONRPCSerializedData) => AztecWalletMethodMap["aztec_getAuthWitness"]["result"];
157
+ };
158
+ }
159
+ /**
160
+ * Pre-instantiated serializer instances for Aztec account-related RPC methods.
161
+ * These instances can be used directly by the RPC handler implementation.
162
+ */
163
+ export declare const aztecSetScopesSerializer: AztecSetScopesSerializer;
164
+ export declare const aztecRegisterAccountSerializer: AztecRegisterAccountSerializer;
165
+ export declare const aztecAddAuthWitnessSerializer: AztecAddAuthWitnessSerializer;
166
+ export declare const aztecGetAuthWitnessSerializer: AztecGetAuthWitnessSerializer;
167
+ //# sourceMappingURL=account.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"account.d.ts","sourceRoot":"","sources":["../../src/serializers/account.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,aAAa,CAAC;AACxD,OAAO,KAAK,EAAE,qBAAqB,EAAE,iBAAiB,EAAE,MAAM,YAAY,CAAC;AAU3E;;;;GAIG;AACH,qBAAa,wBACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,EACjD,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,CAClD;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC,KACvD,qBAAqB;QASxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,iBAAiB,CAAC,CAAC,QAAQ,CAAC;MAMpD;IAEF,MAAM;QACJ;;;;;WAKG;4BACiB,MAAM,SAAS,OAAO,KAAG,qBAAqB;QAMlE;;;;;WAKG;8BACmB,MAAM,QAAQ,qBAAqB,KAAG,OAAO;MAGnE;CACH;AAED;;;;GAIG;AACH,qBAAa,8BACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,EACvD,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,CACxD;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,KAC7D,qBAAqB;QAYxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC;MAO1D;IAEF,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC,KAC7D,qBAAqB;QAMxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,uBAAuB,CAAC,CAAC,QAAQ,CAAC;MAG1D;CACH;AAED;;;;GAIG;AACH,qBAAa,6BACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EACtD,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CACvD;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAC5D,qBAAqB;QAOxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;MAIzD;IAEF,MAAM;QACJ;;;;;WAKG;4BACiB,MAAM,SAAS,OAAO,KAAG,qBAAqB;QAMlE;;;;;WAKG;8BACmB,MAAM,QAAQ,qBAAqB,KAAG,OAAO;MAGnE;CACH;AAED;;;;GAIG;AACH,qBAAa,6BACX,YACE,iBAAiB,CACf,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,EACtD,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,CACvD;IAEH,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAC5D,qBAAqB;QAOxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;MAIzD;IAEF,MAAM;QACJ;;;;;WAKG;4BAEO,MAAM,SACP,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC,KAC5D,qBAAqB;QAMxB;;;;;WAKG;8BAEO,MAAM,QACR,qBAAqB,KAC1B,oBAAoB,CAAC,sBAAsB,CAAC,CAAC,QAAQ,CAAC;MAGzD;CACH;AAED;;;GAGG;AACH,eAAO,MAAM,wBAAwB,0BAAiC,CAAC;AACvE,eAAO,MAAM,8BAA8B,gCAAuC,CAAC;AACnF,eAAO,MAAM,6BAA6B,+BAAsC,CAAC;AACjF,eAAO,MAAM,6BAA6B,+BAAsC,CAAC"}
@@ -0,0 +1,245 @@
1
+ import { encodeBase64, decodeBase64 } from './types.js';
2
+ import { aztecAddressSerializer, completeAddressSerializer, frSerializer, authWitnessSerializer, } from './core.js';
3
+ /**
4
+ * Serializer for the aztec_setScopes RPC method.
5
+ * Handles serialization of account scope settings between JSON-RPC format and native Aztec types.
6
+ * Scopes define which contracts can interact with an account.
7
+ */
8
+ export class AztecSetScopesSerializer {
9
+ constructor() {
10
+ this.params = {
11
+ /**
12
+ * Serializes scope setting parameters for RPC transport.
13
+ * @param method - The RPC method name
14
+ * @param value - The parameters containing an array of Aztec addresses representing scopes
15
+ * @returns Serialized scope data
16
+ */
17
+ serialize: (method, value) => {
18
+ const { scopes } = value;
19
+ return {
20
+ method,
21
+ serialized: encodeBase64(JSON.stringify(scopes.map((s) => aztecAddressSerializer.serialize(s)))),
22
+ };
23
+ },
24
+ /**
25
+ * Deserializes scope setting parameters from RPC transport.
26
+ * @param method - The RPC method name
27
+ * @param data - The serialized scope data
28
+ * @returns Deserialized scope parameters
29
+ */
30
+ deserialize: (method, data) => {
31
+ const scopes = JSON.parse(decodeBase64(data.serialized)).map((s) => aztecAddressSerializer.deserialize(s));
32
+ return { scopes };
33
+ },
34
+ };
35
+ this.result = {
36
+ /**
37
+ * Serializes the scope setting result.
38
+ * @param method - The RPC method name
39
+ * @param value - Boolean indicating success of the scope setting operation
40
+ * @returns Serialized result
41
+ */
42
+ serialize: (method, value) => {
43
+ return {
44
+ method,
45
+ serialized: encodeBase64(JSON.stringify(value)),
46
+ };
47
+ },
48
+ /**
49
+ * Deserializes the scope setting result.
50
+ * @param method - The RPC method name
51
+ * @param data - The serialized result data
52
+ * @returns Boolean indicating success
53
+ */
54
+ deserialize: (method, data) => {
55
+ return JSON.parse(decodeBase64(data.serialized));
56
+ },
57
+ };
58
+ }
59
+ }
60
+ /**
61
+ * Serializer for the aztec_registerAccount RPC method.
62
+ * Handles serialization of account registration data between JSON-RPC format and native Aztec types.
63
+ * Account registration involves creating a new account with a secret key and partial address.
64
+ */
65
+ export class AztecRegisterAccountSerializer {
66
+ constructor() {
67
+ this.params = {
68
+ /**
69
+ * Serializes account registration parameters for RPC transport.
70
+ * @param method - The RPC method name
71
+ * @param value - The parameters containing secret key and partial address
72
+ * @returns Serialized registration data
73
+ */
74
+ serialize: (method, value) => {
75
+ const { secretKey, partialAddress } = value;
76
+ return {
77
+ method,
78
+ serialized: encodeBase64(JSON.stringify([
79
+ frSerializer.serialize(secretKey),
80
+ frSerializer.serialize(partialAddress),
81
+ ])),
82
+ };
83
+ },
84
+ /**
85
+ * Deserializes account registration parameters from RPC transport.
86
+ * @param method - The RPC method name
87
+ * @param data - The serialized registration data
88
+ * @returns Deserialized registration parameters
89
+ */
90
+ deserialize: (method, data) => {
91
+ const [secretKey, partialAddress] = JSON.parse(decodeBase64(data.serialized));
92
+ return {
93
+ secretKey: frSerializer.deserialize(secretKey),
94
+ partialAddress: frSerializer.deserialize(partialAddress),
95
+ };
96
+ },
97
+ };
98
+ this.result = {
99
+ /**
100
+ * Serializes the account registration result.
101
+ * @param method - The RPC method name
102
+ * @param value - The complete address of the registered account
103
+ * @returns Serialized complete address
104
+ */
105
+ serialize: (method, value) => {
106
+ return {
107
+ method,
108
+ serialized: encodeBase64(completeAddressSerializer.serialize(value)),
109
+ };
110
+ },
111
+ /**
112
+ * Deserializes the account registration result.
113
+ * @param method - The RPC method name
114
+ * @param data - The serialized complete address
115
+ * @returns Deserialized complete address
116
+ */
117
+ deserialize: (method, data) => {
118
+ return completeAddressSerializer.deserialize(decodeBase64(data.serialized));
119
+ },
120
+ };
121
+ }
122
+ }
123
+ /**
124
+ * Serializer for the aztec_addAuthWitness RPC method.
125
+ * Handles serialization of authentication witness data between JSON-RPC format and native Aztec types.
126
+ * Auth witnesses are used to prove transaction authorization.
127
+ */
128
+ export class AztecAddAuthWitnessSerializer {
129
+ constructor() {
130
+ this.params = {
131
+ /**
132
+ * Serializes auth witness addition parameters for RPC transport.
133
+ * @param method - The RPC method name
134
+ * @param value - The parameters containing the auth witness to add
135
+ * @returns Serialized auth witness data
136
+ */
137
+ serialize: (method, value) => {
138
+ const { authWitness } = value;
139
+ return {
140
+ method,
141
+ serialized: encodeBase64(authWitnessSerializer.serialize(authWitness)),
142
+ };
143
+ },
144
+ /**
145
+ * Deserializes auth witness addition parameters from RPC transport.
146
+ * @param method - The RPC method name
147
+ * @param data - The serialized auth witness data
148
+ * @returns Deserialized auth witness parameters
149
+ */
150
+ deserialize: (method, data) => {
151
+ const authWitness = authWitnessSerializer.deserialize(decodeBase64(data.serialized));
152
+ return { authWitness };
153
+ },
154
+ };
155
+ this.result = {
156
+ /**
157
+ * Serializes the auth witness addition result.
158
+ * @param method - The RPC method name
159
+ * @param value - Boolean indicating success of the witness addition
160
+ * @returns Serialized result
161
+ */
162
+ serialize: (method, value) => {
163
+ return {
164
+ method,
165
+ serialized: encodeBase64(JSON.stringify(value)),
166
+ };
167
+ },
168
+ /**
169
+ * Deserializes the auth witness addition result.
170
+ * @param method - The RPC method name
171
+ * @param data - The serialized result data
172
+ * @returns Boolean indicating success
173
+ */
174
+ deserialize: (method, data) => {
175
+ return JSON.parse(decodeBase64(data.serialized));
176
+ },
177
+ };
178
+ }
179
+ }
180
+ /**
181
+ * Serializer for the aztec_getAuthWitness RPC method.
182
+ * Handles serialization of authentication witness retrieval between JSON-RPC format and native Aztec types.
183
+ * Retrieves auth witnesses associated with a specific message hash.
184
+ */
185
+ export class AztecGetAuthWitnessSerializer {
186
+ constructor() {
187
+ this.params = {
188
+ /**
189
+ * Serializes auth witness retrieval parameters for RPC transport.
190
+ * @param method - The RPC method name
191
+ * @param value - The parameters containing the message hash to look up
192
+ * @returns Serialized message hash data
193
+ */
194
+ serialize: (method, value) => {
195
+ const { messageHash } = value;
196
+ return {
197
+ method,
198
+ serialized: encodeBase64(frSerializer.serialize(messageHash)),
199
+ };
200
+ },
201
+ /**
202
+ * Deserializes auth witness retrieval parameters from RPC transport.
203
+ * @param method - The RPC method name
204
+ * @param data - The serialized message hash data
205
+ * @returns Deserialized message hash parameters
206
+ */
207
+ deserialize: (method, data) => {
208
+ const messageHash = frSerializer.deserialize(decodeBase64(data.serialized));
209
+ return { messageHash };
210
+ },
211
+ };
212
+ this.result = {
213
+ /**
214
+ * Serializes the auth witness retrieval result.
215
+ * @param method - The RPC method name
216
+ * @param value - Array of field elements representing auth witnesses
217
+ * @returns Serialized witness array
218
+ */
219
+ serialize: (method, value) => {
220
+ return {
221
+ method,
222
+ serialized: encodeBase64(JSON.stringify(value.map((w) => frSerializer.serialize(w)))),
223
+ };
224
+ },
225
+ /**
226
+ * Deserializes the auth witness retrieval result.
227
+ * @param method - The RPC method name
228
+ * @param data - The serialized witness array data
229
+ * @returns Array of deserialized field elements
230
+ */
231
+ deserialize: (method, data) => {
232
+ return JSON.parse(decodeBase64(data.serialized)).map((w) => frSerializer.deserialize(w));
233
+ },
234
+ };
235
+ }
236
+ }
237
+ /**
238
+ * Pre-instantiated serializer instances for Aztec account-related RPC methods.
239
+ * These instances can be used directly by the RPC handler implementation.
240
+ */
241
+ export const aztecSetScopesSerializer = new AztecSetScopesSerializer();
242
+ export const aztecRegisterAccountSerializer = new AztecRegisterAccountSerializer();
243
+ export const aztecAddAuthWitnessSerializer = new AztecAddAuthWitnessSerializer();
244
+ export const aztecGetAuthWitnessSerializer = new AztecGetAuthWitnessSerializer();
245
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYWNjb3VudC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9zZXJpYWxpemVycy9hY2NvdW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUVBLE9BQU8sRUFBRSxZQUFZLEVBQUUsWUFBWSxFQUFFLE1BQU0sWUFBWSxDQUFDO0FBQ3hELE9BQU8sRUFDTCxzQkFBc0IsRUFDdEIseUJBQXlCLEVBQ3pCLFlBQVksRUFDWixxQkFBcUIsR0FDdEIsTUFBTSxXQUFXLENBQUM7QUFHbkI7Ozs7R0FJRztBQUNILE1BQU0sT0FBTyx3QkFBd0I7SUFBckM7UUFPRSxXQUFNLEdBQUc7WUFDUDs7Ozs7ZUFLRztZQUNILFNBQVMsRUFBRSxDQUNULE1BQWMsRUFDZCxLQUF3RCxFQUNqQyxFQUFFO2dCQUN6QixNQUFNLEVBQUUsTUFBTSxFQUFFLEdBQUcsS0FBSyxDQUFDO2dCQUN6QixPQUFPO29CQUNMLE1BQU07b0JBQ04sVUFBVSxFQUFFLFlBQVksQ0FDdEIsSUFBSSxDQUFDLFNBQVMsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBZSxFQUFFLEVBQUUsQ0FBQyxzQkFBc0IsQ0FBQyxTQUFTLENBQUMsQ0FBQyxDQUFDLENBQUMsQ0FBQyxDQUNyRjtpQkFDRixDQUFDO1lBQ0osQ0FBQztZQUNEOzs7OztlQUtHO1lBQ0gsV0FBVyxFQUFFLENBQ1gsTUFBYyxFQUNkLElBQTJCLEVBQ3dCLEVBQUU7Z0JBQ3JELE1BQU0sTUFBTSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsWUFBWSxDQUFDLElBQUksQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQVMsRUFBRSxFQUFFLENBQ3pFLHNCQUFzQixDQUFDLFdBQVcsQ0FBQyxDQUFDLENBQUMsQ0FDdEMsQ0FBQztnQkFDRixPQUFPLEVBQUUsTUFBTSxFQUFFLENBQUM7WUFDcEIsQ0FBQztTQUNGLENBQUM7UUFFRixXQUFNLEdBQUc7WUFDUDs7Ozs7ZUFLRztZQUNI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
@@ -0,0 +1,40 @@
1
+ import type { ContractClassWithId } from '@aztec/circuits.js';
2
+ /**
3
+ * Serializes a ContractClassWithId instance to a JSON string.
4
+ * Handles the conversion of complex Aztec types (Fr, Buffer, FunctionSelector) to their string representations.
5
+ *
6
+ * The serialization process handles the following contract components:
7
+ * - version: Contract class version number
8
+ * - artifactHash: Fr value representing the hash of the contract artifact
9
+ * - privateFunctions: Array of private function definitions with selectors and VK hashes
10
+ * - publicFunctions: Array of public function definitions with selectors and bytecode
11
+ * - packedBytecode: Buffer containing the contract's packed bytecode
12
+ * - id: Fr value representing the contract class ID
13
+ *
14
+ * @param contract - The contract class with ID to serialize
15
+ * @returns JSON string representation of the contract class
16
+ * @throws If any contract components cannot be properly serialized
17
+ */
18
+ export declare function serializeContractClassWithId(contract: ContractClassWithId): string;
19
+ /**
20
+ * Deserializes a JSON string into a ContractClassWithId instance.
21
+ * Reconstructs complex Aztec types from their string representations.
22
+ *
23
+ * The deserialization process handles:
24
+ * - version: Preserved as-is
25
+ * - artifactHash: Reconstructed as Fr from hex string
26
+ * - privateFunctions: Array of functions with:
27
+ * * selector: Reconstructed as FunctionSelector
28
+ * * vkHash: Reconstructed as Fr
29
+ * - publicFunctions: Array of functions with:
30
+ * * selector: Reconstructed as FunctionSelector
31
+ * * bytecode: Reconstructed as Buffer
32
+ * - packedBytecode: Reconstructed as Buffer from hex string
33
+ * - id: Reconstructed as Fr from hex string
34
+ *
35
+ * @param json - The JSON string to deserialize, previously created by serializeContractClassWithId
36
+ * @returns Reconstructed ContractClassWithId instance
37
+ * @throws If the JSON string is malformed or contains invalid data
38
+ */
39
+ export declare function deserializeContractClassWithId(json: string): ContractClassWithId;
40
+ //# sourceMappingURL=contract-utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"contract-utils.d.ts","sourceRoot":"","sources":["../../src/serializers/contract-utils.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,mBAAmB,EAAmC,MAAM,oBAAoB,CAAC;AAI/F;;;;;;;;;;;;;;;GAeG;AACH,wBAAgB,4BAA4B,CAAC,QAAQ,EAAE,mBAAmB,GAAG,MAAM,CAkClF;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,8BAA8B,CAAC,IAAI,EAAE,MAAM,GAAG,mBAAmB,CA2BhF"}
@@ -0,0 +1,102 @@
1
+ import { FunctionSelector } from '@aztec/foundation/abi';
2
+ import { Fr } from '@aztec/aztec.js';
3
+ /**
4
+ * Serializes a ContractClassWithId instance to a JSON string.
5
+ * Handles the conversion of complex Aztec types (Fr, Buffer, FunctionSelector) to their string representations.
6
+ *
7
+ * The serialization process handles the following contract components:
8
+ * - version: Contract class version number
9
+ * - artifactHash: Fr value representing the hash of the contract artifact
10
+ * - privateFunctions: Array of private function definitions with selectors and VK hashes
11
+ * - publicFunctions: Array of public function definitions with selectors and bytecode
12
+ * - packedBytecode: Buffer containing the contract's packed bytecode
13
+ * - id: Fr value representing the contract class ID
14
+ *
15
+ * @param contract - The contract class with ID to serialize
16
+ * @returns JSON string representation of the contract class
17
+ * @throws If any contract components cannot be properly serialized
18
+ */
19
+ export function serializeContractClassWithId(contract) {
20
+ return JSON.stringify(contract, (key, value) => {
21
+ let result = value;
22
+ switch (key) {
23
+ case 'version':
24
+ result = value;
25
+ break;
26
+ case 'artifactHash':
27
+ result = value.toString();
28
+ break;
29
+ case 'privateFunctions':
30
+ result = value.map((fn) => ({
31
+ selector: fn.selector.toString(),
32
+ vkHash: fn.vkHash.toString(),
33
+ }));
34
+ break;
35
+ case 'publicFunctions':
36
+ result = value.map((fn) => ({
37
+ selector: fn.selector.toString(),
38
+ bytecode: fn.bytecode.toString('hex'),
39
+ }));
40
+ break;
41
+ case 'packedBytecode':
42
+ result = value.toString('hex');
43
+ break;
44
+ case 'id':
45
+ result = value.toString();
46
+ break;
47
+ default:
48
+ console.warn(`serializeContractClassWithId: Unknown key: ${key}`);
49
+ break;
50
+ }
51
+ return result;
52
+ });
53
+ }
54
+ /**
55
+ * Deserializes a JSON string into a ContractClassWithId instance.
56
+ * Reconstructs complex Aztec types from their string representations.
57
+ *
58
+ * The deserialization process handles:
59
+ * - version: Preserved as-is
60
+ * - artifactHash: Reconstructed as Fr from hex string
61
+ * - privateFunctions: Array of functions with:
62
+ * * selector: Reconstructed as FunctionSelector
63
+ * * vkHash: Reconstructed as Fr
64
+ * - publicFunctions: Array of functions with:
65
+ * * selector: Reconstructed as FunctionSelector
66
+ * * bytecode: Reconstructed as Buffer
67
+ * - packedBytecode: Reconstructed as Buffer from hex string
68
+ * - id: Reconstructed as Fr from hex string
69
+ *
70
+ * @param json - The JSON string to deserialize, previously created by serializeContractClassWithId
71
+ * @returns Reconstructed ContractClassWithId instance
72
+ * @throws If the JSON string is malformed or contains invalid data
73
+ */
74
+ export function deserializeContractClassWithId(json) {
75
+ return JSON.parse(json, (key, value) => {
76
+ switch (key) {
77
+ case 'version':
78
+ return value;
79
+ case 'artifactHash':
80
+ return Fr.fromHexString(value);
81
+ case 'privateFunctions':
82
+ return value.map((fn) => ({
83
+ selector: FunctionSelector.fromString(fn.selector),
84
+ vkHash: Fr.fromHexString(fn.vkHash),
85
+ }));
86
+ case 'publicFunctions':
87
+ return value.map((fn) => ({
88
+ selector: FunctionSelector.fromString(fn.selector),
89
+ bytecode: Buffer.from(fn.bytecode, 'hex'),
90
+ }));
91
+ case 'packedBytecode':
92
+ return Buffer.from(value, 'hex');
93
+ case 'id':
94
+ return Fr.fromHexString(value);
95
+ default:
96
+ console.warn(`deserializeContractClassWithId: Unknown key: ${key}`);
97
+ break;
98
+ }
99
+ return value;
100
+ });
101
+ }
102
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29udHJhY3QtdXRpbHMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvc2VyaWFsaXplcnMvY29udHJhY3QtdXRpbHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQ0EsT0FBTyxFQUFnRCxnQkFBZ0IsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZHLE9BQU8sRUFBRSxFQUFFLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUVyQzs7Ozs7Ozs7Ozs7Ozs7O0dBZUc7QUFDSCxNQUFNLFVBQVUsNEJBQTRCLENBQUMsUUFBNkI7SUFDeEUsT0FBTyxJQUFJLENBQUMsU0FBUyxDQUFDLFFBQVEsRUFBRSxDQUFDLEdBQUcsRUFBRSxLQUFLLEVBQUUsRUFBRTtRQUM3QyxJQUFJLE1BQU0sR0FBRyxLQUFLLENBQUM7UUFDbkIsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNaLEtBQUssU0FBUztnQkFDWixNQUFNLEdBQUcsS0FBSyxDQUFDO2dCQUNmLE1BQU07WUFDUixLQUFLLGNBQWM7Z0JBQ2pCLE1BQU0sR0FBRyxLQUFLLENBQUMsUUFBUSxFQUFFLENBQUM7Z0JBQzFCLE1BQU07WUFDUixLQUFLLGtCQUFrQjtnQkFDckIsTUFBTSxHQUFHLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFtQixFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUMzQyxRQUFRLEVBQUUsRUFBRSxDQUFDLFFBQVEsQ0FBQyxRQUFRLEVBQUU7b0JBQ2hDLE1BQU0sRUFBRSxFQUFFLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTtpQkFDN0IsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osTUFBTTtZQUNSLEtBQUssaUJBQWlCO2dCQUNwQixNQUFNLEdBQUcsS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQWtCLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQzFDLFFBQVEsRUFBRSxFQUFFLENBQUMsUUFBUSxDQUFDLFFBQVEsRUFBRTtvQkFDaEMsUUFBUSxFQUFFLEVBQUUsQ0FBQyxRQUFRLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQztpQkFDdEMsQ0FBQyxDQUFDLENBQUM7Z0JBQ0osTUFBTTtZQUNSLEtBQUssZ0JBQWdCO2dCQUNuQixNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsQ0FBQyxLQUFLLENBQUMsQ0FBQztnQkFDL0IsTUFBTTtZQUNSLEtBQUssSUFBSTtnQkFDUCxNQUFNLEdBQUcsS0FBSyxDQUFDLFFBQVEsRUFBRSxDQUFDO2dCQUMxQixNQUFNO1lBQ1I7Z0JBQ0UsT0FBTyxDQUFDLElBQUksQ0FBQyw4Q0FBOEMsR0FBRyxFQUFFLENBQUMsQ0FBQztnQkFDbEUsTUFBTTtRQUNWLENBQUM7UUFDRCxPQUFPLE1BQU0sQ0FBQztJQUNoQixDQUFDLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7Ozs7Ozs7Ozs7Ozs7Ozs7OztHQW1CRztBQUNILE1BQU0sVUFBVSw4QkFBOEIsQ0FBQyxJQUFZO0lBQ3pELE9BQU8sSUFBSSxDQUFDLEtBQUssQ0FBQyxJQUFJLEVBQUUsQ0FBQyxHQUFHLEVBQUUsS0FBSyxFQUFFLEVBQUU7UUFDckMsUUFBUSxHQUFHLEVBQUUsQ0FBQztZQUNaLEtBQUssU0FBUztnQkFDWixPQUFPLEtBQUssQ0FBQztZQUNmLEtBQUssY0FBYztnQkFDakIsT0FBTyxFQUFFLENBQUMsYUFBYSxDQUFDLEtBQUssQ0FBQyxDQUFDO1lBQ2pDLEtBQUssa0JBQWtCO2dCQUNyQixPQUFPLEtBQUssQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUF3QyxFQUFFLEVBQUUsQ0FBQyxDQUFDO29CQUM5RCxRQUFRLEVBQUUsZ0JBQWdCLENBQUMsVUFBVSxDQUFDLEVBQUUsQ0FBQyxRQUFRLENBQUM7b0JBQ2xELE1BQU0sRUFBRSxFQUFFLENBQUMsYUFBYSxDQUFDLEVBQUUsQ0FBQyxNQUFNLENBQUM7aUJBQ3BDLENBQUMsQ0FBQyxDQUFDO1lBQ04sS0FBSyxpQkFBaUI7Z0JBQ3BCLE9BQU8sS0FBSyxDQUFDLEdBQUcsQ0FBQyxDQUFDLEVBQTBDLEVBQUUsRUFBRSxDQUFDLENBQUM7b0JBQ2hFLFFBQVEsRUFBRSxnQkFBZ0IsQ0FBQyxVQUFVLENBQUMsRUFBRSxDQUFDLFFBQVEsQ0FBQztvQkFDbEQsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsRUFBRSxDQUFDLFFBQVEsRUFBRSxLQUFLLENBQUM7aUJBQzFDLENBQUMsQ0FBQyxDQUFDO1lBQ04sS0FBSyxnQkFBZ0I7Z0JBQ25CLE9BQU8sTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLEVBQUUsS0FBSyxDQUFDLENBQUM7WUFDbkMsS0FBSyxJQUFJO2dCQUNQLE9BQU8sRUFBRSxDQUFDLGFBQWEsQ0FBQyxLQUFLLENBQUMsQ0FBQztZQUNqQztnQkFDRSxPQUFPLENBQUMsSUFBSSxDQUFDLGdEQUFnRCxHQUFHLEVBQUUsQ0FBQyxDQUFDO2dCQUNwRSxNQUFNO1FBQ1YsQ0FBQztRQUNELE9BQU8sS0FBSyxDQUFDO0lBQ2YsQ0FBQyxDQUFDLENBQUM7QUFDTCxDQUFDIn0=