@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,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":"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"}
|
@@ -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=
|