tapimo 0.8.0 → 0.10.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.
Files changed (223) hide show
  1. package/dist/App.d.ts +7410 -7613
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +0 -1
  4. package/dist/App.js.map +1 -1
  5. package/dist/Webhooks.d.ts +21 -20
  6. package/dist/Webhooks.d.ts.map +1 -1
  7. package/dist/Webhooks.js +66 -23
  8. package/dist/Webhooks.js.map +1 -1
  9. package/dist/admin/apps/verified-tokens.d.ts +74 -74
  10. package/dist/apps/Zones.d.ts +34 -22
  11. package/dist/apps/Zones.d.ts.map +1 -1
  12. package/dist/apps/Zones.js +9 -8
  13. package/dist/apps/Zones.js.map +1 -1
  14. package/dist/apps/data/App.d.ts +3120 -2782
  15. package/dist/apps/data/App.d.ts.map +1 -1
  16. package/dist/apps/data/FxOracle.d.ts +4 -5
  17. package/dist/apps/data/FxOracle.d.ts.map +1 -1
  18. package/dist/apps/data/FxOracle.js +19 -4
  19. package/dist/apps/data/FxOracle.js.map +1 -1
  20. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  21. package/dist/apps/data/routes/activities.js +32 -27
  22. package/dist/apps/data/routes/activities.js.map +1 -1
  23. package/dist/apps/data/routes/addresses.d.ts +283 -52
  24. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  25. package/dist/apps/data/routes/balances.d.ts +291 -21
  26. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  27. package/dist/apps/data/routes/balances.js +232 -66
  28. package/dist/apps/data/routes/balances.js.map +1 -1
  29. package/dist/apps/data/routes/blocks.d.ts +4 -4
  30. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  31. package/dist/apps/data/routes/earn.d.ts +642 -126
  32. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  33. package/dist/apps/data/routes/earn.js +627 -58
  34. package/dist/apps/data/routes/earn.js.map +1 -1
  35. package/dist/apps/data/routes/exchanges.d.ts +120 -120
  36. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  37. package/dist/apps/data/routes/exchanges.js +114 -118
  38. package/dist/apps/data/routes/exchanges.js.map +1 -1
  39. package/dist/apps/data/routes/receipts.d.ts.map +1 -1
  40. package/dist/apps/data/routes/receipts.js +68 -47
  41. package/dist/apps/data/routes/receipts.js.map +1 -1
  42. package/dist/apps/data/routes/tokens.d.ts +2 -0
  43. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  44. package/dist/apps/data/routes/transactions.d.ts +59 -51
  45. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  46. package/dist/apps/data/routes/transactions.js +25 -23
  47. package/dist/apps/data/routes/transactions.js.map +1 -1
  48. package/dist/apps/data/routes/transfers.d.ts +40 -18
  49. package/dist/apps/data/routes/transfers.d.ts.map +1 -1
  50. package/dist/apps/data/routes/transfers.js +618 -105
  51. package/dist/apps/data/routes/transfers.js.map +1 -1
  52. package/dist/apps/data/routes/valuation.d.ts +21 -21
  53. package/dist/apps/data/routes/valuation.d.ts.map +1 -1
  54. package/dist/apps/data/routes/valuation.js +2 -2
  55. package/dist/apps/data/routes/valuation.js.map +1 -1
  56. package/dist/apps/data/routes/verified-tokens.d.ts +37 -37
  57. package/dist/apps/data/routes/webhooks.d.ts +102 -505
  58. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  59. package/dist/apps/data/routes/webhooks.js +484 -342
  60. package/dist/apps/data/routes/webhooks.js.map +1 -1
  61. package/dist/apps/data/routes/zones.d.ts +12 -12
  62. package/dist/apps/data/routes/zones.d.ts.map +1 -1
  63. package/dist/apps/data/routes/zones.js +3 -1
  64. package/dist/apps/data/routes/zones.js.map +1 -1
  65. package/dist/apps/funding/App.d.ts +127 -386
  66. package/dist/apps/funding/App.d.ts.map +1 -1
  67. package/dist/apps/funding/App.js +20 -5
  68. package/dist/apps/funding/App.js.map +1 -1
  69. package/dist/apps/funding/routes/deposit-addresses.d.ts +141 -532
  70. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
  71. package/dist/apps/funding/routes/deposit-addresses.js +21 -103
  72. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
  73. package/dist/apps/funding/routes/transfers.d.ts +4 -4
  74. package/dist/apps/funding/routes/transfers.js +5 -5
  75. package/dist/apps/funding/routes/transfers.js.map +1 -1
  76. package/dist/apps/management/App.d.ts +429 -727
  77. package/dist/apps/management/App.d.ts.map +1 -1
  78. package/dist/apps/management/routes/api-keys.d.ts +24 -24
  79. package/dist/apps/management/routes/billing.d.ts +72 -72
  80. package/dist/apps/management/routes/faucet.d.ts +6 -6
  81. package/dist/apps/management/routes/invite-links.d.ts +38 -38
  82. package/dist/apps/management/routes/me.d.ts +6 -6
  83. package/dist/apps/management/routes/members.d.ts +30 -30
  84. package/dist/apps/management/routes/projects.d.ts +20 -20
  85. package/dist/apps/management/routes/usage.d.ts +24 -24
  86. package/dist/apps/management/routes/webhooks.d.ts +158 -573
  87. package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
  88. package/dist/apps/mpp/App.d.ts +12 -0
  89. package/dist/apps/mpp/App.d.ts.map +1 -1
  90. package/dist/apps/mpp/Mpp.d.ts +3 -0
  91. package/dist/apps/mpp/Mpp.d.ts.map +1 -1
  92. package/dist/apps/mpp/Mpp.js +3 -0
  93. package/dist/apps/mpp/Mpp.js.map +1 -1
  94. package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
  95. package/dist/apps/mpp/internal/Adapter.js +9 -2
  96. package/dist/apps/mpp/internal/Adapter.js.map +1 -1
  97. package/dist/db/Db.d.ts +2 -2
  98. package/dist/db/Db.d.ts.map +1 -1
  99. package/dist/db/Db.js +25 -15
  100. package/dist/db/Db.js.map +1 -1
  101. package/dist/db/tables/fundingDeposits.d.ts +18 -1
  102. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  103. package/dist/db/tables/fundingDeposits.js +46 -2
  104. package/dist/db/tables/fundingDeposits.js.map +1 -1
  105. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  106. package/dist/db/tables/sponsoredTransactions.js +4 -1
  107. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  108. package/dist/db/tables/webhookSubscriptions.d.ts +56 -3
  109. package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
  110. package/dist/db/tables/webhookSubscriptions.js +76 -3
  111. package/dist/db/tables/webhookSubscriptions.js.map +1 -1
  112. package/dist/internal/Auth.d.ts +4 -0
  113. package/dist/internal/Auth.d.ts.map +1 -1
  114. package/dist/internal/Auth.js +11 -2
  115. package/dist/internal/Auth.js.map +1 -1
  116. package/dist/internal/MetricSink.d.ts +112 -3
  117. package/dist/internal/MetricSink.d.ts.map +1 -1
  118. package/dist/internal/MetricSink.js +116 -3
  119. package/dist/internal/MetricSink.js.map +1 -1
  120. package/dist/internal/Schema.js +1 -1
  121. package/dist/internal/Schema.js.map +1 -1
  122. package/dist/internal/Tidx.d.ts +1 -3
  123. package/dist/internal/Tidx.d.ts.map +1 -1
  124. package/dist/internal/Tidx.js +1 -3
  125. package/dist/internal/Tidx.js.map +1 -1
  126. package/dist/internal/Viem.d.ts.map +1 -1
  127. package/dist/internal/Viem.js +2 -1
  128. package/dist/internal/Viem.js.map +1 -1
  129. package/dist/internal/WebhookDestination.d.ts +2 -0
  130. package/dist/internal/WebhookDestination.d.ts.map +1 -1
  131. package/dist/internal/WebhookDestination.js +11 -0
  132. package/dist/internal/WebhookDestination.js.map +1 -1
  133. package/dist/internal/WebhookTransfer.d.ts +55 -0
  134. package/dist/internal/WebhookTransfer.d.ts.map +1 -0
  135. package/dist/internal/WebhookTransfer.js +296 -0
  136. package/dist/internal/WebhookTransfer.js.map +1 -0
  137. package/dist/internal/Webhooks.d.ts +37 -0
  138. package/dist/internal/Webhooks.d.ts.map +1 -1
  139. package/dist/internal/Webhooks.js +87 -13
  140. package/dist/internal/Webhooks.js.map +1 -1
  141. package/dist/internal/funding/Provider.d.ts +10 -6
  142. package/dist/internal/funding/Provider.d.ts.map +1 -1
  143. package/dist/internal/funding/Provider.js +11 -7
  144. package/dist/internal/funding/Provider.js.map +1 -1
  145. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  146. package/dist/internal/funding/Reconciliation.js +229 -16
  147. package/dist/internal/funding/Reconciliation.js.map +1 -1
  148. package/dist/internal/funding/providers/relay.d.ts +3 -0
  149. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  150. package/dist/internal/funding/providers/relay.js +18 -3
  151. package/dist/internal/funding/providers/relay.js.map +1 -1
  152. package/package.json +3 -3
  153. package/src/App.test.ts +32 -0
  154. package/src/App.ts +4 -1
  155. package/src/Client.test-d.ts +116 -38
  156. package/src/Webhooks.bench.ts +714 -0
  157. package/src/Webhooks.memory.bench.ts +250 -0
  158. package/src/Webhooks.test.ts +77 -6
  159. package/src/Webhooks.ts +83 -29
  160. package/src/apps/Zones.test.ts +5 -4
  161. package/src/apps/Zones.ts +9 -8
  162. package/src/apps/composition.test.ts +39 -10
  163. package/src/apps/data/FxOracle.test.ts +18 -0
  164. package/src/apps/data/FxOracle.ts +28 -5
  165. package/src/apps/data/routes/activities.test.ts +19 -0
  166. package/src/apps/data/routes/activities.ts +34 -30
  167. package/src/apps/data/routes/balances.test.ts +161 -10
  168. package/src/apps/data/routes/balances.ts +339 -147
  169. package/src/apps/data/routes/blocks.test.ts +12 -6
  170. package/src/apps/data/routes/earn.test.ts +286 -9
  171. package/src/apps/data/routes/earn.ts +841 -58
  172. package/src/apps/data/routes/exchanges.test.ts +7 -6
  173. package/src/apps/data/routes/exchanges.ts +124 -117
  174. package/src/apps/data/routes/receipts.test.ts +24 -7
  175. package/src/apps/data/routes/receipts.ts +67 -50
  176. package/src/apps/data/routes/tokens.test.ts +51 -0
  177. package/src/apps/data/routes/transactions.test.ts +42 -0
  178. package/src/apps/data/routes/transactions.ts +44 -39
  179. package/src/apps/data/routes/transfers.test.ts +402 -24
  180. package/src/apps/data/routes/transfers.ts +708 -101
  181. package/src/apps/data/routes/valuation.test.ts +26 -0
  182. package/src/apps/data/routes/valuation.ts +6 -2
  183. package/src/apps/data/routes/webhooks.test.ts +414 -130
  184. package/src/apps/data/routes/webhooks.ts +603 -419
  185. package/src/apps/data/routes/zones.ts +6 -1
  186. package/src/apps/funding/App.ts +20 -5
  187. package/src/apps/funding/routes/deposit-addresses.test.ts +43 -22
  188. package/src/apps/funding/routes/deposit-addresses.ts +34 -117
  189. package/src/apps/funding/routes/quotes.test.ts +1 -1
  190. package/src/apps/funding/routes/transfers.test.ts +6 -25
  191. package/src/apps/funding/routes/transfers.ts +5 -5
  192. package/src/apps/mpp/Mpp.test.ts +13 -1
  193. package/src/apps/mpp/Mpp.ts +8 -0
  194. package/src/apps/mpp/internal/Adapter.ts +10 -2
  195. package/src/db/Db.test.ts +40 -6
  196. package/src/db/Db.ts +42 -19
  197. package/src/db/tables/fundingDeposits.test.ts +101 -0
  198. package/src/db/tables/fundingDeposits.ts +71 -2
  199. package/src/db/tables/sponsoredTransactions.ts +9 -2
  200. package/src/db/tables/webhookSubscriptions.ts +116 -4
  201. package/src/internal/Auth.test.ts +28 -0
  202. package/src/internal/Auth.ts +15 -1
  203. package/src/internal/EarnVaults.test.ts +2 -2
  204. package/src/internal/MetricSink.test.ts +518 -0
  205. package/src/internal/MetricSink.ts +266 -9
  206. package/src/internal/Schema.ts +1 -1
  207. package/src/internal/Tidx.test.ts +4 -4
  208. package/src/internal/Tidx.ts +1 -3
  209. package/src/internal/Viem.test.ts +8 -0
  210. package/src/internal/Viem.ts +2 -1
  211. package/src/internal/WebhookDestination.test.ts +20 -0
  212. package/src/internal/WebhookDestination.ts +10 -0
  213. package/src/internal/WebhookTransfer.ts +426 -0
  214. package/src/internal/Webhooks.test.ts +137 -0
  215. package/src/internal/Webhooks.ts +131 -17
  216. package/src/internal/funding/Provider.test.ts +47 -7
  217. package/src/internal/funding/Provider.ts +16 -11
  218. package/src/internal/funding/Reconciliation.local.test.ts +3 -1
  219. package/src/internal/funding/Reconciliation.test.ts +1532 -54
  220. package/src/internal/funding/Reconciliation.ts +296 -53
  221. package/src/internal/funding/SourceObservation.test.ts +3 -2
  222. package/src/internal/funding/providers/relay.test.ts +1 -4
  223. package/src/internal/funding/providers/relay.ts +23 -3
