accounts 0.8.9 → 0.8.10

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.8.10
4
+
5
+ ### Patch Changes
6
+
7
+ - fc3d61c: Optimized `Handler.relay`'s `eth_fillTransaction` path with a speculative sponsored fill (skipping fee-token resolution when the sponsor accepts), KV-cached `Actions.fee.getUserToken` lookups, and a `capabilities.balanceDiffs: false` opt-out that skips the post-fill `tempo_simulateV1` round trip.
8
+
3
9
  ## 0.8.9
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;AAE3D,OAAO,EAGL,KAAK,KAAK,EAOV,KAAK,SAAS,EAEf,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAA0C,WAAW,EAAE,MAAM,YAAY,CAAA;AAIhF,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AACjC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAA;AAO5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAsa1D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC;;WAEG;QACH,QAAQ,CAAC,EACL,KAAK,GACL;YACE,yDAAyD;YACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC9B,GACD,SAAS,CAAA;QACb;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC7B;;;;WAIG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;QACjD;;;WAGG;QACH,QAAQ,CAAC,EACL;YACE,uCAAuC;YACvC,OAAO,EAAE,YAAY,CAAA;YACrB;;;eAGG;YACH,QAAQ,CAAC,EACL,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GACzE,SAAS,CAAA;YACb,gEAAgE;YAChE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,uDAAuD;YACvD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SACzB,GACD,SAAS,CAAA;QACb;;;;;WAKG;QACH,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,SAAS,CAAA;QACtB;;;;;WAKG;QACH,aAAa,CAAC,EACV,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,GACvF,SAAS,CAAA;QACb;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;QAC5B,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,EAGL,KAAK,KAAK,EAOV,KAAK,SAAS,EAEf,MAAM,MAAM,CAAA;AACb,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,eAAe,CAAA;AAGjD,OAAO,EAA0C,WAAW,EAAE,MAAM,YAAY,CAAA;AAIhF,OAAO,EAAE,KAAK,OAAO,EAAE,IAAI,EAAE,MAAM,kBAAkB,CAAA;AACrD,OAAO,KAAK,EAAE,MAAM,aAAa,CAAA;AAEjC,OAAO,KAAK,SAAS,MAAM,iBAAiB,CAAA;AAO5C;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAqCG;AACH,wBAAgB,KAAK,CAAC,OAAO,GAAE,KAAK,CAAC,OAAY,GAAG,OAAO,CAwc1D;AAED,yBAAiB,KAAK,CAAC;IACrB,KAAY,OAAO,GAAG,IAAI,CAAC,OAAO,GAAG;QACnC;;WAEG;QACH,QAAQ,CAAC,EACL,KAAK,GACL;YACE,yDAAyD;YACzD,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SAC9B,GACD,SAAS,CAAA;QACb;;;WAGG;QACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;QAC7B;;;;WAIG;QACH,MAAM,CAAC,EAAE,SAAS,CAAC,KAAK,EAAE,GAAG,KAAK,EAAE,CAAC,GAAG,SAAS,CAAA;QACjD;;;WAGG;QACH,QAAQ,CAAC,EACL;YACE,uCAAuC;YACvC,OAAO,EAAE,YAAY,CAAA;YACrB;;;eAGG;YACH,QAAQ,CAAC,EACL,CAAC,CAAC,OAAO,EAAE,WAAW,CAAC,kBAAkB,KAAK,OAAO,GAAG,OAAO,CAAC,OAAO,CAAC,CAAC,GACzE,SAAS,CAAA;YACb,gEAAgE;YAChE,IAAI,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;YACzB,uDAAuD;YACvD,GAAG,CAAC,EAAE,MAAM,GAAG,SAAS,CAAA;SACzB,GACD,SAAS,CAAA;QACb;;;;;WAKG;QACH,EAAE,CAAC,EAAE,EAAE,CAAC,EAAE,GAAG,SAAS,CAAA;QACtB;;;;;WAKG;QACH,aAAa,CAAC,EACV,CAAC,CAAC,OAAO,EAAE,MAAM,KAAK,SAAS,SAAS,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,SAAS,SAAS,CAAC,KAAK,EAAE,CAAC,CAAC,GACvF,SAAS,CAAA;QACb;;;;;;WAMG;QACH,QAAQ,CAAC,EAAE,KAAK,GAAG,SAAS,CAAA;QAC5B,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"}
@@ -8,6 +8,7 @@ import * as ExecutionError from '../../../core/ExecutionError.js';
8
8
  import * as Schema from '../../../core/Schema.js';
9
9
  import { from } from '../../Handler.js';
10
10
  import * as Kv from '../../Kv.js';
11
+ import { cached } from '../kv.js';
11
12
  import * as Tokenlist from '../tokenlist.js';
12
13
  import * as Sponsorship from './sponsorship.js';
13
14
  import * as Utils from './utils.js';
