tapimo 0.4.3 → 0.5.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 (192) hide show
  1. package/dist/App.d.ts +7222 -6316
  2. package/dist/App.d.ts.map +1 -1
  3. package/dist/App.js +4 -0
  4. package/dist/App.js.map +1 -1
  5. package/dist/Scope.d.ts +18 -1
  6. package/dist/Scope.d.ts.map +1 -1
  7. package/dist/Scope.js +24 -3
  8. package/dist/Scope.js.map +1 -1
  9. package/dist/admin/apps/verified-tokens.d.ts +116 -116
  10. package/dist/apps/data/App.d.ts +2541 -2607
  11. package/dist/apps/data/App.d.ts.map +1 -1
  12. package/dist/apps/data/App.js +135 -44
  13. package/dist/apps/data/App.js.map +1 -1
  14. package/dist/apps/data/FundingQuoteProviders.d.ts +36 -0
  15. package/dist/apps/data/FundingQuoteProviders.d.ts.map +1 -0
  16. package/dist/apps/data/FundingQuoteProviders.js +190 -0
  17. package/dist/apps/data/FundingQuoteProviders.js.map +1 -0
  18. package/dist/apps/data/index.d.ts +1 -1
  19. package/dist/apps/data/index.js +1 -1
  20. package/dist/apps/data/routes/activities.d.ts +242 -242
  21. package/dist/apps/data/routes/addresses.d.ts +227 -227
  22. package/dist/apps/data/routes/balances.d.ts +12 -12
  23. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  24. package/dist/apps/data/routes/balances.js +67 -149
  25. package/dist/apps/data/routes/balances.js.map +1 -1
  26. package/dist/apps/data/routes/blocks.d.ts +125 -126
  27. package/dist/apps/data/routes/blocks.d.ts.map +1 -1
  28. package/dist/apps/data/routes/blocks.js +3 -5
  29. package/dist/apps/data/routes/blocks.js.map +1 -1
  30. package/dist/apps/data/routes/coingecko.d.ts +55 -54
  31. package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
  32. package/dist/apps/data/routes/coingecko.js +3 -8
  33. package/dist/apps/data/routes/coingecko.js.map +1 -1
  34. package/dist/apps/data/routes/exchanges.d.ts +455 -455
  35. package/dist/apps/data/routes/fee-amm.d.ts +92 -92
  36. package/dist/apps/data/routes/funding.d.ts +91 -864
  37. package/dist/apps/data/routes/funding.d.ts.map +1 -1
  38. package/dist/apps/data/routes/funding.js +138 -450
  39. package/dist/apps/data/routes/funding.js.map +1 -1
  40. package/dist/apps/data/routes/rpc.d.ts.map +1 -1
  41. package/dist/apps/data/routes/rpc.js +86 -16
  42. package/dist/apps/data/routes/rpc.js.map +1 -1
  43. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  44. package/dist/apps/data/routes/webhooks.d.ts +340 -0
  45. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  46. package/dist/apps/data/routes/webhooks.js +13 -1
  47. package/dist/apps/data/routes/webhooks.js.map +1 -1
  48. package/dist/apps/index.d.ts +1 -1
  49. package/dist/apps/index.js +1 -1
  50. package/dist/apps/management/App.d.ts +1843 -861
  51. package/dist/apps/management/App.d.ts.map +1 -1
  52. package/dist/apps/management/App.js +4 -0
  53. package/dist/apps/management/App.js.map +1 -1
  54. package/dist/apps/management/routes/api-keys.d.ts +121 -121
  55. package/dist/apps/management/routes/api-keys.js +2 -2
  56. package/dist/apps/management/routes/api-keys.js.map +1 -1
  57. package/dist/apps/management/routes/billing.d.ts +2 -2
  58. package/dist/apps/management/routes/invite-links.d.ts +1100 -0
  59. package/dist/apps/management/routes/invite-links.d.ts.map +1 -0
  60. package/dist/apps/management/routes/invite-links.js +411 -0
  61. package/dist/apps/management/routes/invite-links.js.map +1 -0
  62. package/dist/apps/management/routes/me.d.ts +13 -13
  63. package/dist/apps/management/routes/members.d.ts +77 -77
  64. package/dist/apps/management/routes/orgs.d.ts +96 -96
  65. package/dist/apps/management/routes/projects.d.ts +62 -62
  66. package/dist/apps/management/routes/scopes.d.ts +11 -11
  67. package/dist/apps/management/routes/scopes.d.ts.map +1 -1
  68. package/dist/apps/management/routes/scopes.js +2 -2
  69. package/dist/apps/management/routes/scopes.js.map +1 -1
  70. package/dist/apps/management/routes/usage.d.ts +79 -79
  71. package/dist/apps/mcp.d.ts.map +1 -1
  72. package/dist/apps/mcp.js +3 -1
  73. package/dist/apps/mcp.js.map +1 -1
  74. package/dist/apps/relay/App.d.ts.map +1 -1
  75. package/dist/apps/relay/App.js +42 -4
  76. package/dist/apps/relay/App.js.map +1 -1
  77. package/dist/cloudflare.d.ts +2 -0
  78. package/dist/cloudflare.d.ts.map +1 -1
  79. package/dist/cloudflare.js +4 -0
  80. package/dist/cloudflare.js.map +1 -1
  81. package/dist/db/Db.d.ts +3 -0
  82. package/dist/db/Db.d.ts.map +1 -1
  83. package/dist/db/Db.js +57 -0
  84. package/dist/db/Db.js.map +1 -1
  85. package/dist/db/Schema.d.ts +31 -0
  86. package/dist/db/Schema.d.ts.map +1 -1
  87. package/dist/db/Schema.js +31 -0
  88. package/dist/db/Schema.js.map +1 -1
  89. package/dist/db/tables/inviteLinks.d.ts +42 -0
  90. package/dist/db/tables/inviteLinks.d.ts.map +1 -0
  91. package/dist/db/tables/inviteLinks.js +148 -0
  92. package/dist/db/tables/inviteLinks.js.map +1 -0
  93. package/dist/db/tables/organizations.d.ts.map +1 -1
  94. package/dist/db/tables/organizations.js +2 -0
  95. package/dist/db/tables/organizations.js.map +1 -1
  96. package/dist/handlers/relay.d.ts.map +1 -1
  97. package/dist/handlers/relay.js +13 -3
  98. package/dist/handlers/relay.js.map +1 -1
  99. package/dist/internal/Auth.d.ts +42 -23
  100. package/dist/internal/Auth.d.ts.map +1 -1
  101. package/dist/internal/Auth.js +169 -20
  102. package/dist/internal/Auth.js.map +1 -1
  103. package/dist/internal/EdgeCache.d.ts +3 -1
  104. package/dist/internal/EdgeCache.d.ts.map +1 -1
  105. package/dist/internal/EdgeCache.js +17 -2
  106. package/dist/internal/EdgeCache.js.map +1 -1
  107. package/dist/internal/Errors.d.ts +6 -0
  108. package/dist/internal/Errors.d.ts.map +1 -0
  109. package/dist/internal/Errors.js +16 -0
  110. package/dist/internal/Errors.js.map +1 -0
  111. package/dist/internal/FundingQuotes.d.ts +644 -0
  112. package/dist/internal/FundingQuotes.d.ts.map +1 -0
  113. package/dist/internal/{FundingRoutes.js → FundingQuotes.js} +93 -289
  114. package/dist/internal/FundingQuotes.js.map +1 -0
  115. package/dist/internal/Store.d.ts +61 -16
  116. package/dist/internal/Store.d.ts.map +1 -1
  117. package/dist/internal/Store.js +72 -17
  118. package/dist/internal/Store.js.map +1 -1
  119. package/dist/internal/Viem.d.ts +2 -0
  120. package/dist/internal/Viem.d.ts.map +1 -1
  121. package/dist/internal/Viem.js +11 -2
  122. package/dist/internal/Viem.js.map +1 -1
  123. package/dist/internal/index.d.ts +27 -0
  124. package/dist/internal/index.d.ts.map +1 -0
  125. package/dist/internal/index.js +27 -0
  126. package/dist/internal/index.js.map +1 -0
  127. package/package.json +8 -3
  128. package/src/ApiKeys.test.ts +23 -0
  129. package/src/App.test-d.ts +2 -0
  130. package/src/App.test.ts +60 -4
  131. package/src/App.ts +6 -0
  132. package/src/Client.test-d.ts +16 -54
  133. package/src/Scope.test.ts +1 -0
  134. package/src/Scope.ts +30 -4
  135. package/src/apps/data/App.test.ts +354 -0
  136. package/src/apps/data/App.ts +159 -52
  137. package/src/apps/data/FundingQuoteProviders.test.ts +151 -0
  138. package/src/apps/data/FundingQuoteProviders.ts +251 -0
  139. package/src/apps/data/index.ts +1 -1
  140. package/src/apps/data/routes/balances.test.ts +64 -18
  141. package/src/apps/data/routes/balances.ts +76 -177
  142. package/src/apps/data/routes/blocks.ts +3 -5
  143. package/src/apps/data/routes/coingecko.ts +3 -8
  144. package/src/apps/data/routes/funding.test.ts +149 -306
  145. package/src/apps/data/routes/funding.ts +154 -604
  146. package/src/apps/data/routes/indexer.test.ts +99 -3
  147. package/src/apps/data/routes/rpc.test.ts +219 -0
  148. package/src/apps/data/routes/rpc.ts +92 -17
  149. package/src/apps/data/routes/webhooks.test.ts +23 -2
  150. package/src/apps/data/routes/webhooks.ts +13 -1
  151. package/src/apps/index.ts +1 -1
  152. package/src/apps/management/App.ts +4 -0
  153. package/src/apps/management/routes/api-keys.test.ts +47 -3
  154. package/src/apps/management/routes/api-keys.ts +2 -2
  155. package/src/apps/management/routes/invite-links.test.ts +385 -0
  156. package/src/apps/management/routes/invite-links.ts +570 -0
  157. package/src/apps/management/routes/scopes.test.ts +3 -2
  158. package/src/apps/management/routes/scopes.ts +4 -2
  159. package/src/apps/mcp.test.ts +55 -14
  160. package/src/apps/mcp.ts +3 -1
  161. package/src/apps/relay/App.test.ts +324 -4
  162. package/src/apps/relay/App.ts +40 -4
  163. package/src/cloudflare.ts +5 -0
  164. package/src/db/Db.ts +65 -0
  165. package/src/db/Schema.ts +39 -0
  166. package/src/db/tables/inviteLinks.ts +187 -0
  167. package/src/db/tables/organizations.ts +2 -0
  168. package/src/handlers/relay.ts +16 -4
  169. package/src/internal/Auth.test.ts +528 -37
  170. package/src/internal/Auth.ts +246 -45
  171. package/src/internal/EdgeCache.test.ts +24 -3
  172. package/src/internal/EdgeCache.ts +18 -2
  173. package/src/internal/FundingQuotes.test.ts +174 -0
  174. package/src/internal/FundingQuotes.ts +735 -0
  175. package/src/internal/Log.test.ts +4 -4
  176. package/src/internal/Store.test-d.ts +15 -0
  177. package/src/internal/Store.test.ts +153 -2
  178. package/src/internal/Store.ts +157 -41
  179. package/src/internal/Viem.ts +14 -5
  180. package/src/internal/index.test.ts +34 -0
  181. package/src/internal/index.ts +26 -0
  182. package/dist/apps/data/FundingRouteProviders.d.ts +0 -143
  183. package/dist/apps/data/FundingRouteProviders.d.ts.map +0 -1
  184. package/dist/apps/data/FundingRouteProviders.js +0 -546
  185. package/dist/apps/data/FundingRouteProviders.js.map +0 -1
  186. package/dist/internal/FundingRoutes.d.ts +0 -1085
  187. package/dist/internal/FundingRoutes.d.ts.map +0 -1
  188. package/dist/internal/FundingRoutes.js.map +0 -1
  189. package/src/apps/data/FundingRouteProviders.test.ts +0 -485
  190. package/src/apps/data/FundingRouteProviders.ts +0 -744
  191. package/src/internal/FundingRoutes.test.ts +0 -239
  192. package/src/internal/FundingRoutes.ts +0 -1067