@@ -51,7 +51,8 @@ export var schema;
51
51
  include: Schema.totalCountInclude,
52
52
  limit: Schema.Limit,
53
53
  page: Schema.Page,
54
- 'valuation.currency': Schema.Denomination,
54
+ 'valuation.currency': Schema.Denomination.check(z.describe('When present, include each holding’s nominal value in this denomination. ' +
55
+ 'Case-insensitive and must be priced by the configured FX oracle.')),
55
56
  verified: z
56
57
  .optional(Schema.booleanQuery())
57
58
  .check(z.describe('When `true`, include only tokens from Tempo’s curated verified token list.'), z.meta({ examples: [true] })),
@@ -83,9 +84,9 @@ export var schema;
83
84
  .check(z.describe('A stable resource ID for this balance, equal to the token contract address.'), z.meta({ examples: ['0x20c0000000000000000000008f5425160ebe5525'] })),
84
85
  token: Tokens.schema.Token,
85
86
  valuation: z
86
- .nullable(Valuation.schema.Value)
87
- .check(z.describe('The holding’s nominal value in the requested `valuation.currency`, or `null` when the ' +
88
- 'token is unverified, its display currency has no rate, or rates were unavailable.')),
87
+ .optional(z.nullable(Valuation.schema.Value))
88
+ .check(z.describe('The holding’s nominal value when `valuation.currency` is requested, or `null` when ' +
89
+ 'the token is unverified, its display currency has no rate, or rates were unavailable.')),
89
90
  }), 'One TIP-20 token balance held by this account, with both raw and human-readable amounts.');
