accounts 0.6.5 → 0.6.6

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 CHANGED
@@ -1,5 +1,11 @@
1
1
  # accounts
2
2
 
3
+ ## 0.6.6
4
+
5
+ ### Patch Changes
6
+
7
+ - 85d462d: Added JSON-RPC batch request support to `Handler.relay`. The handler now accepts arrays of JSON-RPC request objects and returns an array of responses, matching the [JSON-RPC 2.0 batch spec](https://www.jsonrpc.org/specification#batch).
8
+
3
9
  ## 0.6.5
4
10
 
5
11
  ### Patch Changes
@@ -1 +1 @@
1
- {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAE,MAAM,IAAI,CAAA;AAE9C,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EASV,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAKb,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAgL1D;AAoED,yBAAiB,KAAK,CAAC;IACrB,iEAAiE;IAE1D,MAAM,aAAa;;;;KA6BhB,CAAA;IAEV,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC;;;;WAIG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;QACjD;;;WAGG;QACH,QAAQ,CAAC,EACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC,GAC/E,SAAS,CAAA;QACb;;;WAGG;QACH,QAAQ,CAAC,EACL,KAAK,GACL;YACE,yDAAyD;YACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC9B,GACD,SAAS,CAAA;QACb;;;;WAIG;QACH,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,SAAS,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;QAClF,oDAAoD;QACpD,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QAC3E,gDAAgD;QAChD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,yEAAyE;QACzE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;KACnD,CAAA;CACF"}
1
+ {"version":3,"file":"relay.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"AAAA,OAAO,EAAiB,UAAU,EAAe,MAAM,IAAI,CAAA;AAE3D,OAAO,EACL,KAAK,OAAO,EAEZ,KAAK,KAAK,EASV,KAAK,SAAS,EACf,MAAM,MAAM,CAAA;AAMb,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,QAAQ,MAAM,eAAe,CAAA;AAGzC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAwCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAmM1D;AAED,yBAAiB,KAAK,CAAC;IACrB,iEAAiE;IAE1D,MAAM,aAAa;;;;KA6BhB,CAAA;IAEV,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC;;;;WAIG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;QACjD;;;WAGG;QACH,QAAQ,CAAC,EACL,IAAI,CAAC,QAAQ,CAAC,QAAQ,CAAC,OAAO,EAAE,QAAQ,GAAG,YAAY,GAAG,MAAM,GAAG,WAAW,CAAC,GAC/E,SAAS,CAAA;QACb;;;WAGG;QACH,QAAQ,CAAC,EACL,KAAK,GACL;YACE,yDAAyD;YACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC9B,GACD,SAAS,CAAA;QACb;;;;WAIG;QACH,aAAa,CAAC,EAAE,CAAC,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,SAAS,KAAK,SAAS,OAAO,EAAE,CAAC,GAAG,SAAS,CAAA;QAClF,oDAAoD;QACpD,SAAS,CAAC,EAAE,CAAC,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC,GAAG,SAAS,CAAA;QAC3E,gDAAgD;QAChD,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QACzB,yEAAyE;QACzE,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,GAAG,SAAS,CAAA;KACnD,CAAA;CACF"}
@@ -1,9 +1,10 @@
1
- import { AbiEvent, Hex, RpcRequest } from 'ox';
1
+ import { AbiEvent, Hex, RpcRequest, RpcResponse } from 'ox';
2
2
  import { Transaction as core_Transaction } from 'ox/tempo';
3
3
  import { createClient, decodeErrorResult, formatUnits, http, parseAbi, parseEventLogs, } from 'viem';
4
4
  import { simulateCalls } from 'viem/actions';
5
5
  import { tempo, tempoLocalnet, tempoMainnet, tempoModerato } from 'viem/chains';
6
6
  import { Abis, Actions, Addresses, Capabilities, Transaction } from 'viem/tempo';
7
+ import * as Schema from '../../../core/Schema.js';
7
8
  import { from } from '../../Handler.js';
8
9
  import * as FeePayer from './feePayer.js';
9
10
  import * as Utils from './utils.js';
@@ -69,132 +70,180 @@ export function relay(options = {}) {
69
70
  }
70
71
  return clients.get(chains[0].id);
71
72
  }
72
- const router = from(rest);
73
- router.post(path, async (c) => {
74
- const request = RpcRequest.from((await c.req.raw.json()));
75
- try {
76
- await onRequest?.(request);
77
- const method = request.method;
78
- // Resolve chainId + client from the first param object (if present).
79
- const params = Array.isArray(request.params) ? request.params : [];
80
- const firstParam = typeof params[0] === 'object' && params[0]
81
- ? params[0]
82
- : undefined;
83
- const chainId = Utils.resolveChainId(firstParam?.chainId) ?? chains[0].id;
84
- const client = getClient(chainId);
85
- // Proxy non-fill methods directly to the RPC node.
86
- if (method !== 'eth_fillTransaction') {
87
- const result = await client.request({
88
- method: method,
89
- params: params,
90
- });
91
- return Utils.rpcResult(request, result);
73
+ async function handleRequest(request) {
74
+ await onRequest?.(request);
75
+ // Resolve chainId + client from the first param object (if present).
76
+ const params = 'params' in request && Array.isArray(request.params) ? request.params : [];
77
+ const first = typeof params[0] === 'object' && params[0]
78
+ ? params[0]
79
+ : undefined;
80
+ const chainId = Utils.resolveChainId(first?.chainId) ?? chains[0].id;
81
+ const client = getClient(chainId);
82
+ switch (request.method) {
83
+ case 'eth_fillTransaction': {
84
+ try {
85
+ const parameters = request.params[0];
86
+ // 1. Resolve fee token.
87
+ const feeToken = await resolveFeeToken(client, {
88
+ account: parameters.from,
89
+ feeToken: parameters.feeToken,
90
+ tokens: resolveTokens(chainId),
91
+ });
92
+ // 2. Fill transaction via RPC node (with AMM resolution on InsufficientBalance).
93
+ const normalized = Utils.normalizeFillTransactionRequest(parameters);
94
+ const transaction = {
95
+ ...normalized,
96
+ ...(typeof chainId !== 'undefined' ? { chainId } : {}),
97
+ ...(feePayerOptions ? { feePayer: true } : {}),
98
+ ...(feeToken ? { feeToken } : {}),
99
+ };
100
+ let filled = await fill(client, { autoSwap, feeToken, transaction });
101
+ // 3. Check if the fee payer approves this transaction.
102
+ const sponsored = feePayerOptions &&
103
+ (!feePayerOptions.validate ||
104
+ // @ts-expect-error - TODO: Convert to `TransactionRequest` properly.
105
+ (await feePayerOptions.validate({
106
+ ...filled.transaction,
107
+ from: parameters.from,
108
+ })));
109
+ // Re-fill without feePayer when sponsorship is rejected so the
110
+ // gas estimate and nonce are correct for a self-paid transaction.
111
+ if (feePayerOptions && !sponsored) {
112
+ const { feePayer: _, ...tx } = transaction;
113
+ filled = await fill(client, { autoSwap, feeToken, transaction: tx });
114
+ }
115
+ const { transaction: transaction_filled, swap } = filled;
116
+ // 4. Simulate and compute balance diffs + fee.
117
+ const calls = extractCalls(transaction_filled);
118
+ const { balanceDiffs, fee } = await simulateAndParseDiffs(client, {
119
+ account: parameters.from,
120
+ calls,
121
+ swap,
122
+ feeToken: transaction_filled.feeToken,
123
+ gas: transaction_filled.gas,
124
+ maxFeePerGas: transaction_filled.maxFeePerGas,
125
+ });
126
+ // 5. Sign as fee payer (if sponsored).
127
+ const transaction_final = await (async () => {
128
+ if (!sponsored)
129
+ return transaction_filled;
130
+ return await FeePayer.sign({
131
+ account: feePayerOptions.account,
132
+ sender: parameters.from,
133
+ transaction: transaction_filled,
134
+ });
135
+ })();
136
+ const sponsor = (() => {
137
+ if (!sponsored)
138
+ return undefined;
139
+ return {
140
+ address: feePayerOptions.account.address,
141
+ ...(feePayerOptions.name ? { name: feePayerOptions.name } : {}),
142
+ ...(feePayerOptions.url ? { url: feePayerOptions.url } : {}),
143
+ };
144
+ })();
145
+ // 6. Resolve autoSwap metadata (when AMM path was taken).
146
+ const autoSwap_ = await (async () => {
147
+ if (!swap)
148
+ return undefined;
149
+ const [inMeta, outMeta] = await Promise.all([
150
+ resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
151
+ resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
152
+ ]);
153
+ if (!inMeta || !outMeta)
154
+ return undefined;
155
+ return {
156
+ calls: swap.calls.map((c) => ({ to: c.to, data: c.data })),
157
+ slippage: autoSwap.slippage,
158
+ maxIn: {
159
+ token: swap.tokenIn,
160
+ value: Hex.fromNumber(swap.maxAmountIn),
161
+ formatted: formatUnits(swap.maxAmountIn, inMeta.decimals),
162
+ decimals: inMeta.decimals,
163
+ symbol: inMeta.symbol,
164
+ name: inMeta.name,
165
+ },
166
+ minOut: {
167
+ token: swap.tokenOut,
168
+ value: Hex.fromNumber(swap.amountOut),
169
+ formatted: formatUnits(swap.amountOut, outMeta.decimals),
170
+ decimals: outMeta.decimals,
171
+ symbol: outMeta.symbol,
172
+ name: outMeta.name,
173
+ },
174
+ };
175
+ })();
176
+ return RpcResponse.from({
177
+ result: {
178
+ tx: core_Transaction.toRpc(transaction_final),
179
+ capabilities: {
180
+ balanceDiffs,
181
+ fee,
182
+ sponsored: !!sponsor,
183
+ ...(sponsor ? { sponsor } : {}),
184
+ ...(autoSwap_ ? { autoSwap: autoSwap_ } : {}),
185
+ },
186
+ },
187
+ }, { request });
188
+ }
189
+ catch (error) {
190
+ return Utils.rpcErrorJson(request, error);
191
+ }
92
192
  }
93
- const [parameters] = Utils.parseParams.parse(request.params);
94
- const sender = typeof parameters.from === 'string' ? parameters.from : undefined;
95
- // 1. Resolve fee token.
96
- const feeToken = await resolveFeeToken(client, {
97
- feeToken: parameters.feeToken,
98
- account: sender,
99
- tokens: resolveTokens(chainId),
100
- });
101
- // 2. Fill transaction via RPC node (with AMM resolution on InsufficientBalance).
102
- const normalized = Utils.normalizeFillTransactionRequest(parameters);
103
- const withOverrides = {
104
- ...normalized,
105
- ...(typeof chainId !== 'undefined' ? { chainId } : {}),
106
- ...(feePayerOptions ? { feePayer: true } : {}),
107
- ...(feeToken ? { feeToken } : {}),
108
- };
109
- let filled = await fill(client, { autoSwap, feeToken, transaction: withOverrides });
110
- // 3. Check if the fee payer approves this transaction.
111
- const sponsored = feePayerOptions &&
112
- (!feePayerOptions.validate ||
113
- // @ts-expect-error - TODO: Convert to `TransactionRequest` properly.
114
- (await feePayerOptions.validate({
115
- ...filled.transaction,
116
- from: sender,
117
- })));
118
- // Re-fill without feePayer when sponsorship is rejected so the
119
- // gas estimate and nonce are correct for a self-paid transaction.
120
- if (feePayerOptions && !sponsored) {
121
- const { feePayer: _, ...withoutFeePayer } = withOverrides;
122
- filled = await fill(client, { autoSwap, feeToken, transaction: withoutFeePayer });
193
+ default: {
194
+ const result = await client.request(request);
195
+ return RpcResponse.from({ result }, { request });
123
196
  }
124
- const { transaction, swap } = filled;
125
- // 4. Simulate and compute balance diffs + fee.
126
- const calls = extractCalls(transaction);
127
- const { balanceDiffs, fee } = await simulateAndParseDiffs(client, {
128
- account: sender,
129
- calls,
130
- swap,
131
- feeToken: transaction.feeToken,
132
- gas: transaction.gas,
133
- maxFeePerGas: transaction.maxFeePerGas,
134
- });
135
- // 5. Sign as fee payer (when approved).
136
- const tx = sponsored
137
- ? await FeePayer.sign({
138
- account: feePayerOptions.account,
139
- transaction,
140
- sender,
141
- })
142
- : transaction;
143
- const sponsor = sponsored
144
- ? {
145
- address: feePayerOptions.account.address,
146
- ...(feePayerOptions.name ? { name: feePayerOptions.name } : {}),
147
- ...(feePayerOptions.url ? { url: feePayerOptions.url } : {}),
148
- }
149
- : undefined;
150
- // 6. Resolve autoSwap metadata (when AMM path was taken).
151
- const autoSwap_ = await (async () => {
152
- if (!swap)
153
- return undefined;
154
- const [inMeta, outMeta] = await Promise.all([
155
- resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
156
- resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
157
- ]);
158
- if (!inMeta || !outMeta)
159
- return undefined;
160
- return {
161
- calls: swap.calls.map((c) => ({ to: c.to, data: c.data })),
162
- slippage: autoSwap.slippage,
163
- maxIn: {
164
- token: swap.tokenIn,
165
- value: Hex.fromNumber(swap.maxAmountIn),
166
- formatted: formatUnits(swap.maxAmountIn, inMeta.decimals),
167
- decimals: inMeta.decimals,
168
- symbol: inMeta.symbol,
169
- name: inMeta.name,
170
- },
171
- minOut: {
172
- token: swap.tokenOut,
173
- value: Hex.fromNumber(swap.amountOut),
174
- formatted: formatUnits(swap.amountOut, outMeta.decimals),
175
- decimals: outMeta.decimals,
176
- symbol: outMeta.symbol,
177
- name: outMeta.name,
178
- },
179
- };
180
- })();
181
- return Utils.rpcResult(request, {
182
- tx: core_Transaction.toRpc(tx),
183
- capabilities: {
184
- balanceDiffs,
185
- fee,
186
- sponsored: !!sponsor,
187
- ...(sponsor ? { sponsor } : {}),
188
- ...(autoSwap_ ? { autoSwap: autoSwap_ } : {}),
189
- },
190
- });
191
197
  }
192
- catch (error) {
193
- return Utils.rpcError(request, error);
198
+ }
199
+ const router = from(rest);
200
+ router.post(path, async (c) => {
201
+ const body = await c.req.raw.json();
202
+ const isBatch = Array.isArray(body);
203
+ if (!isBatch) {
204
+ const request = RpcRequest.from(body);
205
+ return Response.json(await handleRequest(request));
194
206
  }
207
+ const responses = await Promise.all(body.map((item) => handleRequest(RpcRequest.from(item))));
208
+ return Response.json(responses);
195
209
  });
196
210
  return router;
197
211
  }
212
+ (function (relay) {
213
+ /** Default token lists per chain ID for fee token resolution. */
214
+ // TODO: extract from tokenlist workspace.
215
+ relay.defaultTokens = {
216
+ [tempoMainnet.id]: [
217
+ '0x20c0000000000000000000000000000000000000', // pathUSD
218
+ '0x20c000000000000000000000b9537d11c60e8b50', // USDC.e
219
+ '0x20c0000000000000000000001621e21f71cf12fb', // EURC.e
220
+ '0x20c00000000000000000000014f22ca97301eb73', // USDT0
221
+ '0x20c0000000000000000000003554d28269e0f3c2', // frxUSD
222
+ '0x20c0000000000000000000000520792dcccccccc', // cUSD
223
+ '0x20c0000000000000000000008ee4fcff88888888', // stcUSD
224
+ '0x20c0000000000000000000005c0bac7cef389a11', // GUSD
225
+ '0x20c0000000000000000000007f7ba549dd0251b9', // rUSD
226
+ '0x20c000000000000000000000aeed2ec36a54d0e5', // wsrUSD
227
+ '0x20c0000000000000000000009a4a4b17e0dc6651', // EURAU
228
+ '0x20c000000000000000000000383a23bacb546ab9', // reUSD
229
+ ],
230
+ [tempoModerato.id]: [
231
+ '0x20c0000000000000000000000000000000000000', // pathUSD
232
+ '0x20c0000000000000000000000000000000000001', // alphaUSD
233
+ '0x20c0000000000000000000000000000000000002', // betaUSD
234
+ '0x20c0000000000000000000000000000000000003', // thetaUSD
235
+ '0x20c0000000000000000000009e8d7eb59b783726', // USDC.e
236
+ '0x20c000000000000000000000d72572838bbee59c', // EURC.e
237
+ ],
238
+ [tempoLocalnet.id]: [
239
+ '0x20c0000000000000000000000000000000000000', // pathUSD
240
+ '0x20c0000000000000000000000000000000000001', // alphaUSD
241
+ '0x20c0000000000000000000000000000000000002', // betaUSD
242
+ '0x20c0000000000000000000000000000000000003', // thetaUSD
243
+ ],
244
+ };
245
+ })(relay || (relay = {}));
246
+ // TODO: cleanup
198
247
  async function fill(client, options) {
199
248
  const { autoSwap, feeToken, transaction: request } = options;
200
249
  // Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
@@ -253,40 +302,6 @@ async function fill(client, options) {
253
302
  };
254
303
  }
255
304
  }
256
- (function (relay) {
257
- /** Default token lists per chain ID for fee token resolution. */
258
- // TODO: extract from tokenlist workspace.
259
- relay.defaultTokens = {
260
- [tempoMainnet.id]: [
261
- '0x20c0000000000000000000000000000000000000', // pathUSD
262
- '0x20c000000000000000000000b9537d11c60e8b50', // USDC.e
263
- '0x20c0000000000000000000001621e21f71cf12fb', // EURC.e
264
- '0x20c00000000000000000000014f22ca97301eb73', // USDT0
265
- '0x20c0000000000000000000003554d28269e0f3c2', // frxUSD
266
- '0x20c0000000000000000000000520792dcccccccc', // cUSD
267
- '0x20c0000000000000000000008ee4fcff88888888', // stcUSD
268
- '0x20c0000000000000000000005c0bac7cef389a11', // GUSD
269
- '0x20c0000000000000000000007f7ba549dd0251b9', // rUSD
270
- '0x20c000000000000000000000aeed2ec36a54d0e5', // wsrUSD
271
- '0x20c0000000000000000000009a4a4b17e0dc6651', // EURAU
272
- '0x20c000000000000000000000383a23bacb546ab9', // reUSD
273
- ],
274
- [tempoModerato.id]: [
275
- '0x20c0000000000000000000000000000000000000', // pathUSD
276
- '0x20c0000000000000000000000000000000000001', // alphaUSD
277
- '0x20c0000000000000000000000000000000000002', // betaUSD
278
- '0x20c0000000000000000000000000000000000003', // thetaUSD
279
- '0x20c0000000000000000000009e8d7eb59b783726', // USDC.e
280
- '0x20c000000000000000000000d72572838bbee59c', // EURC.e
281
- ],
282
- [tempoLocalnet.id]: [
283
- '0x20c0000000000000000000000000000000000000', // pathUSD
284
- '0x20c0000000000000000000000000000000000001', // alphaUSD
285
- '0x20c0000000000000000000000000000000000002', // betaUSD
286
- '0x20c0000000000000000000000000000000000003', // thetaUSD
287
- ],
288
- };
289
- })(relay || (relay = {}));
290
305
  async function resolveFeeToken(client, options) {
291
306
  const { feeToken, account, tokens } = options;
292
307
  if (feeToken)
@@ -330,8 +345,8 @@ async function resolveFeeToken(client, options) {
330
345
  }
331
346
  if (best)
332
347
  return best.address;
333
- return Addresses.pathUsd;
334
348
  }
349
+ // TODO: cleanup/remove
335
350
  function extractCalls(transaction) {
336
351
  const calls = transaction.calls;
337
352
  if (calls && calls.length > 0)
@@ -348,6 +363,7 @@ function extractCalls(transaction) {
348
363
  },
349
364
  ];
350
365
  }
366
+ // TODO: cleanup/remove
351
367
  async function simulate(client, options) {
352
368
  const { account, calls } = options;
353
369
  try {
@@ -1 +1 @@
1
- {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"relay.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/relay.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { RpcRequest } from 'ox';
1
+ import { RpcRequest, RpcResponse } from 'ox';
2
2
  import { Transaction as core_Transaction } from 'ox/tempo';
3
3
  import { type Client } from 'viem';
4
4
  import * as z from 'zod/mini';
@@ -6,6 +6,24 @@ export declare function resolveChainId(value: unknown): number | undefined;
6
6
  export declare function formatFillTransactionRequest(client: Client, value: Record<string, unknown>): Record<string, unknown>;
7
7
  export declare function normalizeFillTransactionRequest(value: Record<string, unknown>): Record<string, unknown>;
8
8
  export declare function normalizeTempoTransaction(value: Record<string, unknown> | undefined): core_Transaction.Transaction<false, bigint, number>;
9
+ /** Returns a raw JSON-RPC error response object (not wrapped in a `Response`). */
10
+ export declare function rpcErrorJson(request: RpcRequest.RpcRequest, error: unknown): {
11
+ readonly error: RpcResponse.InvalidParamsError;
12
+ readonly id: number;
13
+ readonly jsonrpc: "2.0";
14
+ } | {
15
+ readonly error: RpcResponse.MethodNotSupportedError;
16
+ readonly id: number;
17
+ readonly jsonrpc: "2.0";
18
+ } | {
19
+ readonly error: {
20
+ readonly data?: {};
21
+ readonly code: number;
22
+ readonly message: string;
23
+ };
24
+ readonly id: number;
25
+ readonly jsonrpc: "2.0";
26
+ };
9
27
  export declare function rpcError(request: RpcRequest.RpcRequest, error: unknown): Response;
10
28
  export declare function rpcResult(request: RpcRequest.RpcRequest, result: unknown): Response;
11
29
  export declare const parseParams: z.ZodMiniReadonly<z.ZodMiniTuple<readonly [z.ZodMiniRecord<z.ZodMiniString<string>, z.ZodMiniUnknown>], null>>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAe,MAAM,IAAI,CAAA;AACjD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,MAAM,CAAA;AAC7C,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,sBAK5C;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BAI1F;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BAW7E;AAOD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,uDAGnF;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,YA+BtE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,YAExE;AAED,eAAO,MAAM,WAAW,gHAA2D,CAAA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../../src/server/internal/handlers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAO,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAE,KAAK,MAAM,EAAa,MAAM,MAAM,CAAA;AAC7C,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,wBAAgB,cAAc,CAAC,KAAK,EAAE,OAAO,sBAK5C;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BAI1F;AAED,wBAAgB,+BAA+B,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,2BAW7E;AAOD,wBAAgB,yBAAyB,CAAC,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,uDAGnF;AAED,kFAAkF;AAClF,wBAAgB,YAAY,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO;;;;;;;;;;;;;;;;EA2B1E;AAED,wBAAgB,QAAQ,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,KAAK,EAAE,OAAO,YAEtE;AAED,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,CAAC,UAAU,EAAE,MAAM,EAAE,OAAO,YAExE;AAED,eAAO,MAAM,WAAW,gHAA2D,CAAA"}
@@ -41,24 +41,28 @@ export function normalizeTempoTransaction(value) {
41
41
  throw new Error('Expected `tx` in eth_fillTransaction response.');
42
42
  return core_Transaction.fromRpc({ type: '0x76', ...value });
43
43
  }
44
- export function rpcError(request, error) {
44
+ /** Returns a raw JSON-RPC error response object (not wrapped in a `Response`). */
45
+ export function rpcErrorJson(request, error) {
45
46
  if (error instanceof RpcResponse.InvalidParamsError)
46
- return Response.json(RpcResponse.from({ error }, { request }));
47
+ return RpcResponse.from({ error }, { request });
47
48
  if (error instanceof RpcResponse.MethodNotSupportedError)
48
- return Response.json(RpcResponse.from({ error }, { request }));
49
+ return RpcResponse.from({ error }, { request });
49
50
  if (error.name === 'ZodError')
50
- return Response.json(RpcResponse.from({
51
+ return RpcResponse.from({
51
52
  error: new RpcResponse.InvalidParamsError({
52
53
  message: error.message,
53
54
  }),
54
- }, { request }));
55
+ }, { request });
55
56
  const inner = resolveError(error);
56
57
  const message = inner.message ?? error.message;
57
58
  const code = inner.code ?? -32603;
58
59
  const data = inner.data;
59
- return Response.json(RpcResponse.from({
60
+ return RpcResponse.from({
60
61
  error: { code, message, ...(data ? { data } : {}) },
61
- }, { request }));
62
+ }, { request });
63
+ }
64
+ export function rpcError(request, error) {
65
+ return Response.json(rpcErrorJson(request, error));
62
66
  }
63
67
  export function rpcResult(request, result) {
64
68
  return Response.json(RpcResponse.from({ result }, { request }));
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/utils.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../../src/server/internal/handlers/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,GAAG,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,IAAI,CAAA;AACjD,OAAO,EAAE,WAAW,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAC1D,OAAO,EAAe,SAAS,EAAE,MAAM,MAAM,CAAA;AAC7C,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAE7B,MAAM,UAAU,cAAc,CAAC,KAAc;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,KAAK,CAAA;IAC3C,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAA;IACnD,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAA;IAChF,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,MAAM,UAAU,4BAA4B,CAAC,MAAc,EAAE,KAA8B;IACzF,MAAM,MAAM,GAAG,MAAM,CAAC,KAAK,EAAE,UAAU,EAAE,kBAAkB,EAAE,MAAM,CAAA;IACnE,IAAI,CAAC,MAAM;QAAE,OAAO,KAAK,CAAA;IACzB,OAAO,MAAM,CAAC,EAAE,GAAG,KAAK,EAAW,EAAE,iBAAiB,CAA4B,CAAA;AACpF,CAAC;AAED,MAAM,UAAU,+BAA+B,CAAC,KAA8B;IAC5E,IAAI,OAAO,KAAK,CAAC,EAAE,KAAK,WAAW,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,WAAW;QAAE,OAAO,KAAK,CAAA;IACtF,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,KAAK,CAAA;IACzE,MAAM,CAAC,IAAI,CAAC,GAAG,KAAK,CAAC,KAAuC,CAAA;IAC5D,MAAM,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,GAAG,KAAK,CAAA;IACnC,OAAO;QACL,GAAG,IAAI;QACP,GAAG,CAAC,OAAO,IAAI,EAAE,IAAI,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,OAAO,IAAI,EAAE,EAAE,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,IAAI,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC3D,GAAG,CAAC,OAAO,IAAI,EAAE,KAAK,KAAK,WAAW,CAAC,CAAC,CAAC,EAAE,KAAK,EAAE,kBAAkB,CAAC,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACzF,CAAA;AACH,CAAC;AAED,SAAS,kBAAkB,CAAC,KAAc;IACxC,IAAI,OAAO,KAAK,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;QAAE,OAAO,KAAK,CAAA;IACtE,OAAO,MAAM,CAAC,KAAK,KAAK,IAAI,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAA;AAC/C,CAAC;AAED,MAAM,UAAU,yBAAyB,CAAC,KAA0C;IAClF,IAAI,CAAC,KAAK;QAAE,MAAM,IAAI,KAAK,CAAC,gDAAgD,CAAC,CAAA;IAC7E,OAAO,gBAAgB,CAAC,OAAO,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,GAAG,KAAK,EAA0B,CAAE,CAAA;AACtF,CAAC;AAED,kFAAkF;AAClF,MAAM,UAAU,YAAY,CAAC,OAA8B,EAAE,KAAc;IACzE,IAAI,KAAK,YAAY,WAAW,CAAC,kBAAkB;QACjD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAEjD,IAAI,KAAK,YAAY,WAAW,CAAC,uBAAuB;QACtD,OAAO,WAAW,CAAC,IAAI,CAAC,EAAE,KAAK,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAA;IAEjD,IAAK,KAAuC,CAAC,IAAI,KAAK,UAAU;QAC9D,OAAO,WAAW,CAAC,IAAI,CACrB;YACE,KAAK,EAAE,IAAI,WAAW,CAAC,kBAAkB,CAAC;gBACxC,OAAO,EAAG,KAAe,CAAC,OAAO;aAClC,CAAC;SACH,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;IAEH,MAAM,KAAK,GAAG,YAAY,CAAC,KAAK,CAAC,CAAA;IACjC,MAAM,OAAO,GAAG,KAAK,CAAC,OAAO,IAAK,KAAe,CAAC,OAAO,CAAA;IACzD,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,IAAI,CAAC,KAAK,CAAA;IACjC,MAAM,IAAI,GAAG,KAAK,CAAC,IAAI,CAAA;IACvB,OAAO,WAAW,CAAC,IAAI,CACrB;QACE,KAAK,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE;KACpD,EACD,EAAE,OAAO,EAAE,CACZ,CAAA;AACH,CAAC;AAED,MAAM,UAAU,QAAQ,CAAC,OAA8B,EAAE,KAAc;IACrE,OAAO,QAAQ,CAAC,IAAI,CAAC,YAAY,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,CAAA;AACpD,CAAC;AAED,MAAM,UAAU,SAAS,CAAC,OAA8B,EAAE,MAAe;IACvE,OAAO,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,EAAE,EAAE,OAAO,EAAE,CAAC,CAAC,CAAA;AACjE,CAAC;AAED,MAAM,CAAC,MAAM,WAAW,GAAG,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC,CAAC,CAAA;AAEnF,SAAS,YAAY,CAAC,KAAc;IAKlC,IAAI,CAAC,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,EAAE,CAAA;IAClD,MAAM,CAAC,GAAG,KAAgC,CAAA;IAC1C,qEAAqE;IACrE,IAAI,KAAK,YAAY,SAAS,EAAE,CAAC;QAC/B,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CACtB,CAAC,CAAC,EAAE,EAAE,CAAC,OAAQ,CAA6B,CAAC,IAAI,KAAK,QAAQ,CAC7B,CAAA;QACnC,IAAI,KAAK,IAAI,OAAO,KAAK,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,KAAK,CAAC,OAAO,KAAK,QAAQ;YAC9E,OAAO,EAAE,OAAO,EAAE,KAAK,CAAC,OAAO,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,IAAI,EAAE,KAAK,CAAC,IAAI,EAAE,CAAA;IACzE,CAAC;IACD,IAAI,OAAO,CAAC,CAAC,IAAI,KAAK,QAAQ,IAAI,OAAO,CAAC,CAAC,OAAO,KAAK,QAAQ;QAC7D,OAAO,EAAE,OAAO,EAAE,CAAC,CAAC,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAA;IAC3D,OAAO,EAAE,CAAA;AACX,CAAC"}
package/package.json CHANGED
@@ -2,7 +2,7 @@
2
2
  "name": "accounts",
3
3
  "description": "Tempo Accounts SDK",
4
4
  "type": "module",
5
- "version": "0.6.5",
5
+ "version": "0.6.6",
6
6
  "dependencies": {
7
7
  "hono": "^4.12.12",
8
8
  "idb-keyval": "^6.2.2",
@@ -73,6 +73,26 @@ describe('behavior: without feePayer', () => {
73
73
  const chainId = await client.request({ method: 'eth_chainId' })
74
74
  expect(Number(chainId)).toMatchInlineSnapshot(`${chain.id}`)
75
75
  })
76
+
77
+ test('behavior: handles JSON-RPC batch requests', async () => {
78
+ const response = await fetch(server.url, {
79
+ method: 'POST',
80
+ headers: { 'Content-Type': 'application/json' },
81
+ body: JSON.stringify([
82
+ { jsonrpc: '2.0', id: 1, method: 'eth_chainId', params: [] },
83
+ { jsonrpc: '2.0', id: 2, method: 'eth_chainId', params: [] },
84
+ ]),
85
+ })
86
+
87
+ expect(response.status).toBe(200)
88
+ const body = (await response.json()) as { id: number; result: string }[]
89
+ expect(Array.isArray(body)).toBe(true)
90
+ expect(body).toHaveLength(2)
91
+ expect(body[0]!.id).toBe(1)
92
+ expect(body[1]!.id).toBe(2)
93
+ expect(Number(body[0]!.result)).toBe(chain.id)
94
+ expect(Number(body[1]!.result)).toBe(chain.id)
95
+ })
76
96
  })
77
97
 
78
98
  describe('behavior: capabilities', () => {
@@ -831,6 +851,6 @@ describe('behavior: fee token resolution', () => {
831
851
  ],
832
852
  })
833
853
 
834
- expect(transaction.feeToken).toBe('0x20c0000000000000000000000000000000000000')
854
+ expect(transaction.feeToken).toBeUndefined()
835
855
  })
836
856
  })
@@ -1,4 +1,4 @@
1
- import { AbiEvent, Hex, RpcRequest } from 'ox'
1
+ import { AbiEvent, Hex, RpcRequest, RpcResponse } from 'ox'
2
2
  import { Transaction as core_Transaction } from 'ox/tempo'
3
3
  import {
4
4
  type Address,
@@ -18,6 +18,7 @@ import { simulateCalls } from 'viem/actions'
18
18
  import { tempo, tempoLocalnet, tempoMainnet, tempoModerato } from 'viem/chains'
19
19
  import { Abis, Actions, Addresses, Capabilities, Transaction } from 'viem/tempo'
20
20
 
21
+ import * as Schema from '../../../core/Schema.js'
21
22
  import { type Handler, from } from '../../Handler.js'
22
23
  import * as FeePayer from './feePayer.js'
23
24
  import * as Utils from './utils.js'
@@ -98,213 +99,166 @@ export function relay(options: relay.Options = {}): Handler {
98
99
  return clients.get(chains[0]!.id)!
99
100
  }
100
101
 
101
- const router = from(rest)
102
-
103
- router.post(path, async (c) => {
104
- const request = RpcRequest.from((await c.req.raw.json()) as never)
105
-
106
- try {
107
- await onRequest?.(request)
108
-
109
- const method = request.method as string
110
-
111
- // Resolve chainId + client from the first param object (if present).
112
- const params = Array.isArray(request.params) ? request.params : []
113
- const firstParam =
114
- typeof params[0] === 'object' && params[0]
115
- ? (params[0] as Record<string, unknown>)
116
- : undefined
117
- const chainId = Utils.resolveChainId(firstParam?.chainId) ?? chains[0]!.id
118
- const client = getClient(chainId)
119
-
120
- // Proxy non-fill methods directly to the RPC node.
121
- if (method !== 'eth_fillTransaction') {
122
- const result = await client.request({
123
- method: method as never,
124
- params: params as never,
125
- })
126
- return Utils.rpcResult(request, result)
127
- }
102
+ async function handleRequest(request: RpcRequest.RpcRequest<Schema.Ox>) {
103
+ await onRequest?.(request)
128
104
 
129
- const [parameters] = Utils.parseParams.parse(request.params) as [Record<string, unknown>]
130
- const sender = typeof parameters.from === 'string' ? (parameters.from as Address) : undefined
131
-
132
- // 1. Resolve fee token.
133
- const feeToken = await resolveFeeToken(client, {
134
- feeToken: parameters.feeToken as Address | undefined,
135
- account: sender,
136
- tokens: resolveTokens(chainId),
137
- })
138
-
139
- // 2. Fill transaction via RPC node (with AMM resolution on InsufficientBalance).
140
- const normalized = Utils.normalizeFillTransactionRequest(parameters)
141
- const withOverrides = {
142
- ...normalized,
143
- ...(typeof chainId !== 'undefined' ? { chainId } : {}),
144
- ...(feePayerOptions ? { feePayer: true } : {}),
145
- ...(feeToken ? { feeToken } : {}),
146
- }
147
- let filled = await fill(client, { autoSwap, feeToken, transaction: withOverrides })
148
-
149
- // 3. Check if the fee payer approves this transaction.
150
- const sponsored =
151
- feePayerOptions &&
152
- (!feePayerOptions.validate ||
153
- // @ts-expect-error - TODO: Convert to `TransactionRequest` properly.
154
- (await feePayerOptions.validate({
155
- ...filled.transaction,
156
- from: sender,
157
- } as Transaction.TransactionRequest)))
158
-
159
- // Re-fill without feePayer when sponsorship is rejected so the
160
- // gas estimate and nonce are correct for a self-paid transaction.
161
- if (feePayerOptions && !sponsored) {
162
- const { feePayer: _, ...withoutFeePayer } = withOverrides
163
- filled = await fill(client, { autoSwap, feeToken, transaction: withoutFeePayer })
164
- }
165
-
166
- const { transaction, swap } = filled
167
-
168
- // 4. Simulate and compute balance diffs + fee.
169
- const calls = extractCalls(transaction)
170
- const { balanceDiffs, fee } = await simulateAndParseDiffs(client, {
171
- account: sender,
172
- calls,
173
- swap,
174
- feeToken: (transaction as { feeToken?: Address | undefined }).feeToken,
175
- gas: (transaction as { gas?: bigint | undefined }).gas,
176
- maxFeePerGas: (transaction as { maxFeePerGas?: bigint | undefined }).maxFeePerGas,
177
- })
178
-
179
- // 5. Sign as fee payer (when approved).
180
- const tx = sponsored
181
- ? await FeePayer.sign({
182
- account: feePayerOptions.account,
183
- transaction,
184
- sender,
105
+ // Resolve chainId + client from the first param object (if present).
106
+ const params = 'params' in request && Array.isArray(request.params) ? request.params : []
107
+ const first =
108
+ typeof params[0] === 'object' && params[0]
109
+ ? (params[0] as Record<string, unknown>)
110
+ : undefined
111
+ const chainId = Utils.resolveChainId(first?.chainId) ?? chains[0]!.id
112
+ const client = getClient(chainId)
113
+
114
+ switch (request.method) {
115
+ case 'eth_fillTransaction': {
116
+ try {
117
+ const parameters = request.params[0]
118
+
119
+ // 1. Resolve fee token.
120
+ const feeToken = await resolveFeeToken(client, {
121
+ account: parameters.from,
122
+ feeToken: parameters.feeToken,
123
+ tokens: resolveTokens(chainId),
185
124
  })
186
- : transaction
187
125
 
188
- const sponsor = sponsored
189
- ? {
190
- address: feePayerOptions.account.address,
191
- ...(feePayerOptions.name ? { name: feePayerOptions.name } : {}),
192
- ...(feePayerOptions.url ? { url: feePayerOptions.url } : {}),
126
+ // 2. Fill transaction via RPC node (with AMM resolution on InsufficientBalance).
127
+ const normalized = Utils.normalizeFillTransactionRequest(parameters)
128
+ const transaction = {
129
+ ...normalized,
130
+ ...(typeof chainId !== 'undefined' ? { chainId } : {}),
131
+ ...(feePayerOptions ? { feePayer: true } : {}),
132
+ ...(feeToken ? { feeToken } : {}),
193
133
  }
194
- : undefined
134
+ let filled = await fill(client, { autoSwap, feeToken, transaction })
135
+
136
+ // 3. Check if the fee payer approves this transaction.
137
+ const sponsored =
138
+ feePayerOptions &&
139
+ (!feePayerOptions.validate ||
140
+ // @ts-expect-error - TODO: Convert to `TransactionRequest` properly.
141
+ (await feePayerOptions.validate({
142
+ ...filled.transaction,
143
+ from: parameters.from,
144
+ } as Transaction.TransactionRequest)))
145
+
146
+ // Re-fill without feePayer when sponsorship is rejected so the
147
+ // gas estimate and nonce are correct for a self-paid transaction.
148
+ if (feePayerOptions && !sponsored) {
149
+ const { feePayer: _, ...tx } = transaction
150
+ filled = await fill(client, { autoSwap, feeToken, transaction: tx })
151
+ }
152
+
153
+ const { transaction: transaction_filled, swap } = filled
154
+
155
+ // 4. Simulate and compute balance diffs + fee.
156
+ const calls = extractCalls(transaction_filled)
157
+ const { balanceDiffs, fee } = await simulateAndParseDiffs(client, {
158
+ account: parameters.from,
159
+ calls,
160
+ swap,
161
+ feeToken: transaction_filled.feeToken,
162
+ gas: transaction_filled.gas,
163
+ maxFeePerGas: transaction_filled.maxFeePerGas,
164
+ })
195
165
 
196
- // 6. Resolve autoSwap metadata (when AMM path was taken).
197
- const autoSwap_ = await (async () => {
198
- if (!swap) return undefined
199
- const [inMeta, outMeta] = await Promise.all([
200
- resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
201
- resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
202
- ])
203
- if (!inMeta || !outMeta) return undefined
204
- return {
205
- calls: swap.calls.map((c) => ({ to: c.to, data: c.data })),
206
- slippage: autoSwap!.slippage,
207
- maxIn: {
208
- token: swap.tokenIn,
209
- value: Hex.fromNumber(swap.maxAmountIn) as `0x${string}`,
210
- formatted: formatUnits(swap.maxAmountIn, inMeta.decimals),
211
- decimals: inMeta.decimals,
212
- symbol: inMeta.symbol,
213
- name: inMeta.name,
214
- },
215
- minOut: {
216
- token: swap.tokenOut,
217
- value: Hex.fromNumber(swap.amountOut) as `0x${string}`,
218
- formatted: formatUnits(swap.amountOut, outMeta.decimals),
219
- decimals: outMeta.decimals,
220
- symbol: outMeta.symbol,
221
- name: outMeta.name,
222
- },
166
+ // 5. Sign as fee payer (if sponsored).
167
+ const transaction_final = await (async () => {
168
+ if (!sponsored) return transaction_filled
169
+ return await FeePayer.sign({
170
+ account: feePayerOptions.account,
171
+ sender: parameters.from,
172
+ transaction: transaction_filled,
173
+ })
174
+ })()
175
+
176
+ const sponsor = (() => {
177
+ if (!sponsored) return undefined
178
+ return {
179
+ address: feePayerOptions.account.address,
180
+ ...(feePayerOptions.name ? { name: feePayerOptions.name } : {}),
181
+ ...(feePayerOptions.url ? { url: feePayerOptions.url } : {}),
182
+ }
183
+ })()
184
+
185
+ // 6. Resolve autoSwap metadata (when AMM path was taken).
186
+ const autoSwap_ = await (async () => {
187
+ if (!swap) return undefined
188
+ const [inMeta, outMeta] = await Promise.all([
189
+ resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
190
+ resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
191
+ ])
192
+ if (!inMeta || !outMeta) return undefined
193
+ return {
194
+ calls: swap.calls.map((c) => ({ to: c.to, data: c.data })),
195
+ slippage: autoSwap!.slippage,
196
+ maxIn: {
197
+ token: swap.tokenIn,
198
+ value: Hex.fromNumber(swap.maxAmountIn) as `0x${string}`,
199
+ formatted: formatUnits(swap.maxAmountIn, inMeta.decimals),
200
+ decimals: inMeta.decimals,
201
+ symbol: inMeta.symbol,
202
+ name: inMeta.name,
203
+ },
204
+ minOut: {
205
+ token: swap.tokenOut,
206
+ value: Hex.fromNumber(swap.amountOut) as `0x${string}`,
207
+ formatted: formatUnits(swap.amountOut, outMeta.decimals),
208
+ decimals: outMeta.decimals,
209
+ symbol: outMeta.symbol,
210
+ name: outMeta.name,
211
+ },
212
+ }
213
+ })()
214
+
215
+ return RpcResponse.from(
216
+ {
217
+ result: {
218
+ tx: core_Transaction.toRpc(transaction_final as core_Transaction.Transaction),
219
+ capabilities: {
220
+ balanceDiffs,
221
+ fee,
222
+ sponsored: !!sponsor,
223
+ ...(sponsor ? { sponsor } : {}),
224
+ ...(autoSwap_ ? { autoSwap: autoSwap_ } : {}),
225
+ },
226
+ },
227
+ },
228
+ { request },
229
+ )
230
+ } catch (error) {
231
+ return Utils.rpcErrorJson(request, error)
223
232
  }
224
- })()
225
-
226
- return Utils.rpcResult(request, {
227
- tx: core_Transaction.toRpc(tx as core_Transaction.Transaction),
228
- capabilities: {
229
- balanceDiffs,
230
- fee,
231
- sponsored: !!sponsor,
232
- ...(sponsor ? { sponsor } : {}),
233
- ...(autoSwap_ ? { autoSwap: autoSwap_ } : {}),
234
- },
235
- })
236
- } catch (error) {
237
- return Utils.rpcError(request, error)
233
+ }
234
+
235
+ default: {
236
+ const result = await client.request(request as never)
237
+ return RpcResponse.from({ result }, { request })
238
+ }
238
239
  }
239
- })
240
+ }
240
241
 
241
- return router
242
- }
242
+ const router = from(rest)
243
243
 
244
- async function fill(
245
- client: Client,
246
- options: {
247
- autoSwap?: { slippage: number } | undefined
248
- feeToken?: Address | undefined
249
- transaction: Record<string, unknown>
250
- },
251
- ) {
252
- const { autoSwap, feeToken, transaction: request } = options
244
+ router.post(path, async (c) => {
245
+ const body = await c.req.raw.json()
246
+ const isBatch = Array.isArray(body)
253
247
 
254
- // Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
255
- const format = (value: Record<string, unknown>) =>
256
- value.type === '0x76' ? value : Utils.formatFillTransactionRequest(client, value)
248
+ if (!isBatch) {
249
+ const request = RpcRequest.from(body) as RpcRequest.RpcRequest<Schema.Ox>
250
+ return Response.json(await handleRequest(request))
251
+ }
257
252
 
258
- try {
259
- const result = await client.request({
260
- method: 'eth_fillTransaction',
261
- params: [format(request) as never],
262
- })
263
- return { transaction: Utils.normalizeTempoTransaction(result.tx) }
264
- } catch (error) {
265
- if (!(error instanceof Error)) throw error
266
- const parsed = parseInsufficientBalance(error)
267
- if (!parsed || !feeToken || !autoSwap) throw error
268
- if (parsed.token.toLowerCase() === feeToken.toLowerCase()) throw error
253
+ const responses = await Promise.all(
254
+ (body as unknown[]).map((item) =>
255
+ handleRequest(RpcRequest.from(item as never) as RpcRequest.RpcRequest<Schema.Ox>),
256
+ ),
257
+ )
258
+ return Response.json(responses)
259
+ })
269
260
 
270
- const deficit = parsed.required - parsed.available
271
- const maxAmountIn = deficit + (deficit * BigInt(Math.round(autoSwap.slippage * 1000))) / 1000n
272
- const swapCalls = buildSwapCalls(feeToken, parsed.token, deficit, maxAmountIn)
273
- const existingCalls = request.calls as Call[] | undefined
274
- // If the request was normalized to top-level to/data/value (single call),
275
- // convert back to a calls array so we can prepend swap calls.
276
- const originalCalls: Call[] = existingCalls
277
- ? [...existingCalls]
278
- : request.to
279
- ? [
280
- {
281
- to: request.to as Address,
282
- data: request.data as `0x${string}`,
283
- value: (request.value as bigint) ?? 0n,
284
- },
285
- ]
286
- : []
287
- const { to: _, data: __, value: ___, calls: ____, ...rest } = request
288
- const result = await client.request({
289
- method: 'eth_fillTransaction',
290
- params: [
291
- format({
292
- ...rest,
293
- calls: [...swapCalls, ...originalCalls],
294
- }) as never,
295
- ],
296
- })
297
- return {
298
- transaction: Utils.normalizeTempoTransaction(result.tx),
299
- swap: {
300
- calls: swapCalls,
301
- tokenIn: feeToken,
302
- tokenOut: parsed.token,
303
- amountOut: deficit,
304
- maxAmountIn,
305
- },
306
- }
307
- }
261
+ return router
308
262
  }
309
263
 
310
264
  export namespace relay {
@@ -381,6 +335,73 @@ export namespace relay {
381
335
  }
382
336
  }
383
337
 
338
+ // TODO: cleanup
339
+ async function fill(
340
+ client: Client,
341
+ options: {
342
+ autoSwap?: { slippage: number } | undefined
343
+ feeToken?: Address | undefined
344
+ transaction: Record<string, unknown>
345
+ },
346
+ ) {
347
+ const { autoSwap, feeToken, transaction: request } = options
348
+
349
+ // Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
350
+ const format = (value: Record<string, unknown>) =>
351
+ value.type === '0x76' ? value : Utils.formatFillTransactionRequest(client, value)
352
+
353
+ try {
354
+ const result = await client.request({
355
+ method: 'eth_fillTransaction',
356
+ params: [format(request) as never],
357
+ })
358
+ return { transaction: Utils.normalizeTempoTransaction(result.tx) }
359
+ } catch (error) {
360
+ if (!(error instanceof Error)) throw error
361
+ const parsed = parseInsufficientBalance(error)
362
+ if (!parsed || !feeToken || !autoSwap) throw error
363
+ if (parsed.token.toLowerCase() === feeToken.toLowerCase()) throw error
364
+
365
+ const deficit = parsed.required - parsed.available
366
+ const maxAmountIn = deficit + (deficit * BigInt(Math.round(autoSwap.slippage * 1000))) / 1000n
367
+ const swapCalls = buildSwapCalls(feeToken, parsed.token, deficit, maxAmountIn)
368
+ const existingCalls = request.calls as Call[] | undefined
369
+ // If the request was normalized to top-level to/data/value (single call),
370
+ // convert back to a calls array so we can prepend swap calls.
371
+ const originalCalls: Call[] = existingCalls
372
+ ? [...existingCalls]
373
+ : request.to
374
+ ? [
375
+ {
376
+ to: request.to as Address,
377
+ data: request.data as `0x${string}`,
378
+ value: (request.value as bigint) ?? 0n,
379
+ },
380
+ ]
381
+ : []
382
+ const { to: _, data: __, value: ___, calls: ____, ...rest } = request
383
+ const result = await client.request({
384
+ method: 'eth_fillTransaction',
385
+ params: [
386
+ format({
387
+ ...rest,
388
+ calls: [...swapCalls, ...originalCalls],
389
+ }) as never,
390
+ ],
391
+ })
392
+ return {
393
+ transaction: Utils.normalizeTempoTransaction(result.tx),
394
+ swap: {
395
+ calls: swapCalls,
396
+ tokenIn: feeToken,
397
+ tokenOut: parsed.token,
398
+ amountOut: deficit,
399
+ maxAmountIn,
400
+ },
401
+ }
402
+ }
403
+ }
404
+
384
405
  async function resolveFeeToken(
385
406
  client: Client,
386
407
  options: {
@@ -431,10 +452,9 @@ async function resolveFeeToken(
431
452
  if (!best || asset.balance > best.balance) best = asset
432
453
  }
433
454
  if (best) return best.address
434
-
435
- return Addresses.pathUsd as Address
436
455
  }
437
456
 
457
+ // TODO: cleanup/remove
438
458
  function extractCalls(transaction: Record<string, unknown>): readonly Call[] {
439
459
  const calls = transaction.calls as readonly Call[] | undefined
440
460
  if (calls && calls.length > 0)
@@ -452,6 +472,7 @@ function extractCalls(transaction: Record<string, unknown>): readonly Call[] {
452
472
  ] as readonly Call[]
453
473
  }
454
474
 
475
+ // TODO: cleanup/remove
455
476
  async function simulate(
456
477
  client: Client,
457
478
  options: {
@@ -39,39 +39,40 @@ export function normalizeTempoTransaction(value: Record<string, unknown> | undef
39
39
  return core_Transaction.fromRpc({ type: '0x76', ...value } as core_Transaction.Rpc)!
40
40
  }
41
41
 
42
- export function rpcError(request: RpcRequest.RpcRequest, error: unknown) {
42
+ /** Returns a raw JSON-RPC error response object (not wrapped in a `Response`). */
43
+ export function rpcErrorJson(request: RpcRequest.RpcRequest, error: unknown) {
43
44
  if (error instanceof RpcResponse.InvalidParamsError)
44
- return Response.json(RpcResponse.from({ error }, { request }))
45
+ return RpcResponse.from({ error }, { request })
45
46
 
46
47
  if (error instanceof RpcResponse.MethodNotSupportedError)
47
- return Response.json(RpcResponse.from({ error }, { request }))
48
+ return RpcResponse.from({ error }, { request })
48
49
 
49
50
  if ((error as { name?: string | undefined }).name === 'ZodError')
50
- return Response.json(
51
- RpcResponse.from(
52
- {
53
- error: new RpcResponse.InvalidParamsError({
54
- message: (error as Error).message,
55
- }),
56
- },
57
- { request },
58
- ),
51
+ return RpcResponse.from(
52
+ {
53
+ error: new RpcResponse.InvalidParamsError({
54
+ message: (error as Error).message,
55
+ }),
56
+ },
57
+ { request },
59
58
  )
60
59
 
61
60
  const inner = resolveError(error)
62
61
  const message = inner.message ?? (error as Error).message
63
62
  const code = inner.code ?? -32603
64
63
  const data = inner.data
65
- return Response.json(
66
- RpcResponse.from(
67
- {
68
- error: { code, message, ...(data ? { data } : {}) },
69
- },
70
- { request },
71
- ),
64
+ return RpcResponse.from(
65
+ {
66
+ error: { code, message, ...(data ? { data } : {}) },
67
+ },
68
+ { request },
72
69
  )
73
70
  }
74
71
 
72
+ export function rpcError(request: RpcRequest.RpcRequest, error: unknown) {
73
+ return Response.json(rpcErrorJson(request, error))
74
+ }
75
+
75
76
  export function rpcResult(request: RpcRequest.RpcRequest, result: unknown) {
76
77
  return Response.json(RpcResponse.from({ result }, { request }))
77
78
  }