@@ -1,546 +0,0 @@
1
- import * as z from 'zod/mini';
2
- import * as FundingRoutes from '../../internal/FundingRoutes.js';
3
- const defaultFetch = (input, init) => globalThis.fetch(input, init);
4
- const defaultAcrossBaseUrl = 'https://app.across.to/api';
5
- const defaultRelayBaseUrl = 'https://api.relay.link';
6
- var schema;
7
- (function (schema) {
8
- const DecimalString = z.string().check(z.regex(/^\d+(\.\d+)?$/));
9
- const IntegerString = z.string().check(z.regex(/^\d+$/));
10
- const AcrossToken = z.object({
11
- address: z.string(),
12
- chainId: z.number().check(z.int(), z.nonnegative()),
13
- decimals: z.number().check(z.int(), z.nonnegative()),
14
- symbol: z.string(),
15
- });
16
- const AcrossFee = z.object({
17
- amount: IntegerString,
18
- amountUsd: DecimalString,
19
- pct: IntegerString,
20
- token: AcrossToken,
21
- });
22
- schema.AcrossQuote = z.object({
23
- amountType: z.literal('exactInput'),
24
- expectedFillTime: z.number().check(z.int(), z.nonnegative()),
25
- expectedOutputAmount: IntegerString,
26
- fees: z.object({
27
- total: AcrossFee,
28
- totalMax: AcrossFee,
29
- }),
30
- inputAmount: IntegerString,
31
- inputToken: AcrossToken,
32
- minOutputAmount: IntegerString,
33
- outputToken: AcrossToken,
34
- quoteExpiryTimestamp: z.number().check(z.int(), z.nonnegative()),
35
- });
36
- })(schema || (schema = {}));
37
- /** Creates the live funding route adapters configured for this deployment. */
38
- export function createAdapters(options = {}) {
39
- return {
40
- ...(options.across ? { across: across(options.across) } : {}),
41
- ...(options.relay ? { relay: relay(options.relay) } : {}),
42
- };
43
- }
44
- /** Creates an Across discovery adapter backed by `/suggested-fees`. */
45
- export function across(options) {
46
- const baseUrl = normalizeBaseUrl(options.baseUrl ?? defaultAcrossBaseUrl);
47
- const fetcher = options.fetch ?? defaultFetch;
48
- const now = options.now ?? (() => new Date());
49
- return {
50
- async probeQuote({ route }, signal) {
51
- const sourceChainId = providerChainId(route.sourceChain, 'across');
52
- const destinationChainId = eip155ChainId(route.destinationChain);
53
- const url = new URL(`${baseUrl}/suggested-fees`);
54
- url.search = new URLSearchParams({
55
- allowUnmatchedDecimals: 'true',
56
- amount: route.sourceAmount.amount,
57
- destinationChainId,
58
- inputToken: route.sourceToken.address,
59
- integratorId: options.integratorId,
60
- originChainId: sourceChainId,
61
- outputToken: route.destinationToken.address,
62
- }).toString();
63
- try {
64
- const body = await requestJson(url, {
65
- fetcher,
66
- headers: { Authorization: `Bearer ${options.apiKey}` },
67
- signal,
68
- });
69
- return formatAcrossResult(route, body, now());
70
- }
71
- catch (cause) {
72
- const unavailable = providerUnavailable(cause, ['AMOUNT_TOO_HIGH', 'AMOUNT_TOO_LOW']);
73
- if (!unavailable)
74
- throw cause;
75
- return unavailableResult({
76
- detail: 'across:suggested-fees',
77
- message: unavailable,
78
- now: now(),
79
- source: 'providerLimit',
80
- });
81
- }
82
- },
83
- };
84
- }
85
- /** Builds the authenticated Across `/swap/approval` request for an exact-input quote. */
86
- export function createAcrossQuoteRequest(options) {
87
- assertAcrossIntegratorId(options.integratorId);
88
- const baseUrl = normalizeBaseUrl(options.baseUrl ?? defaultAcrossBaseUrl);
89
- const sourceChainId = providerChainId(options.route.sourceChain, 'across');
90
- const destinationChainId = eip155ChainId(options.route.destinationChain);
91
- const url = new URL(`${baseUrl}/swap/approval`);
92
- url.search = new URLSearchParams({
93
- amount: options.route.sourceAmount.amount,
94
- depositor: options.depositor,
95
- destinationChainId,
96
- inputToken: options.route.sourceToken.address,
97
- integratorId: options.integratorId,
98
- originChainId: sourceChainId,
99
- outputToken: options.route.destinationToken.address,
100
- skipOriginTxEstimation: 'true',
101
- strictTradeType: 'true',
102
- tradeType: 'exactInput',
103
- }).toString();
104
- if (options.recipient !== undefined)
105
- url.searchParams.set('recipient', options.recipient);
106
- return { headers: { Authorization: `Bearer ${options.apiKey}` }, url };
107
- }
108
- /** Creates an explicit Across quote adapter backed by `/swap/approval`. */
109
- export function acrossQuote(options) {
110
- assertAcrossIntegratorId(options.integratorId);
111
- return async ({ depositor, recipient, route }, signal) => {
112
- const request = createAcrossQuoteRequest({
113
- apiKey: options.apiKey,
114
- baseUrl: options.baseUrl,
115
- depositor,
116
- integratorId: options.integratorId,
117
- recipient,
118
- route,
119
- });
120
- try {
121
- const body = await requestJson(request.url, {
122
- fetcher: defaultFetch,
123
- headers: request.headers,
124
- signal,
125
- });
126
- return parseAcrossQuote({ body, now: new Date(), route });
127
- }
128
- catch (cause) {
129
- if (!(cause instanceof ProviderResponseError))
130
- throw cause;
131
- throw mapAcrossQuoteError({ body: cause.body, status: cause.status });
132
- }
133
- };
134
- }
135
- /** Returns bounded Across quote failure details suitable for structured request logs. */
136
- export function acrossQuoteFailure(options) {
137
- const { cause } = options;
138
- const base = { id: 'across', operation: 'swap/approval' };
139
- if (cause instanceof ProviderResponseError) {
140
- const code = providerErrorCode(cause.body);
141
- return {
142
- ...(code === undefined ? {} : { code }),
143
- failure: 'http',
144
- ...base,
145
- status: cause.status,
146
- };
147
- }
148
- if (cause instanceof ProviderPayloadError)
149
- return { failure: 'payload', ...base };
150
- if (cause instanceof TypeError)
151
- return { failure: 'network', ...base };
152
- if (cause instanceof Error)
153
- return { failure: 'unknown', ...base };
154
- return undefined;
155
- }
156
- /** Creates a Relay quote adapter backed by `/chains/liquidity` and `/quote/v2`. */
157
- export function relay(options) {
158
- const baseUrl = normalizeBaseUrl(options.baseUrl ?? defaultRelayBaseUrl);
159
- const fetcher = options.fetch ?? defaultFetch;
160
- const now = options.now ?? (() => new Date());
161
- return {
162
- async probeQuote({ route }, signal) {
163
- const originChainId = providerChainId(route.sourceChain, 'relay');
164
- const destinationChainId = eip155ChainId(route.destinationChain);
165
- const headers = relayHeaders(options.apiKey);
166
- try {
167
- const quote = await requestJson(new URL(`${baseUrl}/quote/v2`), {
168
- body: {
169
- amount: route.sourceAmount.amount,
170
- destinationChainId: Number(destinationChainId),
171
- destinationCurrency: route.destinationToken.address,
172
- originChainId: Number(originChainId),
173
- originCurrency: route.sourceToken.address,
174
- recipient: options.recipientAddress ?? options.userAddress,
175
- tradeType: 'EXACT_INPUT',
176
- user: options.userAddress,
177
- },
178
- fetcher,
179
- headers,
180
- method: 'POST',
181
- signal,
182
- });
183
- const liquidityUrl = new URL(`${baseUrl}/chains/liquidity`);
184
- liquidityUrl.searchParams.set('chainId', destinationChainId);
185
- const liquidity = await requestJson(liquidityUrl, { fetcher, headers, signal }).catch(() => undefined);
186
- return formatRelayResult(route, quote, liquidity, now());
187
- }
188
- catch (cause) {
189
- const unavailable = providerUnavailable(cause, [
190
- 'NO_QUOTES',
191
- 'NO_ROUTE',
192
- 'UNSUPPORTED_ROUTE',
193
- ]);
194
- if (!unavailable)
195
- throw cause;
196
- return unavailableResult({
197
- detail: 'relay:quote-v2',
198
- message: unavailable,
199
- now: now(),
200
- source: 'providerQuote',
201
- });
202
- }
203
- },
204
- };
205
- }
206
- /** Maps an Across HTTP error into the stable funding-provider error contract. */
207
- export function mapAcrossQuoteError(options) {
208
- if (options.status === 429)
209
- return new FundingRoutes.ProviderRateLimitError();
210
- const cause = new ProviderResponseError(options.status, options.body);
211
- const unavailable = providerUnavailable(cause, [
212
- 'AMOUNT_TOO_HIGH',
213
- 'AMOUNT_TOO_LOW',
214
- 'INSUFFICIENT_LIQUIDITY',
215
- 'NO_QUOTES',
216
- 'NO_ROUTE',
217
- 'UNSUPPORTED_ROUTE',
218
- ]);
219
- if (unavailable)
220
- return new FundingRoutes.ProviderQuoteUnavailableError();
221
- return cause;
222
- }
223
- /** Validates and normalizes an Across quote payload against its curated route. */
224
- export function parseAcrossQuote(options) {
225
- const parsed = schema.AcrossQuote.safeParse(options.body);
226
- if (!parsed.success)
227
- throw new ProviderPayloadError();
228
- const response = parsed.data;
229
- const total = response.fees.total;
230
- const totalMax = response.fees.totalMax;
231
- if (response.inputAmount !== options.route.sourceAmount.amount ||
232
- response.inputToken.address.toLowerCase() !== options.route.sourceToken.address.toLowerCase() ||
233
- response.inputToken.chainId !== Number(eip155ChainId(options.route.sourceChain)) ||
234
- response.inputToken.decimals !== options.route.sourceToken.decimals ||
235
- response.outputToken.address.toLowerCase() !==
236
- options.route.destinationToken.address.toLowerCase() ||
237
- response.outputToken.chainId !== Number(eip155ChainId(options.route.destinationChain)) ||
238
- response.outputToken.decimals !== options.route.destinationToken.decimals ||
239
- BigInt(response.expectedOutputAmount) <= 0n ||
240
- BigInt(response.minOutputAmount) <= 0n ||
241
- BigInt(response.minOutputAmount) > BigInt(response.expectedOutputAmount) ||
242
- response.quoteExpiryTimestamp * 1_000 <= options.now.getTime() ||
243
- !matchesFeeToken(total.token, options.route) ||
244
- !matchesFeeToken(totalMax.token, options.route) ||
245
- BigInt(totalMax.amount) < BigInt(total.amount) ||
246
- BigInt(totalMax.pct) < BigInt(total.pct))
247
- throw new ProviderPayloadError();
248
- return {
249
- estimatedSeconds: response.expectedFillTime,
250
- expiresAt: isoFromUnixSeconds(String(response.quoteExpiryTimestamp)),
251
- fees: {
252
- total: formatAcrossFee(response.fees.total),
253
- totalMax: formatAcrossFee(response.fees.totalMax),
254
- },
255
- minimumOutputAmount: response.minOutputAmount,
256
- outputAmount: response.expectedOutputAmount,
257
- sampledAt: options.now.toISOString(),
258
- };
259
- }
260
- function formatAcrossResult(route, body, now) {
261
- const response = record(body);
262
- const timestamp = integerString(response['timestamp']);
263
- const sampledAt = timestamp ? isoFromUnixSeconds(timestamp) : now.toISOString();
264
- const limits = acrossLimits(response['limits']);
265
- const amountStatus = statusFromLimits(route.sourceAmount.amount, limits);
266
- const status = response['isAmountTooLow'] === true ? 'unavailable' : amountStatus.status;
267
- const tier = response['isAmountTooLow'] === true ? 'unavailable' : amountStatus.tier;
268
- const outputAmount = decimalString(response['outputAmount']);
269
- return {
270
- expiresAt: timestamp ? isoFromUnixSeconds((BigInt(timestamp) + 600n).toString()) : null,
271
- limits,
272
- outputAmount,
273
- outputAmountFormatted: outputAmount
274
- ? decimalFromBaseUnits(outputAmount, route.destinationToken.decimals)
275
- : null,
276
- quality: {
277
- availableVolumeUsd: stablecoinUsdCapacity(route, limits?.maxSourceAmount),
278
- estimatedSeconds: nonnegativeInteger(response['estimatedFillTimeSec']),
279
- feeBps: scaledPctToBps(nestedString(response['totalRelayFee'], 'pct') ?? decimalString(response['relayFeePct'])),
280
- historicalVolumeUsd24h: null,
281
- instantVolumeUsd: stablecoinUsdCapacity(route, limits?.instantSourceAmount),
282
- liquiditySource: 'providerLimit',
283
- score: scoreFor(tier),
284
- sourceDetail: 'across:suggested-fees',
285
- tier,
286
- },
287
- sampledAt,
288
- status,
289
- };
290
- }
291
- function formatAcrossFee(fee) {
292
- return {
293
- amount: fee.amount,
294
- amountUsd: fee.amountUsd,
295
- bps: scaledPctToBps(fee.pct),
296
- token: {
297
- address: fee.token.address,
298
- chainId: `eip155:${fee.token.chainId}`,
299
- decimals: fee.token.decimals,
300
- symbol: fee.token.symbol,
301
- },
302
- };
303
- }
304
- function formatRelayResult(route, quote, liquidity, now) {
305
- const details = record(record(quote)['details']);
306
- const currencyOut = record(details['currencyOut']);
307
- const outputAmount = decimalString(currencyOut['amount']);
308
- const liquidityRow = relayLiquidity(liquidity, route);
309
- const destinationLiquidity = decimalString(liquidityRow?.['balance']);
310
- const availableVolumeUsd = decimalString(liquidityRow?.['amountUsd']) ?? null;
311
- const liquidityStatus = relayLiquidityStatus({ destinationLiquidity, outputAmount });
312
- return {
313
- limits: null,
314
- minimumOutputAmount: decimalString(currencyOut['minimumAmount']),
315
- outputAmount,
316
- outputAmountFormatted: outputAmount
317
- ? decimalFromBaseUnits(outputAmount, route.destinationToken.decimals)
318
- : null,
319
- quality: {
320
- availableVolumeUsd: availableVolumeUsd,
321
- estimatedSeconds: nonnegativeInteger(details['timeEstimate']),
322
- feeBps: null,
323
- historicalVolumeUsd24h: null,
324
- instantVolumeUsd: availableVolumeUsd,
325
- liquiditySource: 'providerQuote',
326
- score: scoreFor(liquidityStatus.tier),
327
- sourceDetail: 'relay:quote-v2',
328
- tier: liquidityStatus.tier,
329
- },
330
- sampledAt: now.toISOString(),
331
- status: liquidityStatus.status,
332
- };
333
- }
334
- function relayLiquidityStatus(options) {
335
- if (!options.outputAmount)
336
- return { status: 'unknown', tier: 'unknown' };
337
- if (!options.destinationLiquidity)
338
- return { status: 'unknown', tier: 'unknown' };
339
- if (compareIntegerStrings(options.destinationLiquidity, options.outputAmount) < 0)
340
- return { status: 'thin', tier: 'thin' };
341
- return { status: 'available', tier: 'liquid' };
342
- }
343
- function unavailableResult(options) {
344
- return {
345
- quality: {
346
- availableVolumeUsd: null,
347
- estimatedSeconds: null,
348
- feeBps: null,
349
- historicalVolumeUsd24h: null,
350
- instantVolumeUsd: null,
351
- liquiditySource: options.source,
352
- score: 0,
353
- sourceDetail: `${options.detail}:${options.message}`,
354
- tier: 'unavailable',
355
- },
356
- sampledAt: options.now.toISOString(),
357
- status: 'unavailable',
358
- };
359
- }
360
- function acrossLimits(input) {
361
- const limits = record(input);
362
- const minSourceAmount = decimalString(limits['minDeposit']);
363
- const maxSourceAmount = decimalString(limits['maxDeposit']);
364
- const instantSourceAmount = decimalString(limits['maxDepositInstant']) ?? decimalString(limits['recommendedDepositInstant']);
365
- return minSourceAmount || maxSourceAmount || instantSourceAmount
366
- ? { instantSourceAmount, maxSourceAmount, minSourceAmount }
367
- : null;
368
- }
369
- function statusFromLimits(amount, limits) {
370
- if (!limits)
371
- return { status: 'available', tier: 'liquid' };
372
- if (limits.minSourceAmount && compareIntegerStrings(amount, limits.minSourceAmount) < 0)
373
- return { status: 'unavailable', tier: 'unavailable' };
374
- if (limits.maxSourceAmount && compareIntegerStrings(amount, limits.maxSourceAmount) > 0)
375
- return { status: 'unavailable', tier: 'unavailable' };
376
- if (limits.instantSourceAmount && compareIntegerStrings(amount, limits.instantSourceAmount) > 0)
377
- return { status: 'thin', tier: 'thin' };
378
- return { status: 'available', tier: 'liquid' };
379
- }
380
- function relayLiquidity(input, route) {
381
- const response = record(input);
382
- const rows = Array.isArray(response['liquidity']) ? response['liquidity'] : [];
383
- const destinationChainId = eip155ChainId(route.destinationChain);
384
- return rows.map(record).find((row) => {
385
- const rowChainId = integerString(row['chainId']);
386
- const rowAddress = typeof row['address'] === 'string' ? row['address'].toLowerCase() : undefined;
387
- return (rowChainId === destinationChainId &&
388
- rowAddress === route.destinationToken.address.toLowerCase());
389
- });
390
- }
391
- async function requestJson(url, options) {
392
- const headers = { accept: 'application/json', ...options.headers };
393
- const init = {
394
- headers: options.body === undefined ? headers : { ...headers, 'content-type': 'application/json' },
395
- method: options.method ?? 'GET',
396
- signal: options.signal,
397
- };
398
- if (options.body !== undefined)
399
- init.body = JSON.stringify(options.body);
400
- const response = await options.fetcher(url, init);
401
- const text = await response.text();
402
- const body = parseJson(text);
403
- if (!response.ok)
404
- throw new ProviderResponseError(response.status, body);
405
- return body;
406
- }
407
- function relayHeaders(apiKey) {
408
- return apiKey ? { 'x-api-key': apiKey } : undefined;
409
- }
410
- function providerUnavailable(cause, codes) {
411
- if (!(cause instanceof ProviderResponseError) || cause.status < 400 || cause.status >= 500)
412
- return undefined;
413
- const code = providerErrorCode(cause.body);
414
- if (code && codes.includes(code))
415
- return code;
416
- return undefined;
417
- }
418
- function providerErrorCode(input) {
419
- const body = record(input);
420
- const code = stringValue(body['code']) ?? stringValue(body['errorCode']);
421
- return code && /^[A-Za-z0-9_.:-]{1,64}$/.test(code) ? code : undefined;
422
- }
423
- class ProviderResponseError extends Error {
424
- status;
425
- body;
426
- name = 'FundingRouteProviders.ProviderResponseError';
427
- constructor(status, body) {
428
- super(`Provider request failed with status ${status}`);
429
- this.status = status;
430
- this.body = body;
431
- }
432
- }
433
- class ProviderPayloadError extends Error {
434
- name = 'FundingRouteProviders.ProviderPayloadError';
435
- }
436
- class ProviderConfigurationError extends Error {
437
- name = 'FundingRouteProviders.ProviderConfigurationError';
438
- }
439
- function providerChainId(routeChain, provider) {
440
- const providerIds = routeChain.providerIds;
441
- const id = providerIds?.[provider];
442
- if (id && /^\d+$/.test(id))
443
- return id;
444
- return eip155ChainId(routeChain);
445
- }
446
- function eip155ChainId(chain) {
447
- if (chain.kind !== 'evm')
448
- throw new UnsupportedProviderRouteError();
449
- const match = /^eip155:(\d+)$/.exec(chain.id);
450
- if (!match?.[1])
451
- throw new UnsupportedProviderRouteError();
452
- return match[1];
453
- }
454
- class UnsupportedProviderRouteError extends Error {
455
- name = 'FundingRouteProviders.UnsupportedProviderRouteError';
456
- }
457
- function assertAcrossIntegratorId(integratorId) {
458
- if (!/^0x[\da-fA-F]{4}$/.test(integratorId))
459
- throw new ProviderConfigurationError();
460
- }
461
- function matchesFeeToken(token, route) {
462
- return (token.address.toLowerCase() === route.sourceToken.address.toLowerCase() &&
463
- token.chainId === Number(eip155ChainId(route.sourceChain)) &&
464
- token.decimals === route.sourceToken.decimals);
465
- }
466
- function normalizeBaseUrl(input) {
467
- return input.replace(/\/+$/, '');
468
- }
469
- function parseJson(input) {
470
- if (!input)
471
- return null;
472
- try {
473
- return JSON.parse(input);
474
- }
475
- catch {
476
- return input;
477
- }
478
- }
479
- function record(input) {
480
- return input && typeof input === 'object' && !Array.isArray(input)
481
- ? input
482
- : {};
483
- }
484
- function stringValue(input) {
485
- return typeof input === 'string' && input.length > 0 ? input : undefined;
486
- }
487
- function decimalString(input) {
488
- if (typeof input === 'string' && /^\d+(\.\d+)?$/.test(input))
489
- return input;
490
- if (typeof input === 'number' && Number.isFinite(input) && input >= 0)
491
- return String(input);
492
- return undefined;
493
- }
494
- function integerString(input) {
495
- if (typeof input === 'string' && /^\d+$/.test(input))
496
- return input;
497
- if (typeof input === 'number' && Number.isSafeInteger(input) && input >= 0)
498
- return String(input);
499
- return undefined;
500
- }
501
- function nestedString(input, key) {
502
- return decimalString(record(input)[key]);
503
- }
504
- function nonnegativeInteger(input) {
505
- if (typeof input === 'number' && Number.isSafeInteger(input) && input >= 0)
506
- return input;
507
- if (typeof input === 'string' && /^\d+$/.test(input))
508
- return Number(input);
509
- return null;
510
- }
511
- function decimalFromBaseUnits(baseUnits, decimals) {
512
- const padded = baseUnits.padStart(decimals + 1, '0');
513
- const whole = decimals === 0 ? padded : padded.slice(0, -decimals);
514
- const fraction = decimals === 0 ? '' : padded.slice(-decimals).replace(/0+$/, '');
515
- return fraction ? `${whole}.${fraction}` : whole;
516
- }
517
- function compareIntegerStrings(left, right) {
518
- return BigInt(left) === BigInt(right) ? 0 : BigInt(left) > BigInt(right) ? 1 : -1;
519
- }
520
- function isoFromUnixSeconds(input) {
521
- return new Date(Number(input) * 1_000).toISOString();
522
- }
523
- function stablecoinUsdCapacity(route, baseUnits) {
524
- if (!baseUnits || !isDollarStablecoin(route.sourceToken.symbol))
525
- return null;
526
- return decimalFromBaseUnits(baseUnits, route.sourceToken.decimals);
527
- }
528
- function isDollarStablecoin(symbol) {
529
- return ['DAI', 'FRXUSD', 'PYUSD', 'USDC', 'USDC.E', 'USDT', 'USDT0'].includes(symbol.toUpperCase());
530
- }
531
- function scaledPctToBps(input) {
532
- if (!input || !/^\d+$/.test(input))
533
- return null;
534
- const denominator = 1000000000000000000n;
535
- return Number((BigInt(input) * 10000n + denominator / 2n) / denominator);
536
- }
537
- function scoreFor(tier) {
538
- if (tier === 'liquid')
539
- return 90;
540
- if (tier === 'thin')
541
- return 65;
542
- if (tier === 'unavailable')
543
- return 0;
544
- return null;
545
- }
546
- //# sourceMappingURL=FundingRouteProviders.js.map
@@ -1 +0,0 @@
1
- {"version":3,"file":"FundingRouteProviders.js","sourceRoot":"","sources":["../../../src/apps/data/FundingRouteProviders.ts"],"names":[],"mappings":"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"}