90
91
  /** Page-level resources: opt-in counts plus valuation rate provenance. */
91
92
  getAddressBalances.Meta = z
@@ -111,21 +112,43 @@ export var schema;
111
112
  })
112
113
  .check(z.describe('A page of TIP-20 token balances held by this account.'));
113
114
  })(getAddressBalances = schema.getAddressBalances || (schema.getAddressBalances = {}));
115
+ /** Schemas for the getAddressBalance operation. */
116
+ let getAddressBalance;
117
+ (function (getAddressBalance) {
118
+ /** Path parameters for a single address balance request. */
119
+ getAddressBalance.Params = z
120
+ .object({
121
+ address: Schema.Address.check(z.describe('The account address whose token balance you want to read.')),
122
+ token: Schema.TokenAddress.check(z.describe('The TIP-20 token contract address.')),
123
+ })
124
+ .check(z.describe('Path parameters for reading one account token balance.'));
125
+ /** Query parameters for a single address balance request. */
126
+ getAddressBalance.Query = z
127
+ .strictObject({
128
+ chainId: Schema.ChainIdQuery,
129
+ 'valuation.currency': Schema.Denomination.check(z.describe('When present, include the holding’s nominal value in this denomination. ' +
130
+ 'Case-insensitive and must be priced by the configured FX oracle.')),
131
+ })
132
+ .check(z.describe('Query parameters for reading one account token balance.'));
133
+ /** A single TIP-20 token balance held by an address. */
134
+ getAddressBalance.Response = getAddressBalances.Balance.check(z.describe('One TIP-20 token balance held by this account.'));
135
+ })(getAddressBalance = schema.getAddressBalance || (schema.getAddressBalance = {}));
114
136
  })(schema || (schema = {}));