@@ -106,6 +107,11 @@ export function relay(options = {}) {
106
107
  const requestFeeToken = typeof parameters.feeToken === 'string' ? parameters.feeToken : undefined;
107
108
  const externalFeePayerUrl = typeof parameters.feePayer === 'string' ? parameters.feePayer : undefined;
108
109
  const requestsSponsorship = (!!feePayerOptions || !!externalFeePayerUrl) && parameters.feePayer !== false;
110
+ const capabilities = (parameters.capabilities ?? {});
111
+ // Default to `true`. Dapps that don't render diffs can pass
112
+ // `capabilities.balanceDiffs: false` to skip the post-fill
113
+ // `tempo_simulateV1` round trip (~250-400ms).
114
+ const requireBalanceDiffs = capabilities.balanceDiffs !== false;
109
115
  const { feePayer: _feePayer, ...normalized } = Utils.normalizeFillTransactionRequest(parameters);
110
116
  const baseTx = {
111
117
  ...normalized,
@@ -120,6 +126,7 @@ export function relay(options = {}) {
120
126
  ? async (insufficientToken) => resolveFeeToken(client, {
121
127
  account: from,
122
128
  feeToken: undefined,
129
+ kv,
123
130
  tokens: (await getTokens(chainId)).filter((t) => t.toLowerCase() !== insufficientToken.toLowerCase()),
124
131
  })
125
132
  : undefined;
@@ -156,6 +163,7 @@ export function relay(options = {}) {
156
163
  filled = await fill(fillClient, {
157
164
  autoSwap,
158
165
  feeToken,
166
+ kv,
159
167
  resolveFeeToken: resolveFeeTokenForSwap,
160
168
  transaction,
161
169
  });
@@ -163,8 +171,11 @@ export function relay(options = {}) {
163
171
  sponsored = true;
164
172
  }
165
173
  else if (requestsSponsorship && feePayerOptions?.validate) {
166
- // Path B: sponsorship possible but may be rejected — fill both
167
- // variants in parallel, then pick the right one.
174
+ // Path B: sponsorship possible but may be rejected.
175
+ // Speculatively fill the sponsored variant, validate, and only
176
+ // fall back to the unsponsored path on rejection. The accept
177
+ // case (common) avoids the upfront `resolveFeeToken` round
178
+ // trips and the second `eth_fillTransaction`.
168
179
  const sponsoredTx = { ...baseTx, feePayer: true };
169
180
  if (Sponsorship.isPreparedTransaction(sponsoredTx)) {
170
181
  // Already prepared — skip fills, just validate sponsorship.
@@ -180,39 +191,45 @@ export function relay(options = {}) {
180
191
  filled = prepared;
181
192
  }
182
193
  else {
183
- // Resolve a fee token for the unsponsored fallback so the
184
- // node doesn't pick one the user has zero balance of.
185
- const unsponsoredFeeToken = features.feeTokenResolution
186
- ? await resolveFeeToken(client, {
187
- account: from,
188
- feeToken: requestFeeToken,
189
- tokens: unsponsoredTokens,
190
- })
191
- : requestFeeToken;
192
- const unsponsoredTx = {
193
- ...baseTx,
194
- ...(unsponsoredFeeToken ? { feeToken: unsponsoredFeeToken } : {}),
195
- };
196
- const fillOptions = {
194
+ const options = {
197
195
  autoSwap,
196
+ kv,
198
197
  resolveFeeToken: resolveFeeTokenForSwap,
199
198
  };
200
- const [sponsoredFill, unsponsoredFill] = await Promise.all([
201
- fill(fillClient, { ...fillOptions, feeToken, transaction: sponsoredTx }),
202
- fill(client, {
203
- ...fillOptions,
204
- feeToken: unsponsoredFeeToken,
205
- transaction: unsponsoredTx,
206
- }),
207
- ]);
199
+ const fill_sponsored = await fill(fillClient, {
200
+ ...options,
201
+ feeToken,
202
+ transaction: sponsoredTx,
203
+ });
208
204
  sponsored = await Sponsorship.shouldSponsor({
209
205
  sender: from,
210
- transaction: sponsoredFill.transaction,
206
+ transaction: fill_sponsored.transaction,
211
207
  validate: feePayerOptions.validate,
212
208
  });
213
- filled = sponsored ? sponsoredFill : unsponsoredFill;
214
- if (!sponsored)
215
- feeToken = unsponsoredFeeToken;
209
+ if (sponsored) {
210
+ filled = fill_sponsored;
211
+ }
212
+ else {
213
+ // Sponsor rejected — resolve fee token and fill unsponsored.
214
+ const feeToken_unsponsored = features.feeTokenResolution
215
+ ? await resolveFeeToken(client, {
216
+ account: from,
217
+ feeToken: requestFeeToken,
218
+ kv,
219
+ tokens: unsponsoredTokens,
220
+ })
221
+ : requestFeeToken;
222
+ const tx_unsponsored = {
223
+ ...baseTx,
224
+ ...(feeToken_unsponsored ? { feeToken: feeToken_unsponsored } : {}),
225
+ };
226
+ filled = await fill(client, {
227
+ ...options,
228
+ feeToken: feeToken_unsponsored,
229
+ transaction: tx_unsponsored,
230
+ });
231
+ feeToken = feeToken_unsponsored;
232
+ }
216
233
  }
217
234
  }
218
235
  else {
@@ -221,6 +238,7 @@ export function relay(options = {}) {
221
238
  ? await resolveFeeToken(client, {
222
239
  account: from,
223
240
  feeToken: requestFeeToken,
241
+ kv,
224
242
  tokens: unsponsoredTokens,
225
243
  })
226
244
  : requestFeeToken;
@@ -228,6 +246,7 @@ export function relay(options = {}) {
228
246
  filled = await fill(client, {
229
247
  autoSwap,
230
248
  feeToken,
249
+ kv,
231
250
  resolveFeeToken: resolveFeeTokenForSwap,
232
251
  transaction,
233
252
  });
@@ -242,26 +261,41 @@ export function relay(options = {}) {
242
261
  transaction_filled.feePayerSignature != null;
243
262
  const [{ balanceDiffs, fee }, transaction_final, autoSwap_] = await Promise.all([
244
263
  // Simulate and compute balance diffs + fee.
245
- features.simulate
246
- ? simulateAndParseDiffs(client, {
247
- account: from,
248
- calls: extractCalls(transaction_filled),
249
- swap,
264
+ // When `capabilities.balanceDiffs` is `false`, skip simulate
265
+ // and compute fee directly from cached metadata.
266
+ (async () => {
267
+ if (!features.simulate)
268
+ return { balanceDiffs: undefined, fee: undefined };
269
+ if (requireBalanceDiffs)
270
+ return simulateAndParseDiffs(client, {
271
+ account: from,
272
+ calls: extractCalls(transaction_filled),
273
+ swap,
274
+ feeToken,
275
+ gas: transaction_filled.gas,
276
+ kv,
277
+ maxFeePerGas: transaction_filled.maxFeePerGas,
278
+ });
279
+ const fee = await computeFee(client, {
250
280
  feeToken,
251
281
  gas: transaction_filled.gas,
282
+ kv,
252
283
  maxFeePerGas: transaction_filled.maxFeePerGas,
253
- })
254
- : { balanceDiffs: undefined, fee: undefined },
284
+ }).catch(() => undefined);
285
+ return { balanceDiffs: undefined, fee };
286
+ })(),
255
287
  // Sign as fee payer (if sponsored and not already signed).
256
- sponsored && feePayerOptions && !alreadySigned
257
- ? Sponsorship.sign({
288
+ (async () => {
289
+ if (!(sponsored && feePayerOptions && !alreadySigned))
290
+ return transaction_filled;
291
+ return Sponsorship.sign({
258
292
  account: feePayerOptions.account,
259
293
  sender: from,
260
294
  transaction: transaction_filled,
261
- })
262
- : Promise.resolve(transaction_filled),
295
+ });
296
+ })(),
263
297
  // Resolve autoSwap metadata (when AMM path was taken).
264
- resolveAutoSwapMetadata(client, { autoSwap, swap }),
298
+ resolveAutoSwapMetadata(client, { autoSwap, kv, swap }),
265
299
  ]);
266
300
  const sponsor = (() => {
267
301
  if (!sponsored)
@@ -311,13 +345,14 @@ export function relay(options = {}) {
311
345
  ? await simulateAndParseDiffs(client, {
312
346
  account: zeroAddress,
313
347
  calls: optimisticCalls,
348
+ kv,
314
349
  })
315
350
  : { balanceDiffs: undefined };
316
351
  // Re-key balance diffs from zero address to the real sender.
317
352
  const senderDiffs = parameters.from && balanceDiffs
318
353
  ? { [parameters.from]: balanceDiffs[zeroAddress] ?? [] }
319
354
  : balanceDiffs;
320
- const metadata = await resolveTokenMetadata(client, token).catch(() => undefined);
355
+ const metadata = await resolveTokenMetadata(client, { token, kv }).catch(() => undefined);
321
356
  const deficit = required - available;
322
357
  return RpcResponse.from({
323
358
  result: {
@@ -409,7 +444,7 @@ export function relay(options = {}) {
409
444
  }
410
445
  // TODO: cleanup
411
446
  async function fill(client, options) {
412
- const { autoSwap, feeToken, transaction: request } = options;
447
+ const { autoSwap, feeToken, kv, transaction: request } = options;
413
448
  // Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
414
449
  const format = (value) => value.type === '0x76' ? value : Utils.formatFillTransactionRequest(client, value);
415
450
  // Re-fill the transaction with prepended swap calls so the user can
@@ -505,7 +540,7 @@ async function fill(client, options) {
505
540
  Actions.token
506
541
  .getBalance(client, { account: fromAddress, token: resolvedFeeToken })
507
542
  .catch(() => 0n),
508
- resolveTokenMetadata(client, resolvedFeeToken).catch(() => undefined),
543
+ resolveTokenMetadata(client, { token: resolvedFeeToken, kv }).catch(() => undefined),
509
544
  ]);
510
545
  if (metadata) {
511
546
  const requiredFee = (gas * maxFeePerGas) / 10n ** BigInt(Math.max(0, 18 - metadata.decimals));
@@ -545,13 +580,26 @@ async function fill(client, options) {
545
580
  }
546
581
  }
547
582
  async function resolveFeeToken(client, options) {
548
- const { feeToken, account, tokens } = options;
583
+ const { feeToken, account, kv, tokens } = options;
549
584
  if (feeToken)
550
585
  return feeToken;
551
586
  if (!account)
552
587
  return undefined;
588
+ // Cache the user's preferred fee token for `userTokenCacheTtl` seconds.
589
+ // The on-chain preference rarely changes; a short TTL avoids the
590
+ // ~150-250ms `userTokens` multicall on every unsponsored fill while
591
+ // still picking up updates within a minute. The cached value is just a
592
+ // hint — if the user's balance is 0 we fall back to the highest-balance
593
+ // token from the configured list.
594
+ const getUserToken = () => Actions.fee.getUserToken(client, { account }).catch(() => null);
595
+ const userTokenPromise = kv
596
+ ? cached(kv, `fee.userToken:${client.chain?.id ?? 0}:${account.toLowerCase()}`, async () => {
597
+ const result = await getUserToken();
598
+ return result ? { address: result.address } : null;
599
+ }, { ttl: options.userTokenCacheTtl ?? 60 })
600
+ : getUserToken();
553
601
  const [userToken, balances] = await Promise.all([
554
- Actions.fee.getUserToken(client, { account }).catch(() => null),
602
+ userTokenPromise,
555
603
  tokens
556
604
  ? Promise.all(tokens.map(async (token) => ({
557
605
  address: token,
@@ -656,7 +704,7 @@ async function simulate(client, options) {
656
704
  }
657
705
  }
658
706
  async function simulateAndParseDiffs(client, options) {
659
- const { account, calls, swap, feeToken, gas, maxFeePerGas } = options;
707
+ const { account, calls, swap, feeToken, gas, kv, maxFeePerGas } = options;
660
708
  try {
661
709
  const { results, tokenMetadata } = await simulate(client, {
662
710
  account: account === zeroAddress ? undefined : account,
@@ -671,6 +719,7 @@ async function simulateAndParseDiffs(client, options) {
671
719
  const balanceDiffs = account
672
720
  ? await buildBalanceDiffs(client, {
673
721
  account,
722
+ kv,
674
723
  logs,
675
724
  swap,
676
725
  tokenMetadata: tokenMetadata,
@@ -680,6 +729,7 @@ async function simulateAndParseDiffs(client, options) {
680
729
  const fee = await computeFee(client, {
681
730
  feeToken,
682
731
  gas,
732
+ kv,
683
733
  maxFeePerGas,
684
734
  tokenMetadata: tokenMetadata,
685
735
  }).catch(() => undefined);
@@ -688,12 +738,12 @@ async function simulateAndParseDiffs(client, options) {
688
738
  catch {
689
739
  // Simulation failures should not block the fill response —
690
740
  // return empty diffs with fee computed from transaction fields.
691
- const fee = await computeFee(client, { feeToken, gas, maxFeePerGas });
741
+ const fee = await computeFee(client, { feeToken, gas, kv, maxFeePerGas });
692
742
  return { balanceDiffs: undefined, fee };
693
743
  }
694
744
  }
695
745
  async function buildBalanceDiffs(client, options) {
696
- const { account, logs, swap, tokenMetadata } = options;
746
+ const { account, kv, logs, swap, tokenMetadata } = options;
697
747
  const accountLower = account.toLowerCase();
698
748
  const dexLower = Addresses.stablecoinDex.toLowerCase();
699
749
  const swapTokenIn = swap?.tokenIn.toLowerCase();
@@ -772,7 +822,11 @@ async function buildBalanceDiffs(client, options) {
772
822
  const metadataMap = new Map();
773
823
  await Promise.all(entries.map(async (entry) => {
774
824
  try {
775
- const metadata = await resolveTokenMetadata(client, entry.token, tokenMetadata);
825
+ const metadata = await resolveTokenMetadata(client, {
826
+ token: entry.token,
827
+ tokenMetadata,
828
+ kv,
829
+ });
776
830
  metadataMap.set(entry.token.toLowerCase(), metadata);
777
831
  }
778
832
  catch { }
@@ -799,9 +853,17 @@ async function buildBalanceDiffs(client, options) {
799
853
  }
800
854
  return { [account]: diffs };
801
855
  }
802
- async function resolveTokenMetadata(client, token, tokenMetadata) {
856
+ async function resolveTokenMetadata(client, options) {
857
+ const { token, tokenMetadata, kv } = options;
803
858
  const meta = tokenMetadata?.[token] ?? tokenMetadata?.[token.toLowerCase()];
804
- const fallback = await Actions.token.getMetadata(client, { token });
859
+ // TIP-20 metadata (decimals/symbol/name) is immutable per token, so cache
860
+ // long-term in KV. Skips the multicall RPC on cache hits.
861
+ const fetcher = () => Actions.token.getMetadata(client, { token });
862
+ const fallback = kv
863
+ ? await cached(kv, `tokenMetadata:${client.chain?.id ?? 0}:${token.toLowerCase()}`, fetcher, {
864
+ ttl: 24 * 60 * 60,
865
+ })
866
+ : await fetcher();
805
867
  return {
806
868
  decimals: fallback.decimals ?? 6,
807
869
  symbol: meta?.symbol || fallback.symbol,
@@ -809,12 +871,12 @@ async function resolveTokenMetadata(client, token, tokenMetadata) {
809
871
  };
810
872
  }
811
873
  async function resolveAutoSwapMetadata(client, options) {
812
- const { autoSwap, swap } = options;
874
+ const { autoSwap, kv, swap } = options;
813
875
  if (!autoSwap || !swap)
814
876
  return undefined;
815
877
  const [inMeta, outMeta] = await Promise.all([
816
- resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
817
- resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
878
+ resolveTokenMetadata(client, { token: swap.tokenIn, kv }).catch(() => undefined),
879
+ resolveTokenMetadata(client, { token: swap.tokenOut, kv }).catch(() => undefined),
818
880
  ]);
819
881
  if (!inMeta || !outMeta)
820
882
  return undefined;
@@ -840,11 +902,11 @@ async function resolveAutoSwapMetadata(client, options) {
840
902
  };
841
903
  }
842
904
  async function computeFee(client, options) {
843
- const { feeToken, gas, maxFeePerGas, tokenMetadata } = options;
905
+ const { feeToken, gas, kv, maxFeePerGas, tokenMetadata } = options;
844
906
  if (!feeToken || !gas || !maxFeePerGas)
845
907
  return undefined;
846
908
  try {
847
- const metadata = await resolveTokenMetadata(client, feeToken, tokenMetadata);
909
+ const metadata = await resolveTokenMetadata(client, { token: feeToken, tokenMetadata, kv });
848
910
  const raw = gas * maxFeePerGas;
849
911
  const amount = raw / 10n ** BigInt(18 - metadata.decimals);
850
912
  return {
@@ -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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"}
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.8.9",
5
+ "version": "0.8.10",
6
6
  "dependencies": {
7
7
  "hono": "^4.12.14",
8
8
  "idb-keyval": "^6.2.2",
@@ -22,6 +22,7 @@ import * as ExecutionError from '../../../core/ExecutionError.js'
22
22
  import * as Schema from '../../../core/Schema.js'
23
23
  import { type Handler, from } from '../../Handler.js'
24
24
  import * as Kv from '../../Kv.js'
25
+ import { cached } from '../kv.js'
25
26
  import * as Tokenlist from '../tokenlist.js'
26
27
  import * as Sponsorship from './sponsorship.js'
27
28
  import * as Utils from './utils.js'
@@ -148,6 +149,11 @@ export function relay(options: relay.Options = {}): Handler {
148
149
  typeof parameters.feePayer === 'string' ? parameters.feePayer : undefined
149
150
  const requestsSponsorship =
150
151
  (!!feePayerOptions || !!externalFeePayerUrl) && parameters.feePayer !== false
152
+ const capabilities = (parameters.capabilities ?? {}) as Record<string, unknown>
153
+ // Default to `true`. Dapps that don't render diffs can pass
154
+ // `capabilities.balanceDiffs: false` to skip the post-fill
155
+ // `tempo_simulateV1` round trip (~250-400ms).
156
+ const requireBalanceDiffs = capabilities.balanceDiffs !== false
151
157
 
152
158
  const { feePayer: _feePayer, ...normalized } =
153
159
  Utils.normalizeFillTransactionRequest(parameters)
@@ -167,6 +173,7 @@ export function relay(options: relay.Options = {}): Handler {
167
173
  resolveFeeToken(client, {
168
174
  account: from,
169
175
  feeToken: undefined,
176
+ kv,
170
177
  tokens: (await getTokens(chainId)).filter(
171
178
  (t) => t.toLowerCase() !== insufficientToken.toLowerCase(),
172
179
  ),
@@ -209,14 +216,18 @@ export function relay(options: relay.Options = {}): Handler {
209
216
  filled = await fill(fillClient, {
210
217
  autoSwap,
211
218
  feeToken,
219
+ kv,
212
220
  resolveFeeToken: resolveFeeTokenForSwap,
213
221
  transaction,
214
222
  })
215
223
  }
216
224
  sponsored = true
217
225
  } else if (requestsSponsorship && feePayerOptions?.validate) {
218
- // Path B: sponsorship possible but may be rejected — fill both
219
- // variants in parallel, then pick the right one.
226
+ // Path B: sponsorship possible but may be rejected.
227
+ // Speculatively fill the sponsored variant, validate, and only
228
+ // fall back to the unsponsored path on rejection. The accept
229
+ // case (common) avoids the upfront `resolveFeeToken` round
230
+ // trips and the second `eth_fillTransaction`.
220
231
  const sponsoredTx = { ...baseTx, feePayer: true }
221
232
 
222
233
  if (Sponsorship.isPreparedTransaction(sponsoredTx)) {
@@ -232,38 +243,44 @@ export function relay(options: relay.Options = {}): Handler {
232
243
  })
233
244
  filled = prepared
234
245
  } else {
235
- // Resolve a fee token for the unsponsored fallback so the
236
- // node doesn't pick one the user has zero balance of.
237
- const unsponsoredFeeToken = features.feeTokenResolution
238
- ? await resolveFeeToken(client, {
239
- account: from,
240
- feeToken: requestFeeToken,
241
- tokens: unsponsoredTokens,
242
- })
243
- : requestFeeToken
244
- const unsponsoredTx = {
245
- ...baseTx,
246
- ...(unsponsoredFeeToken ? { feeToken: unsponsoredFeeToken } : {}),
247
- }
248
- const fillOptions = {
246
+ const options = {
249
247
  autoSwap,
248
+ kv,
250
249
  resolveFeeToken: resolveFeeTokenForSwap,
251
250
  }
252
- const [sponsoredFill, unsponsoredFill] = await Promise.all([
253
- fill(fillClient, { ...fillOptions, feeToken, transaction: sponsoredTx }),
254
- fill(client, {
255
- ...fillOptions,
256
- feeToken: unsponsoredFeeToken,
257
- transaction: unsponsoredTx,
258
- }),
259
- ])
251
+ const fill_sponsored = await fill(fillClient, {
252
+ ...options,
253
+ feeToken,
254
+ transaction: sponsoredTx,
255
+ })
260
256
  sponsored = await Sponsorship.shouldSponsor({
261
257
  sender: from,
262
- transaction: sponsoredFill.transaction,
258
+ transaction: fill_sponsored.transaction,
263
259
  validate: feePayerOptions!.validate,
264
260
  })
265
- filled = sponsored ? sponsoredFill : unsponsoredFill
266
- if (!sponsored) feeToken = unsponsoredFeeToken
261
+ if (sponsored) {
262
+ filled = fill_sponsored
263
+ } else {
264
+ // Sponsor rejected — resolve fee token and fill unsponsored.
265
+ const feeToken_unsponsored = features.feeTokenResolution
266
+ ? await resolveFeeToken(client, {
267
+ account: from,
268
+ feeToken: requestFeeToken,
269
+ kv,
270
+ tokens: unsponsoredTokens,
271
+ })
272
+ : requestFeeToken
273
+ const tx_unsponsored = {
274
+ ...baseTx,
275
+ ...(feeToken_unsponsored ? { feeToken: feeToken_unsponsored } : {}),
276
+ }
277
+ filled = await fill(client, {
278
+ ...options,
279
+ feeToken: feeToken_unsponsored,
280
+ transaction: tx_unsponsored,
281
+ })
282
+ feeToken = feeToken_unsponsored
283
+ }
267
284
  }
268
285
  } else {
269
286
  // Path C: no sponsorship configured — resolve fee token, fill once.
@@ -271,6 +288,7 @@ export function relay(options: relay.Options = {}): Handler {
271
288
  ? await resolveFeeToken(client, {
272
289
  account: from,
273
290
  feeToken: requestFeeToken,
291
+ kv,
274
292
  tokens: unsponsoredTokens,
275
293
  })
276
294
  : requestFeeToken
@@ -278,6 +296,7 @@ export function relay(options: relay.Options = {}): Handler {
278
296
  filled = await fill(client, {
279
297
  autoSwap,
280
298
  feeToken,
299
+ kv,
281
300
  resolveFeeToken: resolveFeeTokenForSwap,
282
301
  transaction,
283
302
  })
@@ -296,26 +315,39 @@ export function relay(options: relay.Options = {}): Handler {
296
315
 
297
316
  const [{ balanceDiffs, fee }, transaction_final, autoSwap_] = await Promise.all([
298
317
  // Simulate and compute balance diffs + fee.
299
- features.simulate
300
- ? simulateAndParseDiffs(client, {
318
+ // When `capabilities.balanceDiffs` is `false`, skip simulate
319
+ // and compute fee directly from cached metadata.
320
+ (async () => {
321
+ if (!features.simulate) return { balanceDiffs: undefined, fee: undefined }
322
+ if (requireBalanceDiffs)
323
+ return simulateAndParseDiffs(client, {
301
324
  account: from,
302
325
  calls: extractCalls(transaction_filled),
303
326
  swap,
304
327
  feeToken,
305
328
  gas: transaction_filled.gas,
329
+ kv,
306
330
  maxFeePerGas: transaction_filled.maxFeePerGas,
307
331
  })
308
- : { balanceDiffs: undefined, fee: undefined },
332
+ const fee = await computeFee(client, {
333
+ feeToken,
334
+ gas: transaction_filled.gas,
335
+ kv,
336
+ maxFeePerGas: transaction_filled.maxFeePerGas,
337
+ }).catch(() => undefined)
338
+ return { balanceDiffs: undefined, fee }
339
+ })(),
309
340
  // Sign as fee payer (if sponsored and not already signed).
310
- sponsored && feePayerOptions && !alreadySigned
311
- ? Sponsorship.sign({
312
- account: feePayerOptions.account,
313
- sender: from,
314
- transaction: transaction_filled,
315
- })
316
- : Promise.resolve(transaction_filled),
341
+ (async () => {
342
+ if (!(sponsored && feePayerOptions && !alreadySigned)) return transaction_filled
343
+ return Sponsorship.sign({
344
+ account: feePayerOptions.account,
345
+ sender: from,
346
+ transaction: transaction_filled,
347
+ })
348
+ })(),
317
349
  // Resolve autoSwap metadata (when AMM path was taken).
318
- resolveAutoSwapMetadata(client, { autoSwap, swap }),
350
+ resolveAutoSwapMetadata(client, { autoSwap, kv, swap }),
319
351
  ])
320
352
 
321
353
  const sponsor = (() => {
@@ -370,6 +402,7 @@ export function relay(options: relay.Options = {}): Handler {
370
402
  ? await simulateAndParseDiffs(client, {
371
403
  account: zeroAddress,
372
404
  calls: optimisticCalls,
405
+ kv,
373
406
  })
374
407
  : { balanceDiffs: undefined }
375
408
 
@@ -379,7 +412,9 @@ export function relay(options: relay.Options = {}): Handler {
379
412
  ? { [parameters.from]: balanceDiffs[zeroAddress] ?? [] }
380
413
  : balanceDiffs
381
414
 
382
- const metadata = await resolveTokenMetadata(client, token).catch(() => undefined)
415
+ const metadata = await resolveTokenMetadata(client, { token, kv }).catch(
416
+ () => undefined,
417
+ )
383
418
  const deficit = required - available
384
419
  return RpcResponse.from(
385
420
  {
@@ -569,16 +604,8 @@ export namespace relay {
569
604
  }
570
605
 
571
606
  // TODO: cleanup
572
- async function fill(
573
- client: Client,
574
- options: {
575
- autoSwap?: { slippage: number } | undefined
576
- feeToken?: Address | undefined
577
- resolveFeeToken?: ((insufficientToken: Address) => Promise<Address | undefined>) | undefined
578
- transaction: Record<string, unknown>
579
- },
580
- ) {
581
- const { autoSwap, feeToken, transaction: request } = options
607
+ async function fill(client: Client, options: fill.Options) {
608
+ const { autoSwap, feeToken, kv, transaction: request } = options
582
609
 
583
610
  // Skip re-formatting if already in RPC format (e.g. from viem's fillTransaction).
584
611
  const format = (value: Record<string, unknown>) =>
@@ -688,7 +715,7 @@ async function fill(
688
715
  Actions.token
689
716
  .getBalance(client, { account: fromAddress, token: resolvedFeeToken })
690
717
  .catch(() => 0n),
691
- resolveTokenMetadata(client, resolvedFeeToken).catch(() => undefined),
718
+ resolveTokenMetadata(client, { token: resolvedFeeToken, kv }).catch(() => undefined),
692
719
  ])
693
720
  if (metadata) {
694
721
  const requiredFee =
@@ -728,20 +755,45 @@ async function fill(
728
755
  }
729
756
  }
730
757
 
758
+ declare namespace fill {
759
+ type Options = {
760
+ autoSwap?: { slippage: number } | undefined
761
+ feeToken?: Address | undefined
762
+ kv?: Kv.Kv | undefined
763
+ resolveFeeToken?: ((insufficientToken: Address) => Promise<Address | undefined>) | undefined
764
+ transaction: Record<string, unknown>
765
+ }
766
+ }
767
+
731
768
  async function resolveFeeToken(
732
769
  client: Client,
733
- options: {
734
- feeToken?: Address | undefined
735
- account?: Address | undefined
736
- tokens?: readonly Address[] | undefined
737
- },
770
+ options: resolveFeeToken.Options,
738
771
  ): Promise<Address | undefined> {
739
- const { feeToken, account, tokens } = options
772
+ const { feeToken, account, kv, tokens } = options
740
773
  if (feeToken) return feeToken
741
774
  if (!account) return undefined
742
775
 
776
+ // Cache the user's preferred fee token for `userTokenCacheTtl` seconds.
777
+ // The on-chain preference rarely changes; a short TTL avoids the
778
+ // ~150-250ms `userTokens` multicall on every unsponsored fill while
779
+ // still picking up updates within a minute. The cached value is just a
780
+ // hint — if the user's balance is 0 we fall back to the highest-balance
781
+ // token from the configured list.
782
+ const getUserToken = () => Actions.fee.getUserToken(client, { account }).catch(() => null)
783
+ const userTokenPromise = kv
784
+ ? cached(
785
+ kv,
786
+ `fee.userToken:${client.chain?.id ?? 0}:${account.toLowerCase()}`,
787
+ async () => {
788
+ const result = await getUserToken()
789
+ return result ? { address: result.address } : null
790
+ },
791
+ { ttl: options.userTokenCacheTtl ?? 60 },
792
+ )
793
+ : getUserToken()
794
+
743
795
  const [userToken, balances] = await Promise.all([
744
- Actions.fee.getUserToken(client, { account }).catch(() => null),
796
+ userTokenPromise,
745
797
  tokens
746
798
  ? Promise.all(
747
799
  tokens.map(async (token) => ({
@@ -780,6 +832,17 @@ async function resolveFeeToken(
780
832
  if (best) return best.address
781
833
  }
782
834
 
835
+ declare namespace resolveFeeToken {
836
+ type Options = {
837
+ feeToken?: Address | undefined
838
+ account?: Address | undefined
839
+ kv?: Kv.Kv | undefined
840
+ tokens?: readonly Address[] | undefined
841
+ /** TTL in seconds for the cached `userTokens` lookup. @default 60 */
842
+ userTokenCacheTtl?: number | undefined
843
+ }
844
+ }
845
+
783
846
  /**
784
847
  * Extracts unique TIP20 token addresses (Tempo `0x20c0…` prefix) that the
785
848
  * transaction's calls target. Used as fallback fee-token candidates so a
@@ -821,13 +884,7 @@ function extractCalls(transaction: Record<string, unknown>): readonly Call[] {
821
884
  }
822
885
 
823
886
  // TODO: cleanup/remove
824
- async function simulate(
825
- client: Client,
826
- options: {
827
- account?: Address | undefined
828
- calls: readonly Call[]
829
- },
830
- ) {
887
+ async function simulate(client: Client, options: simulate.Options) {
831
888
  const { account, calls } = options
832
889
  try {
833
890
  return await Actions.simulate.simulateCalls(client, {
@@ -851,18 +908,15 @@ async function simulate(
851
908
  }
852
909
  }
853
910
 
854
- async function simulateAndParseDiffs(
855
- client: Client,
856
- options: {
911
+ declare namespace simulate {
912
+ type Options = {
857
913
  account?: Address | undefined
858
914
  calls: readonly Call[]
859
- swap?: { tokenIn: Address; tokenOut: Address } | undefined
860
- feeToken?: Address | undefined
861
- gas?: bigint | undefined
862
- maxFeePerGas?: bigint | undefined
863
- },
864
- ) {
865
- const { account, calls, swap, feeToken, gas, maxFeePerGas } = options
915
+ }
916
+ }
917
+
918
+ async function simulateAndParseDiffs(client: Client, options: simulateAndParseDiffs.Options) {
919
+ const { account, calls, swap, feeToken, gas, kv, maxFeePerGas } = options
866
920
 
867
921
  try {
868
922
  const { results, tokenMetadata } = await simulate(client, {
@@ -879,6 +933,7 @@ async function simulateAndParseDiffs(
879
933
  const balanceDiffs = account
880
934
  ? await buildBalanceDiffs(client, {
881
935
  account,
936
+ kv,
882
937
  logs,
883
938
  swap,
884
939
  tokenMetadata: tokenMetadata as never,
@@ -889,6 +944,7 @@ async function simulateAndParseDiffs(
889
944
  const fee = await computeFee(client, {
890
945
  feeToken,
891
946
  gas,
947
+ kv,
892
948
  maxFeePerGas,
893
949
  tokenMetadata: tokenMetadata as never,
894
950
  }).catch(() => undefined)
@@ -897,21 +953,25 @@ async function simulateAndParseDiffs(
897
953
  } catch {
898
954
  // Simulation failures should not block the fill response —
899
955
  // return empty diffs with fee computed from transaction fields.
900
- const fee = await computeFee(client, { feeToken, gas, maxFeePerGas })
956
+ const fee = await computeFee(client, { feeToken, gas, kv, maxFeePerGas })
901
957
  return { balanceDiffs: undefined, fee }
902
958
  }
903
959
  }
904
960
 
905
- async function buildBalanceDiffs(
906
- client: Client,
907
- options: {
908
- account: Address
909
- logs: Log[]
961
+ declare namespace simulateAndParseDiffs {
962
+ type Options = {
963
+ account?: Address | undefined
964
+ calls: readonly Call[]
910
965
  swap?: { tokenIn: Address; tokenOut: Address } | undefined
911
- tokenMetadata: Record<Address, { name: string; symbol: string; currency: string }>
912
- },
913
- ) {
914
- const { account, logs, swap, tokenMetadata } = options
966
+ feeToken?: Address | undefined
967
+ gas?: bigint | undefined
968
+ kv?: Kv.Kv | undefined
969
+ maxFeePerGas?: bigint | undefined
970
+ }
971
+ }
972
+
973
+ async function buildBalanceDiffs(client: Client, options: buildBalanceDiffs.Options) {
974
+ const { account, kv, logs, swap, tokenMetadata } = options
915
975
  const accountLower = account.toLowerCase()
916
976
  const dexLower = Addresses.stablecoinDex.toLowerCase()
917
977
  const swapTokenIn = swap?.tokenIn.toLowerCase()
@@ -999,7 +1059,11 @@ async function buildBalanceDiffs(
999
1059
  await Promise.all(
1000
1060
  entries.map(async (entry) => {
1001
1061
  try {
1002
- const metadata = await resolveTokenMetadata(client, entry.token, tokenMetadata)
1062
+ const metadata = await resolveTokenMetadata(client, {
1063
+ token: entry.token,
1064
+ tokenMetadata,
1065
+ kv,
1066
+ })
1003
1067
  metadataMap.set(entry.token.toLowerCase(), metadata)
1004
1068
  } catch {}
1005
1069
  }),
@@ -1031,13 +1095,27 @@ async function buildBalanceDiffs(
1031
1095
  return { [account]: diffs }
1032
1096
  }
1033
1097
 
1034
- async function resolveTokenMetadata(
1035
- client: Client,
1036
- token: Address,
1037
- tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined,
1038
- ) {
1098
+ declare namespace buildBalanceDiffs {
1099
+ type Options = {
1100
+ account: Address
1101
+ kv?: Kv.Kv | undefined
1102
+ logs: Log[]
1103
+ swap?: { tokenIn: Address; tokenOut: Address } | undefined
1104
+ tokenMetadata: Record<Address, { name: string; symbol: string; currency: string }>
1105
+ }
1106
+ }
1107
+
1108
+ async function resolveTokenMetadata(client: Client, options: resolveTokenMetadata.Options) {
1109
+ const { token, tokenMetadata, kv } = options
1039
1110
  const meta = tokenMetadata?.[token] ?? tokenMetadata?.[token.toLowerCase() as Address]
1040
- const fallback = await Actions.token.getMetadata(client, { token })
1111
+ // TIP-20 metadata (decimals/symbol/name) is immutable per token, so cache
1112
+ // long-term in KV. Skips the multicall RPC on cache hits.
1113
+ const fetcher = () => Actions.token.getMetadata(client, { token })
1114
+ const fallback = kv
1115
+ ? await cached(kv, `tokenMetadata:${client.chain?.id ?? 0}:${token.toLowerCase()}`, fetcher, {
1116
+ ttl: 24 * 60 * 60,
1117
+ })
1118
+ : await fetcher()
1041
1119
  return {
1042
1120
  decimals: fallback.decimals ?? 6,
1043
1121
  symbol: meta?.symbol || fallback.symbol,
@@ -1045,26 +1123,20 @@ async function resolveTokenMetadata(
1045
1123
  }
1046
1124
  }
1047
1125
 
1048
- async function resolveAutoSwapMetadata(
1049
- client: Client,
1050
- options: {
1051
- autoSwap?: { slippage: number } | undefined
1052
- swap?:
1053
- | {
1054
- calls: readonly { to: Address; data: `0x${string}` }[]
1055
- tokenIn: Address
1056
- tokenOut: Address
1057
- amountOut: bigint
1058
- maxAmountIn: bigint
1059
- }
1060
- | undefined
1061
- },
1062
- ) {
1063
- const { autoSwap, swap } = options
1126
+ declare namespace resolveTokenMetadata {
1127
+ type Options = {
1128
+ token: Address
1129
+ tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined
1130
+ kv?: Kv.Kv | undefined
1131
+ }
1132
+ }
1133
+
1134
+ async function resolveAutoSwapMetadata(client: Client, options: resolveAutoSwapMetadata.Options) {
1135
+ const { autoSwap, kv, swap } = options
1064
1136
  if (!autoSwap || !swap) return undefined
1065
1137
  const [inMeta, outMeta] = await Promise.all([
1066
- resolveTokenMetadata(client, swap.tokenIn).catch(() => undefined),
1067
- resolveTokenMetadata(client, swap.tokenOut).catch(() => undefined),
1138
+ resolveTokenMetadata(client, { token: swap.tokenIn, kv }).catch(() => undefined),
1139
+ resolveTokenMetadata(client, { token: swap.tokenOut, kv }).catch(() => undefined),
1068
1140
  ])
1069
1141
  if (!inMeta || !outMeta) return undefined
1070
1142
  return {
@@ -1089,20 +1161,28 @@ async function resolveAutoSwapMetadata(
1089
1161
  }
1090
1162
  }
1091
1163
 
1092
- async function computeFee(
1093
- client: Client,
1094
- options: {
1095
- feeToken?: Address | undefined
1096
- gas?: bigint | undefined
1097
- maxFeePerGas?: bigint | undefined
1098
- tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined
1099
- },
1100
- ) {
1101
- const { feeToken, gas, maxFeePerGas, tokenMetadata } = options
1164
+ declare namespace resolveAutoSwapMetadata {
1165
+ type Options = {
1166
+ autoSwap?: { slippage: number } | undefined
1167
+ kv?: Kv.Kv | undefined
1168
+ swap?:
1169
+ | {
1170
+ calls: readonly { to: Address; data: `0x${string}` }[]
1171
+ tokenIn: Address
1172
+ tokenOut: Address
1173
+ amountOut: bigint
1174
+ maxAmountIn: bigint
1175
+ }
1176
+ | undefined
1177
+ }
1178
+ }
1179
+
1180
+ async function computeFee(client: Client, options: computeFee.Options) {
1181
+ const { feeToken, gas, kv, maxFeePerGas, tokenMetadata } = options
1102
1182
  if (!feeToken || !gas || !maxFeePerGas) return undefined
1103
1183
 
1104
1184
  try {
1105
- const metadata = await resolveTokenMetadata(client, feeToken, tokenMetadata)
1185
+ const metadata = await resolveTokenMetadata(client, { token: feeToken, tokenMetadata, kv })
1106
1186
  const raw = gas * maxFeePerGas
1107
1187
  const amount = raw / 10n ** BigInt(18 - metadata.decimals)
1108
1188
  return {
@@ -1116,6 +1196,16 @@ async function computeFee(
1116
1196
  }
1117
1197
  }
1118
1198
 
1199
+ declare namespace computeFee {
1200
+ type Options = {
1201
+ feeToken?: Address | undefined
1202
+ gas?: bigint | undefined
1203
+ kv?: Kv.Kv | undefined
1204
+ maxFeePerGas?: bigint | undefined
1205
+ tokenMetadata?: Record<Address, { name: string; symbol: string; currency: string }> | undefined
1206
+ }
1207
+ }
1208
+
1119
1209
  function buildSwapCalls(
1120
1210
  sourceToken: Address,
1121
1211
  targetToken: Address,