@walletmesh/aztec-rpc-wallet 0.1.1 → 0.3.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 +24 -0
- package/README.md +4 -4
- package/dist/.tsbuildinfo +1 -1
- package/dist/aztecRemoteWallet.d.ts +4 -8
- package/dist/aztecRemoteWallet.d.ts.map +1 -1
- package/dist/aztecRemoteWallet.js +5 -30
- package/dist/chainProvider.d.ts.map +1 -1
- package/dist/chainProvider.js +1 -1
- package/dist/contractArtifactCache.d.ts.map +1 -1
- package/dist/contractArtifactCache.js +20 -9
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +1 -1
- package/dist/handlers/aztecAccountWallet.d.ts.map +1 -1
- package/dist/handlers/aztecAccountWallet.js +12 -45
- package/dist/handlers/transactions.d.ts.map +1 -1
- package/dist/handlers/transactions.js +11 -3
- package/dist/serializers/account.d.ts +24 -24
- package/dist/serializers/account.d.ts.map +1 -1
- package/dist/serializers/account.js +51 -51
- package/dist/serializers/contract.d.ts +22 -76
- package/dist/serializers/contract.d.ts.map +1 -1
- package/dist/serializers/contract.js +68 -120
- package/dist/serializers/index.d.ts +0 -4
- package/dist/serializers/index.d.ts.map +1 -1
- package/dist/serializers/index.js +15 -20
- package/dist/serializers/log.d.ts +16 -16
- package/dist/serializers/log.d.ts.map +1 -1
- package/dist/serializers/log.js +66 -64
- package/dist/serializers/note.d.ts +18 -18
- package/dist/serializers/note.d.ts.map +1 -1
- package/dist/serializers/note.js +54 -51
- package/dist/serializers/transaction.d.ts +25 -26
- package/dist/serializers/transaction.d.ts.map +1 -1
- package/dist/serializers/transaction.js +92 -44
- package/dist/types.d.ts +8 -31
- package/dist/types.d.ts.map +1 -1
- package/dist/types.js +1 -1
- package/docs/README.md +264 -0
- package/docs/classes/AztecChainProvider.md +553 -0
- package/docs/classes/AztecChainWallet.md +409 -0
- package/docs/classes/AztecProvider.md +1112 -0
- package/docs/classes/AztecWalletError.md +213 -0
- package/docs/classes/ContractArtifactCache.md +81 -0
- package/docs/globals.md +34 -0
- package/docs/interfaces/AztecWalletBaseMethodMap.md +135 -0
- package/docs/interfaces/AztecWalletEventMap.md +17 -0
- package/docs/interfaces/AztecWalletMethodMap.md +1012 -0
- package/docs/type-aliases/AztecChainId.md +11 -0
- package/docs/type-aliases/AztecChainWalletMiddleware.md +13 -0
- package/docs/type-aliases/AztecWalletContext.md +29 -0
- package/docs/type-aliases/AztecWalletMethodHandler.md +37 -0
- package/docs/type-aliases/AztecWalletMiddleware.md +13 -0
- package/docs/type-aliases/AztecWalletRouterClient.md +13 -0
- package/docs/type-aliases/TransactionFunctionCall.md +33 -0
- package/docs/type-aliases/TransactionParams.md +27 -0
- package/docs/variables/AztecWalletErrorMap.md +13 -0
- package/package.json +11 -11
- package/src/aztecRemoteWallet.test.ts +23 -65
- package/src/aztecRemoteWallet.ts +8 -36
- package/src/chainProvider.test.ts +117 -38
- package/src/chainProvider.ts +1 -7
- package/src/contractArtifactCache.test.ts +28 -45
- package/src/contractArtifactCache.ts +20 -10
- package/src/errors.ts +0 -1
- package/src/handlers/aztecAccountWallet.test.ts +12 -86
- package/src/handlers/aztecAccountWallet.ts +20 -78
- package/src/handlers/transactions.ts +16 -2
- package/src/provider.test.ts +0 -2
- package/src/serializers/account.test.ts +19 -20
- package/src/serializers/account.ts +65 -65
- package/src/serializers/contract.test.ts +4 -140
- package/src/serializers/contract.ts +98 -176
- package/src/serializers/index.test.ts +30 -28
- package/src/serializers/index.ts +15 -33
- package/src/serializers/log.test.ts +42 -48
- package/src/serializers/log.ts +85 -83
- package/src/serializers/note.test.ts +43 -16
- package/src/serializers/note.ts +62 -63
- package/src/serializers/transaction.test.ts +48 -41
- package/src/serializers/transaction.ts +154 -66
- package/src/types.ts +8 -8
- package/src/wallet.test.ts +3 -3
- package/tsconfig.json +1 -1
- package/dist/serializers/transaction-utils.d.ts +0 -51
- package/dist/serializers/transaction-utils.d.ts.map +0 -1
- package/dist/serializers/transaction-utils.js +0 -94
- package/src/serializers/transaction-utils.ts +0 -161
@@ -40,11 +40,16 @@ describe('Transaction Serializers', () => {
|
|
40
40
|
};
|
41
41
|
const params = { exec };
|
42
42
|
|
43
|
-
const serialized = aztecCreateTxExecutionRequestSerializer.params.serialize(METHOD, params);
|
43
|
+
const serialized = await aztecCreateTxExecutionRequestSerializer.params.serialize(METHOD, params);
|
44
44
|
expect(serialized.method).toBe(METHOD);
|
45
45
|
|
46
|
-
const deserialized = aztecCreateTxExecutionRequestSerializer.params.deserialize(
|
47
|
-
|
46
|
+
const deserialized = await aztecCreateTxExecutionRequestSerializer.params.deserialize(
|
47
|
+
METHOD,
|
48
|
+
serialized,
|
49
|
+
);
|
50
|
+
expect(deserialized.exec.calls).toEqual([]);
|
51
|
+
expect(deserialized.exec.fee.gasSettings.equals(randomTx.txContext.gasSettings)).toBe(true);
|
52
|
+
expect(deserialized.exec.fee.paymentMethod).toBeDefined();
|
48
53
|
});
|
49
54
|
|
50
55
|
it('should handle complex function calls in params', async () => {
|
@@ -69,30 +74,32 @@ describe('Transaction Serializers', () => {
|
|
69
74
|
};
|
70
75
|
const params = { exec };
|
71
76
|
|
72
|
-
const serialized = aztecCreateTxExecutionRequestSerializer.params.serialize(METHOD, params);
|
73
|
-
const deserialized = aztecCreateTxExecutionRequestSerializer.params.deserialize(
|
77
|
+
const serialized = await aztecCreateTxExecutionRequestSerializer.params.serialize(METHOD, params);
|
78
|
+
const deserialized = await aztecCreateTxExecutionRequestSerializer.params.deserialize(
|
79
|
+
METHOD,
|
80
|
+
serialized,
|
81
|
+
);
|
74
82
|
|
75
|
-
|
76
|
-
expect(deserialized.exec.calls[0]
|
77
|
-
|
83
|
+
// biome-ignore lint/style/noNonNullAssertion: test
|
84
|
+
expect(deserialized.exec.calls[0]!.name).toBe(exec.calls[0]!.name);
|
85
|
+
// biome-ignore lint/style/noNonNullAssertion: test
|
86
|
+
expect(deserialized.exec.calls[0]!.to.toString()).toBe(exec.calls[0]!.to.toString());
|
87
|
+
// biome-ignore lint/style/noNonNullAssertion: test
|
88
|
+
expect(deserialized.exec.calls[0]!.type).toBe(exec.calls[0]!.type);
|
78
89
|
});
|
79
90
|
|
80
91
|
it('should serialize and deserialize result', async () => {
|
81
92
|
const result = await TxExecutionRequest.random();
|
82
93
|
|
83
|
-
const serialized = aztecCreateTxExecutionRequestSerializer.result.serialize(METHOD, result);
|
94
|
+
const serialized = await aztecCreateTxExecutionRequestSerializer.result.serialize(METHOD, result);
|
84
95
|
expect(serialized.method).toBe(METHOD);
|
85
96
|
|
86
|
-
const deserialized = aztecCreateTxExecutionRequestSerializer.result.deserialize(
|
97
|
+
const deserialized = await aztecCreateTxExecutionRequestSerializer.result.deserialize(
|
98
|
+
METHOD,
|
99
|
+
serialized,
|
100
|
+
);
|
87
101
|
expect(deserialized.toString()).toBe(result.toString());
|
88
102
|
});
|
89
|
-
|
90
|
-
it('should handle invalid params', () => {
|
91
|
-
expect(() => {
|
92
|
-
// @ts-ignore - Testing invalid input
|
93
|
-
aztecCreateTxExecutionRequestSerializer.params.serialize(METHOD, { exec: null });
|
94
|
-
}).toThrow();
|
95
|
-
});
|
96
103
|
});
|
97
104
|
|
98
105
|
describe('aztec_getTxEffect', () => {
|
@@ -102,10 +109,10 @@ describe('Transaction Serializers', () => {
|
|
102
109
|
const txHash = await TxHash.random();
|
103
110
|
const params = { txHash };
|
104
111
|
|
105
|
-
const serialized = aztecGetTxEffectSerializer.params.serialize(METHOD, params);
|
112
|
+
const serialized = await aztecGetTxEffectSerializer.params.serialize(METHOD, params);
|
106
113
|
expect(serialized.method).toBe(METHOD);
|
107
114
|
|
108
|
-
const deserialized = aztecGetTxEffectSerializer.params.deserialize(METHOD, serialized);
|
115
|
+
const deserialized = await aztecGetTxEffectSerializer.params.deserialize(METHOD, serialized);
|
109
116
|
expect(deserialized.txHash.toString()).toBe(txHash.toString());
|
110
117
|
});
|
111
118
|
|
@@ -120,8 +127,8 @@ describe('Transaction Serializers', () => {
|
|
120
127
|
data: effect,
|
121
128
|
};
|
122
129
|
|
123
|
-
const serialized = aztecGetTxEffectSerializer.result.serialize(METHOD, result);
|
124
|
-
const deserialized = aztecGetTxEffectSerializer.result.deserialize(METHOD, serialized);
|
130
|
+
const serialized = await aztecGetTxEffectSerializer.result.serialize(METHOD, result);
|
131
|
+
const deserialized = await aztecGetTxEffectSerializer.result.deserialize(METHOD, serialized);
|
125
132
|
|
126
133
|
expect(deserialized.l2BlockNumber).toBe(result.l2BlockNumber);
|
127
134
|
expect(deserialized.data).toBeDefined();
|
@@ -135,10 +142,10 @@ describe('Transaction Serializers', () => {
|
|
135
142
|
const txHash = await TxHash.random();
|
136
143
|
const params = { txHash };
|
137
144
|
|
138
|
-
const serialized = aztecGetTxReceiptSerializer.params.serialize(METHOD, params);
|
145
|
+
const serialized = await aztecGetTxReceiptSerializer.params.serialize(METHOD, params);
|
139
146
|
expect(serialized.method).toBe(METHOD);
|
140
147
|
|
141
|
-
const deserialized = aztecGetTxReceiptSerializer.params.deserialize(METHOD, serialized);
|
148
|
+
const deserialized = await aztecGetTxReceiptSerializer.params.deserialize(METHOD, serialized);
|
142
149
|
expect(deserialized.txHash.toString()).toBe(txHash.toString());
|
143
150
|
});
|
144
151
|
|
@@ -152,8 +159,8 @@ describe('Transaction Serializers', () => {
|
|
152
159
|
undefined,
|
153
160
|
);
|
154
161
|
|
155
|
-
const serialized = aztecGetTxReceiptSerializer.result.serialize(METHOD, receipt);
|
156
|
-
const deserialized = aztecGetTxReceiptSerializer.result.deserialize(METHOD, serialized);
|
162
|
+
const serialized = await aztecGetTxReceiptSerializer.result.serialize(METHOD, receipt);
|
163
|
+
const deserialized = await aztecGetTxReceiptSerializer.result.deserialize(METHOD, serialized);
|
157
164
|
|
158
165
|
expect(deserialized.txHash.toString()).toBe(receipt.txHash.toString());
|
159
166
|
expect(deserialized.error).toBe(receipt.error);
|
@@ -167,20 +174,20 @@ describe('Transaction Serializers', () => {
|
|
167
174
|
const tx = await Tx.random();
|
168
175
|
const params = { tx };
|
169
176
|
|
170
|
-
const serialized = aztecSendTxSerializer.params.serialize(METHOD, params);
|
177
|
+
const serialized = await aztecSendTxSerializer.params.serialize(METHOD, params);
|
171
178
|
expect(serialized.method).toBe(METHOD);
|
172
179
|
|
173
|
-
const deserialized = aztecSendTxSerializer.params.deserialize(METHOD, serialized);
|
180
|
+
const deserialized = await aztecSendTxSerializer.params.deserialize(METHOD, serialized);
|
174
181
|
expect(deserialized.tx.toBuffer().toString('hex')).toBe(tx.toBuffer().toString('hex'));
|
175
182
|
});
|
176
183
|
|
177
184
|
it('should serialize and deserialize result', async () => {
|
178
185
|
const result = await TxHash.random();
|
179
186
|
|
180
|
-
const serialized = aztecSendTxSerializer.result.serialize(METHOD, result);
|
187
|
+
const serialized = await aztecSendTxSerializer.result.serialize(METHOD, result);
|
181
188
|
expect(serialized.method).toBe(METHOD);
|
182
189
|
|
183
|
-
const deserialized = aztecSendTxSerializer.result.deserialize(METHOD, serialized);
|
190
|
+
const deserialized = await aztecSendTxSerializer.result.deserialize(METHOD, serialized);
|
184
191
|
expect(deserialized.toString()).toBe(result.toString());
|
185
192
|
});
|
186
193
|
});
|
@@ -198,10 +205,10 @@ describe('Transaction Serializers', () => {
|
|
198
205
|
profile: false,
|
199
206
|
};
|
200
207
|
|
201
|
-
const serialized = aztecSimulateTxSerializer.params.serialize(METHOD, params);
|
208
|
+
const serialized = await aztecSimulateTxSerializer.params.serialize(METHOD, params);
|
202
209
|
expect(serialized.method).toBe(METHOD);
|
203
210
|
|
204
|
-
const deserialized = aztecSimulateTxSerializer.params.deserialize(METHOD, serialized);
|
211
|
+
const deserialized = await aztecSimulateTxSerializer.params.deserialize(METHOD, serialized);
|
205
212
|
expect(deserialized.txRequest.toString()).toBe((params.txRequest as TxExecutionRequest).toString());
|
206
213
|
expect(deserialized.simulatePublic).toBe(params.simulatePublic);
|
207
214
|
expect(deserialized.msgSender?.toString()).toBe(params.msgSender.toString());
|
@@ -213,8 +220,8 @@ describe('Transaction Serializers', () => {
|
|
213
220
|
it('should serialize and deserialize result', async () => {
|
214
221
|
const result = await TxSimulationResult.random();
|
215
222
|
|
216
|
-
const serialized = aztecSimulateTxSerializer.result.serialize(METHOD, result);
|
217
|
-
const deserialized = aztecSimulateTxSerializer.result.deserialize(METHOD, serialized);
|
223
|
+
const serialized = await aztecSimulateTxSerializer.result.serialize(METHOD, result);
|
224
|
+
const deserialized = await aztecSimulateTxSerializer.result.deserialize(METHOD, serialized);
|
218
225
|
|
219
226
|
expect(deserialized.privateExecutionResult).toBeDefined();
|
220
227
|
expect(deserialized.publicInputs).toBeDefined();
|
@@ -253,8 +260,8 @@ describe('Transaction Serializers', () => {
|
|
253
260
|
publicOutput.revertReason = await SimulationError.random();
|
254
261
|
const result = new TxSimulationResult(privateExecutionResult, publicInputs, publicOutput, undefined);
|
255
262
|
|
256
|
-
const serialized = aztecSimulateTxSerializer.result.serialize(METHOD, result);
|
257
|
-
const deserialized = aztecSimulateTxSerializer.result.deserialize(METHOD, serialized);
|
263
|
+
const serialized = await aztecSimulateTxSerializer.result.serialize(METHOD, result);
|
264
|
+
const deserialized = await aztecSimulateTxSerializer.result.deserialize(METHOD, serialized);
|
258
265
|
|
259
266
|
const output = deserialized.publicOutput;
|
260
267
|
expect(output).toBeDefined();
|
@@ -273,10 +280,10 @@ describe('Transaction Serializers', () => {
|
|
273
280
|
const privateExecutionResult = await PrivateExecutionResult.random();
|
274
281
|
const params = { txRequest, privateExecutionResult };
|
275
282
|
|
276
|
-
const serialized = aztecProveTxSerializer.params.serialize(METHOD, params);
|
283
|
+
const serialized = await aztecProveTxSerializer.params.serialize(METHOD, params);
|
277
284
|
expect(serialized.method).toBe(METHOD);
|
278
285
|
|
279
|
-
const deserialized = aztecProveTxSerializer.params.deserialize(METHOD, serialized);
|
286
|
+
const deserialized = await aztecProveTxSerializer.params.deserialize(METHOD, serialized);
|
280
287
|
expect(deserialized.txRequest.toString()).toBe(txRequest.toString());
|
281
288
|
expect(jsonStringify(deserialized.privateExecutionResult)).toEqual(
|
282
289
|
jsonStringify(privateExecutionResult),
|
@@ -286,10 +293,10 @@ describe('Transaction Serializers', () => {
|
|
286
293
|
it('should serialize and deserialize result', async () => {
|
287
294
|
const result = await TxProvingResult.random();
|
288
295
|
|
289
|
-
const serialized = aztecProveTxSerializer.result.serialize(METHOD, result);
|
296
|
+
const serialized = await aztecProveTxSerializer.result.serialize(METHOD, result);
|
290
297
|
expect(serialized.method).toBe(METHOD);
|
291
298
|
|
292
|
-
const deserialized = aztecProveTxSerializer.result.deserialize(METHOD, serialized);
|
299
|
+
const deserialized = await aztecProveTxSerializer.result.deserialize(METHOD, serialized);
|
293
300
|
expect(jsonStringify(deserialized)).toEqual(jsonStringify(result));
|
294
301
|
});
|
295
302
|
|
@@ -302,8 +309,8 @@ describe('Transaction Serializers', () => {
|
|
302
309
|
privateExecutionResult.entrypoint.nestedExecutions.push(nestedExecution.entrypoint);
|
303
310
|
|
304
311
|
const params = { txRequest, privateExecutionResult };
|
305
|
-
const serialized = aztecProveTxSerializer.params.serialize(METHOD, params);
|
306
|
-
const deserialized = aztecProveTxSerializer.params.deserialize(METHOD, serialized);
|
312
|
+
const serialized = await aztecProveTxSerializer.params.serialize(METHOD, params);
|
313
|
+
const deserialized = await aztecProveTxSerializer.params.deserialize(METHOD, serialized);
|
307
314
|
|
308
315
|
expect(jsonStringify(deserialized.privateExecutionResult)).toEqual(
|
309
316
|
jsonStringify(privateExecutionResult),
|
@@ -1,17 +1,40 @@
|
|
1
1
|
import type { AztecWalletMethodMap } from '../types.js';
|
2
2
|
import type { JSONRPCSerializedData, JSONRPCSerializer } from '@walletmesh/jsonrpc';
|
3
|
-
import { TxProvingResult } from '@aztec/circuit-types';
|
4
3
|
import {
|
4
|
+
FunctionCall,
|
5
5
|
PrivateExecutionResult,
|
6
6
|
TxEffect,
|
7
7
|
TxSimulationResult,
|
8
8
|
inBlockSchemaFor,
|
9
9
|
TxHash,
|
10
|
+
TxProvingResult,
|
10
11
|
} from '@aztec/circuit-types';
|
11
|
-
import {
|
12
|
-
import {
|
12
|
+
import { GasSettings } from '@aztec/circuits.js';
|
13
|
+
import {
|
14
|
+
AuthWitness,
|
15
|
+
AztecAddress,
|
16
|
+
Fr,
|
17
|
+
FunctionSelector,
|
18
|
+
HashedValues,
|
19
|
+
NoFeePaymentMethod,
|
20
|
+
TxExecutionRequest,
|
21
|
+
TxReceipt,
|
22
|
+
Tx,
|
23
|
+
} from '@aztec/aztec.js';
|
24
|
+
import { AbiTypeSchema, type FunctionType } from '@aztec/foundation/abi';
|
13
25
|
|
14
26
|
import { jsonParseWithSchema, jsonStringify } from '@aztec/foundation/json-rpc';
|
27
|
+
import type { ExecutionRequestInit, FeeOptions } from '@aztec/aztec.js/entrypoint';
|
28
|
+
|
29
|
+
interface SerializedFunctionCall {
|
30
|
+
name: string;
|
31
|
+
to: string;
|
32
|
+
selector: string;
|
33
|
+
type: string;
|
34
|
+
isStatic: boolean;
|
35
|
+
args: string[];
|
36
|
+
returnTypes: string[];
|
37
|
+
}
|
15
38
|
|
16
39
|
/**
|
17
40
|
* Serializer for the aztec_createTxExecutionRequest RPC method.
|
@@ -25,34 +48,96 @@ export class AztecCreateTxExecutionRequestSerializer
|
|
25
48
|
>
|
26
49
|
{
|
27
50
|
params = {
|
28
|
-
serialize: (
|
51
|
+
serialize: async (
|
29
52
|
method: string,
|
30
53
|
value: AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'],
|
31
|
-
): JSONRPCSerializedData => {
|
54
|
+
): Promise<JSONRPCSerializedData> => {
|
32
55
|
const { exec } = value;
|
56
|
+
|
57
|
+
const calls = exec.calls.map((call: FunctionCall) => {
|
58
|
+
return {
|
59
|
+
name: call.name,
|
60
|
+
to: jsonStringify(call.to),
|
61
|
+
selector: jsonStringify(call.selector),
|
62
|
+
type: call.type,
|
63
|
+
isStatic: call.isStatic,
|
64
|
+
args: call.args.map((arg) => jsonStringify(arg)),
|
65
|
+
returnTypes: call.returnTypes.map((r) => jsonStringify(r)),
|
66
|
+
};
|
67
|
+
});
|
68
|
+
const authWitnesses = exec.authWitnesses ? exec.authWitnesses.map((w) => jsonStringify(w)) : undefined;
|
69
|
+
const hashedArguments = exec.hashedArguments
|
70
|
+
? exec.hashedArguments.map((h) => jsonStringify(h))
|
71
|
+
: undefined;
|
72
|
+
const fee = { gasSettings: jsonStringify(exec.fee.gasSettings) };
|
73
|
+
const nonce = exec.nonce ? jsonStringify(exec.nonce) : undefined;
|
74
|
+
|
33
75
|
return {
|
34
76
|
method,
|
35
|
-
serialized:
|
77
|
+
serialized: JSON.stringify({
|
78
|
+
calls,
|
79
|
+
fee,
|
80
|
+
authWitnesses,
|
81
|
+
hashedArguments,
|
82
|
+
nonce,
|
83
|
+
cancellable: exec.cancellable,
|
84
|
+
}),
|
36
85
|
};
|
37
86
|
},
|
38
|
-
deserialize: (
|
39
|
-
|
87
|
+
deserialize: async (
|
88
|
+
_method: string,
|
40
89
|
data: JSONRPCSerializedData,
|
41
|
-
): AztecWalletMethodMap['aztec_createTxExecutionRequest']['params'] => {
|
42
|
-
const
|
90
|
+
): Promise<AztecWalletMethodMap['aztec_createTxExecutionRequest']['params']> => {
|
91
|
+
const parsed = JSON.parse(data.serialized);
|
92
|
+
|
93
|
+
const calls: FunctionCall[] = await Promise.all(
|
94
|
+
parsed.calls.map(async (call: SerializedFunctionCall) => {
|
95
|
+
return new FunctionCall(
|
96
|
+
call.name,
|
97
|
+
await jsonParseWithSchema(call.to, AztecAddress.schema),
|
98
|
+
await jsonParseWithSchema(call.selector, FunctionSelector.schema),
|
99
|
+
call.type as FunctionType,
|
100
|
+
call.isStatic,
|
101
|
+
await Promise.all(call.args.map(async (arg: string) => jsonParseWithSchema(arg, Fr.schema))),
|
102
|
+
await Promise.all(
|
103
|
+
call.returnTypes.map(async (t: string) => jsonParseWithSchema(t, AbiTypeSchema)),
|
104
|
+
),
|
105
|
+
);
|
106
|
+
}),
|
107
|
+
);
|
108
|
+
const authWitnesses = parsed.authWitnesses
|
109
|
+
? parsed.authWitnesses.map(async (w: string) => await jsonParseWithSchema(w, AuthWitness.schema))
|
110
|
+
: undefined;
|
111
|
+
const hashedArguments = parsed.hashedArguments
|
112
|
+
? parsed.hashedArguments.map(async (h: string) => await jsonParseWithSchema(h, HashedValues.schema))
|
113
|
+
: undefined;
|
114
|
+
const cancellable = parsed.cancellable;
|
115
|
+
const nonce = parsed.nonce ? await jsonParseWithSchema(parsed.nonce, Fr.schema) : undefined;
|
116
|
+
|
117
|
+
const fee: FeeOptions = {
|
118
|
+
paymentMethod: new NoFeePaymentMethod(), // Default, caller should override
|
119
|
+
gasSettings: await jsonParseWithSchema(parsed.fee.gasSettings, GasSettings.schema),
|
120
|
+
};
|
121
|
+
|
122
|
+
const exec: ExecutionRequestInit = { calls, fee };
|
123
|
+
if (authWitnesses) exec.authWitnesses = authWitnesses;
|
124
|
+
if (hashedArguments) exec.hashedArguments = hashedArguments;
|
125
|
+
if (nonce) exec.nonce = nonce;
|
126
|
+
if (cancellable) exec.cancellable = cancellable;
|
127
|
+
|
43
128
|
return { exec };
|
44
129
|
},
|
45
130
|
};
|
46
131
|
|
47
132
|
result = {
|
48
|
-
serialize: (method: string, value: TxExecutionRequest): JSONRPCSerializedData => {
|
133
|
+
serialize: async (method: string, value: TxExecutionRequest): Promise<JSONRPCSerializedData> => {
|
49
134
|
return {
|
50
135
|
method,
|
51
136
|
serialized: jsonStringify(value),
|
52
137
|
};
|
53
138
|
},
|
54
|
-
deserialize: (
|
55
|
-
return jsonParseWithSchema(data.serialized, TxExecutionRequest.schema);
|
139
|
+
deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxExecutionRequest> => {
|
140
|
+
return await jsonParseWithSchema(data.serialized, TxExecutionRequest.schema);
|
56
141
|
},
|
57
142
|
};
|
58
143
|
}
|
@@ -69,10 +154,10 @@ export class AztecProveTxSerializer
|
|
69
154
|
>
|
70
155
|
{
|
71
156
|
params = {
|
72
|
-
serialize: (
|
157
|
+
serialize: async (
|
73
158
|
method: string,
|
74
159
|
value: AztecWalletMethodMap['aztec_proveTx']['params'],
|
75
|
-
): JSONRPCSerializedData => {
|
160
|
+
): Promise<JSONRPCSerializedData> => {
|
76
161
|
const { txRequest, privateExecutionResult } = value;
|
77
162
|
return {
|
78
163
|
method,
|
@@ -82,27 +167,30 @@ export class AztecProveTxSerializer
|
|
82
167
|
}),
|
83
168
|
};
|
84
169
|
},
|
85
|
-
deserialize: (
|
86
|
-
|
170
|
+
deserialize: async (
|
171
|
+
_method: string,
|
87
172
|
data: JSONRPCSerializedData,
|
88
|
-
): AztecWalletMethodMap['aztec_proveTx']['params'] => {
|
173
|
+
): Promise<AztecWalletMethodMap['aztec_proveTx']['params']> => {
|
89
174
|
const { txRequest, privateExecutionResult } = JSON.parse(data.serialized);
|
90
175
|
return {
|
91
|
-
txRequest: jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
|
92
|
-
privateExecutionResult: jsonParseWithSchema(
|
176
|
+
txRequest: await jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
|
177
|
+
privateExecutionResult: await jsonParseWithSchema(
|
178
|
+
privateExecutionResult,
|
179
|
+
PrivateExecutionResult.schema,
|
180
|
+
),
|
93
181
|
};
|
94
182
|
},
|
95
183
|
};
|
96
184
|
|
97
185
|
result = {
|
98
|
-
serialize: (method: string, value: TxProvingResult): JSONRPCSerializedData => {
|
186
|
+
serialize: async (method: string, value: TxProvingResult): Promise<JSONRPCSerializedData> => {
|
99
187
|
return {
|
100
188
|
method,
|
101
189
|
serialized: jsonStringify(value),
|
102
190
|
};
|
103
191
|
},
|
104
|
-
deserialize: (
|
105
|
-
return jsonParseWithSchema(data.serialized, TxProvingResult.schema);
|
192
|
+
deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxProvingResult> => {
|
193
|
+
return await jsonParseWithSchema(data.serialized, TxProvingResult.schema);
|
106
194
|
},
|
107
195
|
};
|
108
196
|
}
|
@@ -119,39 +207,39 @@ export class AztecSendTxSerializer
|
|
119
207
|
>
|
120
208
|
{
|
121
209
|
params = {
|
122
|
-
serialize: (
|
210
|
+
serialize: async (
|
123
211
|
method: string,
|
124
212
|
value: AztecWalletMethodMap['aztec_sendTx']['params'],
|
125
|
-
): JSONRPCSerializedData => {
|
213
|
+
): Promise<JSONRPCSerializedData> => {
|
126
214
|
const { tx } = value;
|
127
215
|
return {
|
128
216
|
method,
|
129
217
|
serialized: jsonStringify(tx),
|
130
218
|
};
|
131
219
|
},
|
132
|
-
deserialize: (
|
133
|
-
|
220
|
+
deserialize: async (
|
221
|
+
_method: string,
|
134
222
|
data: JSONRPCSerializedData,
|
135
|
-
): AztecWalletMethodMap['aztec_sendTx']['params'] => {
|
136
|
-
return { tx: jsonParseWithSchema(data.serialized, Tx.schema) };
|
223
|
+
): Promise<AztecWalletMethodMap['aztec_sendTx']['params']> => {
|
224
|
+
return { tx: await jsonParseWithSchema(data.serialized, Tx.schema) };
|
137
225
|
},
|
138
226
|
};
|
139
227
|
|
140
228
|
result = {
|
141
|
-
serialize: (
|
229
|
+
serialize: async (
|
142
230
|
method: string,
|
143
231
|
value: AztecWalletMethodMap['aztec_sendTx']['result'],
|
144
|
-
): JSONRPCSerializedData => {
|
232
|
+
): Promise<JSONRPCSerializedData> => {
|
145
233
|
return {
|
146
234
|
method,
|
147
235
|
serialized: jsonStringify(value),
|
148
236
|
};
|
149
237
|
},
|
150
|
-
deserialize: (
|
151
|
-
|
238
|
+
deserialize: async (
|
239
|
+
_method: string,
|
152
240
|
data: JSONRPCSerializedData,
|
153
|
-
): AztecWalletMethodMap['aztec_sendTx']['result'] => {
|
154
|
-
return jsonParseWithSchema(data.serialized, TxHash.schema);
|
241
|
+
): Promise<AztecWalletMethodMap['aztec_sendTx']['result']> => {
|
242
|
+
return await jsonParseWithSchema(data.serialized, TxHash.schema);
|
155
243
|
},
|
156
244
|
};
|
157
245
|
}
|
@@ -168,40 +256,40 @@ export class AztecGetTxEffectSerializer
|
|
168
256
|
>
|
169
257
|
{
|
170
258
|
params = {
|
171
|
-
serialize: (
|
259
|
+
serialize: async (
|
172
260
|
method: string,
|
173
261
|
value: AztecWalletMethodMap['aztec_getTxEffect']['params'],
|
174
|
-
): JSONRPCSerializedData => {
|
262
|
+
): Promise<JSONRPCSerializedData> => {
|
175
263
|
const { txHash } = value;
|
176
264
|
return {
|
177
265
|
method,
|
178
266
|
serialized: jsonStringify(txHash),
|
179
267
|
};
|
180
268
|
},
|
181
|
-
deserialize: (
|
182
|
-
|
269
|
+
deserialize: async (
|
270
|
+
_method: string,
|
183
271
|
data: JSONRPCSerializedData,
|
184
|
-
): AztecWalletMethodMap['aztec_getTxEffect']['params'] => {
|
185
|
-
const txHash = jsonParseWithSchema(data.serialized, TxHash.schema);
|
272
|
+
): Promise<AztecWalletMethodMap['aztec_getTxEffect']['params']> => {
|
273
|
+
const txHash = await jsonParseWithSchema(data.serialized, TxHash.schema);
|
186
274
|
return { txHash };
|
187
275
|
},
|
188
276
|
};
|
189
277
|
|
190
278
|
result = {
|
191
|
-
serialize: (
|
279
|
+
serialize: async (
|
192
280
|
method: string,
|
193
281
|
value: AztecWalletMethodMap['aztec_getTxEffect']['result'],
|
194
|
-
): JSONRPCSerializedData => {
|
282
|
+
): Promise<JSONRPCSerializedData> => {
|
195
283
|
return {
|
196
284
|
method,
|
197
285
|
serialized: jsonStringify(value),
|
198
286
|
};
|
199
287
|
},
|
200
|
-
deserialize: (
|
201
|
-
|
288
|
+
deserialize: async (
|
289
|
+
_method: string,
|
202
290
|
data: JSONRPCSerializedData,
|
203
|
-
): AztecWalletMethodMap['aztec_getTxEffect']['result'] => {
|
204
|
-
return jsonParseWithSchema(data.serialized, inBlockSchemaFor(TxEffect.schema));
|
291
|
+
): Promise<AztecWalletMethodMap['aztec_getTxEffect']['result']> => {
|
292
|
+
return await jsonParseWithSchema(data.serialized, inBlockSchemaFor(TxEffect.schema));
|
205
293
|
},
|
206
294
|
};
|
207
295
|
}
|
@@ -218,34 +306,34 @@ export class AztecGetTxReceiptSerializer
|
|
218
306
|
>
|
219
307
|
{
|
220
308
|
params = {
|
221
|
-
serialize: (
|
309
|
+
serialize: async (
|
222
310
|
method: string,
|
223
311
|
value: AztecWalletMethodMap['aztec_getTxReceipt']['params'],
|
224
|
-
): JSONRPCSerializedData => {
|
312
|
+
): Promise<JSONRPCSerializedData> => {
|
225
313
|
const { txHash } = value;
|
226
314
|
return {
|
227
315
|
method,
|
228
316
|
serialized: jsonStringify(txHash),
|
229
317
|
};
|
230
318
|
},
|
231
|
-
deserialize: (
|
232
|
-
|
319
|
+
deserialize: async (
|
320
|
+
_method: string,
|
233
321
|
data: JSONRPCSerializedData,
|
234
|
-
): AztecWalletMethodMap['aztec_getTxReceipt']['params'] => {
|
235
|
-
const txHash = jsonParseWithSchema(data.serialized, TxHash.schema);
|
322
|
+
): Promise<AztecWalletMethodMap['aztec_getTxReceipt']['params']> => {
|
323
|
+
const txHash = await jsonParseWithSchema(data.serialized, TxHash.schema);
|
236
324
|
return { txHash };
|
237
325
|
},
|
238
326
|
};
|
239
327
|
|
240
328
|
result = {
|
241
|
-
serialize: (method: string, value: TxReceipt): JSONRPCSerializedData => {
|
329
|
+
serialize: async (method: string, value: TxReceipt): Promise<JSONRPCSerializedData> => {
|
242
330
|
return {
|
243
331
|
method,
|
244
332
|
serialized: jsonStringify(value),
|
245
333
|
};
|
246
334
|
},
|
247
|
-
deserialize: (
|
248
|
-
return jsonParseWithSchema(data.serialized, TxReceipt.schema);
|
335
|
+
deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxReceipt> => {
|
336
|
+
return await jsonParseWithSchema(data.serialized, TxReceipt.schema);
|
249
337
|
},
|
250
338
|
};
|
251
339
|
}
|
@@ -262,10 +350,10 @@ export class AztecSimulateTxSerializer
|
|
262
350
|
>
|
263
351
|
{
|
264
352
|
params = {
|
265
|
-
serialize: (
|
353
|
+
serialize: async (
|
266
354
|
method: string,
|
267
355
|
value: AztecWalletMethodMap['aztec_simulateTx']['params'],
|
268
|
-
): JSONRPCSerializedData => {
|
356
|
+
): Promise<JSONRPCSerializedData> => {
|
269
357
|
const { txRequest, simulatePublic, msgSender, skipTxValidation, enforceFeePayment, profile } = value;
|
270
358
|
return {
|
271
359
|
method,
|
@@ -279,16 +367,16 @@ export class AztecSimulateTxSerializer
|
|
279
367
|
}),
|
280
368
|
};
|
281
369
|
},
|
282
|
-
deserialize: (
|
283
|
-
|
370
|
+
deserialize: async (
|
371
|
+
_method: string,
|
284
372
|
data: JSONRPCSerializedData,
|
285
|
-
): AztecWalletMethodMap['aztec_simulateTx']['params'] => {
|
373
|
+
): Promise<AztecWalletMethodMap['aztec_simulateTx']['params']> => {
|
286
374
|
const { txRequest, simulatePublic, msgSender, skipTxValidation, enforceFeePayment, profile } =
|
287
375
|
JSON.parse(data.serialized);
|
288
376
|
return {
|
289
|
-
txRequest: jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
|
377
|
+
txRequest: await jsonParseWithSchema(txRequest, TxExecutionRequest.schema),
|
290
378
|
simulatePublic,
|
291
|
-
msgSender: jsonParseWithSchema(msgSender, AztecAddress.schema),
|
379
|
+
msgSender: await jsonParseWithSchema(msgSender, AztecAddress.schema),
|
292
380
|
skipTxValidation,
|
293
381
|
enforceFeePayment,
|
294
382
|
profile,
|
@@ -297,14 +385,14 @@ export class AztecSimulateTxSerializer
|
|
297
385
|
};
|
298
386
|
|
299
387
|
result = {
|
300
|
-
serialize: (method: string, value: TxSimulationResult): JSONRPCSerializedData => {
|
388
|
+
serialize: async (method: string, value: TxSimulationResult): Promise<JSONRPCSerializedData> => {
|
301
389
|
return {
|
302
390
|
method,
|
303
391
|
serialized: jsonStringify(value),
|
304
392
|
};
|
305
393
|
},
|
306
|
-
deserialize: (
|
307
|
-
return jsonParseWithSchema(data.serialized, TxSimulationResult.schema);
|
394
|
+
deserialize: async (_method: string, data: JSONRPCSerializedData): Promise<TxSimulationResult> => {
|
395
|
+
return await jsonParseWithSchema(data.serialized, TxSimulationResult.schema);
|
308
396
|
},
|
309
397
|
};
|
310
398
|
}
|
package/src/types.ts
CHANGED
@@ -2,7 +2,6 @@ import type {
|
|
2
2
|
AuthWitness,
|
3
3
|
AztecAddress,
|
4
4
|
ContractArtifact,
|
5
|
-
ContractClassWithId,
|
6
5
|
ContractInstanceWithAddress,
|
7
6
|
ExtendedNote,
|
8
7
|
Fr,
|
@@ -35,6 +34,8 @@ import type {
|
|
35
34
|
TxSimulationResult,
|
36
35
|
GetPublicLogsResponse,
|
37
36
|
GetContractClassLogsResponse,
|
37
|
+
ContractMetadata,
|
38
|
+
ContractClassMetadata,
|
38
39
|
} from '@aztec/circuit-types';
|
39
40
|
import type { GasFees, L1_TO_L2_MSG_TREE_HEIGHT } from '@aztec/circuits.js';
|
40
41
|
import type { JSONRPCEventMap, JSONRPCMiddleware } from '@walletmesh/jsonrpc';
|
@@ -213,12 +214,11 @@ export interface AztecWalletMethodMap extends AztecWalletBaseMethodMap {
|
|
213
214
|
/* Contracts */
|
214
215
|
|
215
216
|
aztec_getContracts: { result: AztecAddress[] };
|
216
|
-
|
217
|
-
|
218
|
-
|
219
|
-
|
220
|
-
|
221
|
-
aztec_isContractInitialized: { params: { address: AztecAddress }; result: boolean };
|
217
|
+
aztec_getContractMetadata: { params: { address: AztecAddress }; result: ContractMetadata };
|
218
|
+
aztec_getContractClassMetadata: {
|
219
|
+
params: { id: Fr; includeArtifact?: boolean };
|
220
|
+
result: ContractClassMetadata;
|
221
|
+
};
|
222
222
|
|
223
223
|
/**
|
224
224
|
* Registers a contract instance in the user's PXE.
|
@@ -226,7 +226,7 @@ export interface AztecWalletMethodMap extends AztecWalletBaseMethodMap {
|
|
226
226
|
* @returns True if registration was successful
|
227
227
|
*/
|
228
228
|
aztec_registerContract: {
|
229
|
-
params: { instance: ContractInstanceWithAddress; artifact?: ContractArtifact };
|
229
|
+
params: { instance: ContractInstanceWithAddress; artifact?: ContractArtifact | undefined };
|
230
230
|
result: boolean;
|
231
231
|
};
|
232
232
|
|