115
137
  /**
116
138
  * Creates address-scoped balance handlers, mounted under the `/addresses`
117
- * composer. Exposes `GET /:address/balances`, the held-balance page.
139
+ * composer. Exposes the held-balance page and individual token balances.
118
140
  */
119
141
  export function addresses(options = {}) {
120
142
  const oracle = options.fx?.oracle ?? FxOracle.ecb();
121
- return new Hono().get('/v1/addresses/:address/balances', Auth.policy({ apiKey: { scopes: ['data:read'] }, mpp: true, public: true }), OpenApi.validate('param', schema.getAddressBalances.Params, {
143
+ return new Hono()
144
+ .get('/v1/addresses/:address/balances', Auth.policy({ apiKey: { scopes: ['data:read'] }, mpp: true, public: true }), OpenApi.validate('param', schema.getAddressBalances.Params, {
122
145
  code: 'address_invalid',
123
146
  message: 'Invalid account address',
124
147
  }), OpenApi.validate('query', schema.getAddressBalances.Query, {
125
148
  code: 'query_invalid',
126
149
  message: 'Invalid query parameters',
127
150
  }), OpenApi.describeRoute({
128
- description: 'Lists how much of each TIP-20 token an account holds, ordered from largest to smallest balance. Amounts are returned in raw base units and human-readable form, and each verified holding carries its nominal value in the requested denomination.',
151
+ description: 'Lists how much of each TIP-20 token an account holds, ordered from largest to smallest balance. Amounts are returned in raw base units and human-readable form. Pass `valuation.currency` to include nominal values.',
129
152
  operationId: 'getAddressBalances',
130
153
  responses: OpenApi.responses({
131
154
  errors: { 502: 'Could not read balance or token data from an upstream service.' },
@@ -161,26 +184,13 @@ export function addresses(options = {}) {
161
184
  // `verified=true` from the caller's perspective.
162
185
  const verified = query.verified || query.currency !== undefined;
163
186
  const feeEligible = query.feeEligible ?? false;
164
- // The fee-token set powers both the per-row `feeEligible` flag (always)
165
- // and the optional `feeEligible=true` page restriction. It is memoized
166
- // per chain (a near-constant), so one read feeds the page, the count,
167
- // and the row enrichment. It is a best-effort enrichment: a lookup
168
- // failure omits `feeEligible` rather than failing the page — unless the
169
- // caller explicitly asked to filter by `feeEligible`, where the filter
170
- // can't be honored, so the failure surfaces as the declared `502`.
171
- const feeTokens = await FeeAmm.feeTokenSet(c, chainId).catch((cause) => {
172
- if (feeEligible)
173
- throw cause;
174
- return undefined;
175
- });
176
187
  const balances = await getAddressBalances(c, {
177
188
  address,
178
189
  chainId,
179
190
  currency: query.currency,
180
191
  cursor: query.cursor,
181
- denomination: query['valuation.currency'] ?? 'USD',
192
+ denomination: query['valuation.currency'],
182
193
  feeEligible,
183
- feeTokens,
184
194
  includeTotalCount: query.include.includes('totalCount'),
185
195
  limit: query.limit,
186
196
  oracle,
@@ -194,15 +204,122 @@ export function addresses(options = {}) {
194
204
  return Response.error(c, { code: 'query_invalid', message: cause.message, status: 400 });
195
205
  return Response.upstream(c, cause);
196
206
  }
207
+ })
208
+ .get('/v1/addresses/:address/balances/:token', Auth.policy({ apiKey: { scopes: ['data:read'] }, mpp: true, public: true }), OpenApi.validate('param', schema.getAddressBalance.Params, {
209
+ code: 'address_invalid',
210
+ message: 'Invalid address or token address',
211
+ }), OpenApi.validate('query', schema.getAddressBalance.Query, {
212
+ code: 'query_invalid',
213
+ message: 'Invalid query parameters',
214
+ }), OpenApi.describeRoute({
215
+ description: 'Returns the live balance of one TIP-20 token held by an account, including token metadata and a human-readable amount.',
216
+ operationId: 'getAddressBalance',
217
+ responses: OpenApi.responses({
218
+ errors: {
219
+ 404: {
220
+ description: 'The token is not a registered TIP-20 token.',
221
+ codes: ['token_not_found'],
222
+ },
223
+ 502: 'Could not read balance or token data from an upstream service.',
224
+ },
225
+ success: {
226
+ description: 'The requested token balance for this account.',
227
+ schema: schema.getAddressBalance.Response,
228
+ },
229
+ }),
230
+ summary: 'Get address balance',
231
+ tags: ['Balances'],
232
+ }), Cache.response({
233
+ cacheControl: Cache.policies.noStore,
234
+ name: 'tempo-api:addresses:v1',
235
+ key: (c) => Cache.urlKey(c, schema.getAddressBalance.Query),
236
+ }), async (c) => {
237
+ if (Auth.narrowAccess)
238
+ return Auth.paidAccessError(c);
239
+ if (OpenApi.narrowValidation)
240
+ return OpenApi.validationError(c, {
241
+ code: 'address_invalid',
242
+ message: 'Invalid request parameters',
243
+ });
244
+ if (OpenApi.narrowValidation)
245
+ return OpenApi.validationError(c, {
246
+ code: 'query_invalid',
247
+ message: 'Invalid request parameters',
248
+ });
249
+ const { address, token } = c.req.valid('param');
250
+ const query = c.req.valid('query');
251
+ const chainId = query.chainId ?? c.get('chainId');
252
+ const denomination = query['valuation.currency'];
253
+ try {
254
+ const rates = denomination
255
+ ? await Valuation.rateSet(c, oracle)
256
+ .then((rates) => {
257
+ if (denomination !== rates.base && rates.rates[denomination] === undefined)
258
+ throw new Valuation.UnsupportedDenominationError(denomination, oracle.name);
259
+ return rates;
260
+ })
261
+ .catch((cause) => {
262
+ if (cause instanceof Valuation.UnsupportedDenominationError)
263
+ throw cause;
264
+ return undefined;
265
+ })
266
+ : undefined;
267
+ const snapshotPromise = VerifiedTokens.snapshot(c, chainId);
268
+ const resolvedTokenPromise = snapshotPromise.then((snapshot) => Timing.time(c, 'token', () => Tokens.resolveToken(c, { address: token, chainId, include: [], snapshot })));
269
+ const [balance, feeTokens, snapshot, resolvedToken] = await Promise.all([
270
+ Timing.time(c, 'balance_rpc', async () => {
271
+ const result = await Actions.token.getBalance(c.get('getClient')(chainId), {
272
+ account: address,
273
+ token,
274
+ });
275
+ return result.amount;
276
+ }),
277
+ FeeAmm.feeTokenSet(c, chainId).catch(() => undefined),
278
+ snapshotPromise,
279
+ resolvedTokenPromise,
280
+ ]);
281
+ return c.json(Response.validated(schema.getAddressBalance.Response, {
282
+ amount: balance.toString(),
283
+ currency: resolvedToken.currency,
284
+ decimals: resolvedToken.decimals,
285
+ ...(feeTokens ? { feeEligible: feeTokens.has(token) } : {}),
286
+ formatted: core_Value.format(balance, resolvedToken.decimals),
287
+ id: token,
288
+ token: resolvedToken,
289
+ ...(denomination
290
+ ? {
291
+ valuation: Valuation.valuationFor({
292
+ amount: balance,
293
+ denomination,
294
+ rates,
295
+ token: snapshot.byAddress.get(token),
296
+ }),
297
+ }
298
+ : {}),
299
+ }), 200);
300
+ }
301
+ catch (cause) {
302
+ if (Tokens.isTokenNotFound(cause))
303
+ return Response.error(c, {
304
+ code: 'token_not_found',
305
+ message: 'Token not found',
306
+ status: 404,
307
+ });
308
+ if (cause instanceof Valuation.UnsupportedDenominationError)
309
+ return Response.error(c, { code: 'query_invalid', message: cause.message, status: 400 });
310
+ return Response.upstream(c, cause);
311
+ }
197
312
  });
198
313
  }
199
314
  async function getAddressBalances(c, options) {
200
- const { address, chainId, currency, denomination, feeEligible, feeTokens, includeTotalCount, limit, oracle, verified, } = options;
315
+ const { address, chainId, currency, denomination, feeEligible, includeTotalCount, limit, oracle, verified, } = options;
201
316
  const tidx = c.get('getTidx')(chainId);
202
317
  const cursor = options.cursor ? Cursor.decode(options.cursor, ['uint', 'address']) : undefined;
203
318
  const offset = options.page !== undefined && options.page > 1 ? (options.page - 1) * limit : 0;
204
- // Validate the requested denomination independently of the current page.
205
- await Valuation.ratesFor(c, { currencies: [], denomination, oracle });
319
+ // Validate an explicit denomination before balance discovery and correction
320
+ // so dependency failures cannot mask a caller error.
321
+ if (denomination)
322
+ await Valuation.ratesFor(c, { currencies: [], denomination, oracle });
206
323
  // Build the optional `token IN (…)` restriction before hitting TIDX. The
207
324
  // verified/`currency` filter and the `feeEligible` filter each contribute a set
208
325
  // of allowed addresses (`currency` matched case-insensitively so callers can
@@ -210,16 +327,31 @@ async function getAddressBalances(c, options) {
210
327
  // intersection. If any active filter rules every token out, return an empty
211
328
  // page without a round trip. The snapshot is reused for the page enrichment
212
329
  // below.
213
- const snapshot = await VerifiedTokens.snapshot(c, chainId);
214
- const allowed = allowedTokens({ currency, feeEligible, feeTokens, snapshot, verified });
330
+ const snapshotPromise = VerifiedTokens.snapshot(c, chainId);
331
+ // Fee filtering can fail before the concurrently started snapshot is awaited.
332
+ // Observing this branch prevents an unhandled rejection; the later await still propagates it.
333
+ void snapshotPromise.catch(() => undefined);
334
+ const [snapshot_filter, feeTokens_filter] = await Promise.all([
335
+ verified ? snapshotPromise : Promise.resolve(undefined),
336
+ feeEligible ? FeeAmm.feeTokenSet(c, chainId) : Promise.resolve(undefined),
337
+ ]);
338
+ const allowed = allowedTokens({
339
+ currency,
340
+ feeEligible,
341
+ feeTokens: feeTokens_filter,
342
+ snapshot: snapshot_filter,
343
+ verified,
344
+ });
215
345
  const tokenFilter = allowed?.map((address) => `'${address}'`);
216
- if (tokenFilter?.length === 0)
346
+ if (tokenFilter?.length === 0) {
347
+ await snapshotPromise;
217
348
  return {
218
349
  data: [],
219
350
  ...(includeTotalCount ? { meta: { totalCount: 0, totalCountCapped: false } } : {}),
220
351
  nextCursor: null,
221
352
  };
222
- const holdings = await Timing.time(c, 'balances_discovery', async () => {
353
+ }
354
+ const holdingsPromise = Timing.time(c, 'balances_discovery', async () => {
223
355
  const tokenIn = tokenFilter ? ` AND token IN (${tokenFilter.join(', ')})` : '';
224
356
  const result = await tidx.fetch({
225
357
  chainId,
@@ -237,33 +369,49 @@ async function getAddressBalances(c, options) {
237
369
  return token.success ? [{ address: token.data }] : [];
238
370
  });
239
371
  });
240
- if (holdings.length === 0)
372
+ // Correction starts as soon as discovery completes. Snapshot and fee-token
373
+ // cache misses continue concurrently until enrichment needs their results.
374
+ const correctedPromise = holdingsPromise.then(async (holdings) => {
375
+ if (holdings.length === 0)
376
+ return [];
377
+ const client = c.get('getClient')(chainId);
378
+ return Timing.time(c, 'balances_rpc', async () => {
379
+ // Concurrent reads enter viem's shared batch window and become one
380
+ // deployless multicall. A failed read fails the request rather than serving
381
+ // a stale or partial balance page.
382
+ const results = await Promise.all(holdings.map(async (holding) => {
383
+ const { amount } = await Actions.token.getBalance(client, {
384
+ account: address,
385
+ token: holding.address,
386
+ });
387
+ return amount === 0n ? undefined : { address: holding.address, amount: amount.toString() };
388
+ }));
389
+ const rows = results.filter((holding) => holding !== undefined);
390
+ rows.sort((a, b) => {
391
+ const delta = BigInt(b.amount) - BigInt(a.amount);
392
+ if (delta !== 0n)
393
+ return delta > 0n ? 1 : -1;
394
+ return a.address < b.address ? -1 : a.address > b.address ? 1 : 0;
395
+ });
396
+ return rows;
397
+ });
398
+ });
399
+ const feeTokensPromise = feeEligible
400
+ ? Promise.resolve(feeTokens_filter)
401
+ : holdingsPromise.then((holdings) => holdings.length === 0 ? undefined : FeeAmm.feeTokenSet(c, chainId).catch(() => undefined));
402
+ const [holdings, snapshot, feeTokens, corrected] = await Promise.all([
403
+ holdingsPromise,
404
+ snapshotPromise,
405
+ feeTokensPromise,
406
+ correctedPromise,
407
+ ]);
408
+ if (holdings.length === 0) {
241
409
  return {
242
410
  data: [],
243
411
  ...(includeTotalCount ? { meta: { totalCount: 0, totalCountCapped: false } } : {}),
244
412
  nextCursor: null,
245
413
  };
246
- const client = c.get('getClient')(chainId);
247
- const corrected = await Timing.time(c, 'balances_rpc', async () => {
248
- // Concurrent reads enter viem's shared batch window and become one
249
- // deployless multicall. A failed read fails the request rather than serving
250
- // a stale or partial balance page.
251
- const results = await Promise.all(holdings.map(async (holding) => {
252
- const { amount } = await Actions.token.getBalance(client, {
253
- account: address,
254
- token: holding.address,
255
- });
256
- return amount === 0n ? undefined : { address: holding.address, amount: amount.toString() };
257
- }));
258
- const rows = results.filter((holding) => holding !== undefined);
259
- rows.sort((a, b) => {
260
- const delta = BigInt(b.amount) - BigInt(a.amount);
261
- if (delta !== 0n)
262
- return delta > 0n ? 1 : -1;
263
- return a.address < b.address ? -1 : a.address > b.address ? 1 : 0;
264
- });
265
- return rows;
266
- });
414
+ }
267
415
  const positioned = (() => {
268
416
  if (!cursor)
269
417
  return corrected.slice(offset);
@@ -277,7 +425,7 @@ async function getAddressBalances(c, options) {
277
425
  limit,
278
426
  key: (holding) => [holding.amount, holding.address],
279
427
  });
280
- if (page.rows.length === 0)
428
+ if (page.rows.length === 0) {
281
429
  return {
282
430
  data: [],
283
431
  ...(includeTotalCount
@@ -285,18 +433,31 @@ async function getAddressBalances(c, options) {
285
433
  : {}),
286
434
  nextCursor: page.nextCursor,
287
435
  };
288
- const rates = await Valuation.ratesFor(c, {
289
- currencies: page.rows.flatMap((row) => {
290
- const held = snapshot.byAddress.get(row.address.toLowerCase())?.currency;
291
- return held === undefined ? [] : [held];
292
- }),
293
- denomination,
294
- oracle,
295
- });
436
+ }
437
+ const ratesPromise = denomination
438
+ ? Valuation.ratesFor(c, {
439
+ currencies: page.rows.flatMap((row) => {
440
+ const held = snapshot.byAddress.get(row.address.toLowerCase())?.currency;
441
+ return held === undefined ? [] : [held];
442
+ }),
443
+ denomination,
444
+ oracle,
445
+ })
446
+ : Promise.resolve(undefined);
296
447
  // Balance tokens retain their logo and verification metadata by default.
297
- const resolved = await Timing.time(c, 'tokens', () => Promise.all(page.rows.map(async (holding) => {
448
+ const resolvedPromise = Timing.time(c, 'tokens', () => Promise.all(page.rows.map(async (holding) => {
298
449
  try {
299
450
  const token = Schema.Address.parse(holding.address.toLowerCase());
451
+ const verifiedToken = snapshot.byAddress.get(token);
452
+ // The curated list owns verified-token metadata, but uploaded logos live only in the asset store.
453
+ if (verifiedToken)
454
+ return {
455
+ amount: holding.amount,
456
+ logoUri: verifiedToken.logoUri ??
457
+ (await Timing.time(c, 'token_logo', () => Tokens.getTokenLogo(c, { address: token, chainId })).catch(() => undefined)),
458
+ metadata: verifiedToken,
459
+ token,
460
+ };
300
461
  const [logoUri, metadata] = await Promise.all([
301
462
  Timing.time(c, 'token_logo', () => Tokens.getTokenLogo(c, { address: token, chainId })).catch(() => undefined),
302
463
  Timing.time(c, 'token_metadata', () => Tokens.getTokenMetadata(c, { address: token, chainId })),
@@ -307,6 +468,7 @@ async function getAddressBalances(c, options) {
307
468
  return undefined;
308
469
  }
309
470
  })));
471
+ const [rates, resolved] = await Promise.all([ratesPromise, resolvedPromise]);
310
472
  const data = [];
311
473
  for (const entry of resolved) {
312
474
  if (!entry)
@@ -330,12 +492,16 @@ async function getAddressBalances(c, options) {
330
492
  symbol: entry.metadata.symbol,
331
493
  verified: snapshot.byAddress.has(entry.token),
332
494
  },
333
- valuation: Valuation.valuationFor({
334
- amount: BigInt(entry.amount),
335
- denomination,
336
- rates,
337
- token: snapshot.byAddress.get(entry.token),
338
- }),
495
+ ...(denomination
496
+ ? {
497
+ valuation: Valuation.valuationFor({
498
+ amount: BigInt(entry.amount),
499
+ denomination,
500
+ rates,
501
+ token: snapshot.byAddress.get(entry.token),
502
+ }),
503
+ }
504
+ : {}),
339
505
  });
340
506
  }
341
507
  const meta = {
@@ -1 +1 @@
1
- {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/apps/data/routes/balances.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../../src/apps/data/routes/balances.ts"],"names":[],"mappings":"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"}
@@ -801,14 +801,14 @@ export declare function blocksByTimestampCompat(): import("hono/hono-base").Hono
801
801
  } | {
802
802
  output: {
803
803
  error: {
804
- code: "block_not_found";
804
+ code: "chain_id_unsupported";
805
805
  details?: readonly Response.error.Detail[] | undefined;
806
806
  message: string;
807
807
  };
808
808
  requestId: string;
809
809
  };
810
810
  outputFormat: "json";
811
- status: 404;
811
+ status: 400;
812
812
  input: {
813
813
  param: {
814
814
  chainId: string;
@@ -822,14 +822,14 @@ export declare function blocksByTimestampCompat(): import("hono/hono-base").Hono
822
822
  } | {
823
823
  output: {
824
824
  error: {
825
- code: "chain_id_unsupported";
825
+ code: "block_not_found";
826
826
  details?: readonly Response.error.Detail[] | undefined;
827
827
  message: string;
828
828
  };
829
829
  requestId: string;
830
830
  };
831
831
  outputFormat: "json";
832
- status: 400;
832
+ status: 404;
833
833
  input: {
834
834
  param: {
835
835
  chainId: string;