tapimo 0.7.2 → 0.8.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 (294) hide show
  1. package/README.md +10 -7
  2. package/dist/ApiKey.d.ts +3 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +10 -0
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +7 -3
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +9 -2
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +20434 -19484
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +62 -4
  13. package/dist/App.js.map +1 -1
  14. package/dist/admin/App.d.ts +84 -74
  15. package/dist/admin/App.d.ts.map +1 -1
  16. package/dist/admin/apps/api-keys.d.ts +14 -1
  17. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  18. package/dist/admin/apps/api-keys.js +6 -2
  19. package/dist/admin/apps/api-keys.js.map +1 -1
  20. package/dist/admin/apps/organizations.d.ts +2 -0
  21. package/dist/admin/apps/organizations.d.ts.map +1 -1
  22. package/dist/admin/apps/verified-tokens.d.ts +168 -168
  23. package/dist/admin/ui.generated.d.ts +1 -1
  24. package/dist/admin/ui.generated.js +67 -67
  25. package/dist/admin/ui.generated.js.map +1 -1
  26. package/dist/analytics/Analytics.d.ts +2 -0
  27. package/dist/analytics/Analytics.d.ts.map +1 -1
  28. package/dist/analytics/Analytics.js +3 -0
  29. package/dist/analytics/Analytics.js.map +1 -1
  30. package/dist/apps/data/App.d.ts +10305 -12785
  31. package/dist/apps/data/App.d.ts.map +1 -1
  32. package/dist/apps/data/App.js +4 -8
  33. package/dist/apps/data/App.js.map +1 -1
  34. package/dist/apps/data/routes/activities.d.ts +24 -24
  35. package/dist/apps/data/routes/addresses.d.ts +288 -288
  36. package/dist/apps/data/routes/balances.d.ts +6 -6
  37. package/dist/apps/data/routes/blocks.d.ts +39 -39
  38. package/dist/apps/data/routes/coingecko.d.ts +170 -170
  39. package/dist/apps/data/routes/earn.d.ts +436 -6
  40. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  41. package/dist/apps/data/routes/earn.js +631 -4
  42. package/dist/apps/data/routes/earn.js.map +1 -1
  43. package/dist/apps/data/routes/exchanges.d.ts +10 -10
  44. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  45. package/dist/apps/data/routes/indexer.d.ts +6 -6
  46. package/dist/apps/data/routes/indexer.js +4 -1
  47. package/dist/apps/data/routes/indexer.js.map +1 -1
  48. package/dist/apps/data/routes/receipts.d.ts +235 -235
  49. package/dist/apps/data/routes/rpc.d.ts +1 -1
  50. package/dist/apps/data/routes/rpc.js +4 -1
  51. package/dist/apps/data/routes/rpc.js.map +1 -1
  52. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  53. package/dist/apps/data/routes/tokens.d.ts +6 -6
  54. package/dist/apps/data/routes/transactions.d.ts +2 -2
  55. package/dist/apps/data/routes/transfers.d.ts +1 -1
  56. package/dist/apps/data/routes/valuation.d.ts +1 -1
  57. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  58. package/dist/apps/data/routes/webhooks.d.ts +9 -9
  59. package/dist/apps/data/routes/zones.d.ts +14 -14
  60. package/dist/apps/funding/Access.d.ts +16 -0
  61. package/dist/apps/funding/Access.d.ts.map +1 -0
  62. package/dist/apps/funding/Access.js +22 -0
  63. package/dist/apps/funding/Access.js.map +1 -0
  64. package/dist/apps/{data/routes/funding.d.ts → funding/App.d.ts} +1717 -3035
  65. package/dist/apps/funding/App.d.ts.map +1 -0
  66. package/dist/apps/funding/App.js +46 -0
  67. package/dist/apps/funding/App.js.map +1 -0
  68. package/dist/apps/funding/Inventory.d.ts +5 -0
  69. package/dist/apps/funding/Inventory.d.ts.map +1 -0
  70. package/dist/apps/funding/Inventory.js +25 -0
  71. package/dist/apps/funding/Inventory.js.map +1 -0
  72. package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
  73. package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
  74. package/dist/apps/funding/ProviderAttempts.js +24 -0
  75. package/dist/apps/funding/ProviderAttempts.js.map +1 -0
  76. package/dist/apps/funding/index.d.ts +2 -0
  77. package/dist/apps/funding/index.d.ts.map +1 -0
  78. package/dist/apps/funding/index.js +2 -0
  79. package/dist/apps/funding/index.js.map +1 -0
  80. package/dist/apps/funding/routes/chains.d.ts +169 -0
  81. package/dist/apps/funding/routes/chains.d.ts.map +1 -0
  82. package/dist/apps/funding/routes/chains.js +80 -0
  83. package/dist/apps/funding/routes/chains.js.map +1 -0
  84. package/dist/apps/funding/routes/deposit-addresses.d.ts +2388 -0
  85. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
  86. package/dist/apps/funding/routes/deposit-addresses.js +860 -0
  87. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
  88. package/dist/apps/funding/routes/providers.d.ts +91 -0
  89. package/dist/apps/funding/routes/providers.d.ts.map +1 -0
  90. package/dist/apps/funding/routes/providers.js +56 -0
  91. package/dist/apps/funding/routes/providers.js.map +1 -0
  92. package/dist/apps/funding/routes/quotes.d.ts +426 -0
  93. package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
  94. package/dist/apps/funding/routes/quotes.js +188 -0
  95. package/dist/apps/funding/routes/quotes.js.map +1 -0
  96. package/dist/apps/funding/routes/transfers.d.ts +1999 -0
  97. package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
  98. package/dist/apps/funding/routes/transfers.js +614 -0
  99. package/dist/apps/funding/routes/transfers.js.map +1 -0
  100. package/dist/apps/index.d.ts +1 -0
  101. package/dist/apps/index.d.ts.map +1 -1
  102. package/dist/apps/index.js +1 -0
  103. package/dist/apps/index.js.map +1 -1
  104. package/dist/apps/management/App.d.ts +430 -165
  105. package/dist/apps/management/App.d.ts.map +1 -1
  106. package/dist/apps/management/routes/api-keys.d.ts +298 -21
  107. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  108. package/dist/apps/management/routes/api-keys.js +75 -1
  109. package/dist/apps/management/routes/api-keys.js.map +1 -1
  110. package/dist/apps/management/routes/billing.d.ts +6 -6
  111. package/dist/apps/management/routes/faucet.d.ts +35 -35
  112. package/dist/apps/management/routes/invitations.d.ts +48 -48
  113. package/dist/apps/management/routes/invite-links.d.ts +38 -38
  114. package/dist/apps/management/routes/members.d.ts +69 -69
  115. package/dist/apps/management/routes/orgs.d.ts +37 -37
  116. package/dist/apps/management/routes/projects.d.ts +25 -25
  117. package/dist/apps/management/routes/scopes.d.ts +1 -1
  118. package/dist/apps/management/routes/usage.d.ts +72 -72
  119. package/dist/apps/management/routes/verified-token-requests.d.ts +18 -18
  120. package/dist/apps/management/routes/webhooks.d.ts +128 -128
  121. package/dist/apps/mcp.d.ts +2 -3
  122. package/dist/apps/mcp.d.ts.map +1 -1
  123. package/dist/apps/mcp.js +16 -14
  124. package/dist/apps/mcp.js.map +1 -1
  125. package/dist/apps/metadata.d.ts +4 -0
  126. package/dist/apps/metadata.d.ts.map +1 -1
  127. package/dist/apps/metadata.js +10 -0
  128. package/dist/apps/metadata.js.map +1 -1
  129. package/dist/apps/mpp/App.d.ts +2 -2
  130. package/dist/cloudflare.d.ts +50 -0
  131. package/dist/cloudflare.d.ts.map +1 -1
  132. package/dist/cloudflare.js +178 -0
  133. package/dist/cloudflare.js.map +1 -1
  134. package/dist/db/Db.d.ts +2 -0
  135. package/dist/db/Db.d.ts.map +1 -1
  136. package/dist/db/Db.js +37 -0
  137. package/dist/db/Db.js.map +1 -1
  138. package/dist/db/Schema.d.ts +12 -0
  139. package/dist/db/Schema.d.ts.map +1 -1
  140. package/dist/db/Schema.js +20 -0
  141. package/dist/db/Schema.js.map +1 -1
  142. package/dist/db/tables/fundingDepositAddresses.d.ts +13 -0
  143. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -1
  144. package/dist/db/tables/fundingDepositAddresses.js +12 -0
  145. package/dist/db/tables/fundingDepositAddresses.js.map +1 -1
  146. package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
  147. package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
  148. package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
  149. package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
  150. package/dist/db/tables/fundingDeposits.d.ts +57 -1
  151. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  152. package/dist/db/tables/fundingDeposits.js +82 -0
  153. package/dist/db/tables/fundingDeposits.js.map +1 -1
  154. package/dist/internal/Auth.d.ts +11 -11
  155. package/dist/internal/Auth.d.ts.map +1 -1
  156. package/dist/internal/Auth.js +41 -15
  157. package/dist/internal/Auth.js.map +1 -1
  158. package/dist/internal/Cache.js +1 -1
  159. package/dist/internal/Cache.js.map +1 -1
  160. package/dist/internal/EdgeCache.d.ts +2 -2
  161. package/dist/internal/EdgeCache.d.ts.map +1 -1
  162. package/dist/internal/EdgeCache.js +10 -4
  163. package/dist/internal/EdgeCache.js.map +1 -1
  164. package/dist/internal/IpAllowlist.d.ts +15 -0
  165. package/dist/internal/IpAllowlist.d.ts.map +1 -0
  166. package/dist/internal/IpAllowlist.js +27 -0
  167. package/dist/internal/IpAllowlist.js.map +1 -0
  168. package/dist/internal/OpenApi.d.ts +1 -1
  169. package/dist/internal/OpenApi.js +1 -1
  170. package/dist/internal/OpenApi.js.map +1 -1
  171. package/dist/internal/Tidx.d.ts +6 -0
  172. package/dist/internal/Tidx.d.ts.map +1 -1
  173. package/dist/internal/Tidx.js +13 -3
  174. package/dist/internal/Tidx.js.map +1 -1
  175. package/dist/internal/Viem.d.ts +8 -0
  176. package/dist/internal/Viem.d.ts.map +1 -1
  177. package/dist/internal/Viem.js +12 -5
  178. package/dist/internal/Viem.js.map +1 -1
  179. package/dist/internal/funding/Deposit.d.ts +42 -0
  180. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  181. package/dist/internal/funding/Deposit.js +37 -5
  182. package/dist/internal/funding/Deposit.js.map +1 -1
  183. package/dist/internal/funding/Evidence.d.ts +1 -5
  184. package/dist/internal/funding/Evidence.d.ts.map +1 -1
  185. package/dist/internal/funding/Evidence.js +4 -3
  186. package/dist/internal/funding/Evidence.js.map +1 -1
  187. package/dist/internal/funding/Provider.d.ts +102 -0
  188. package/dist/internal/funding/Provider.d.ts.map +1 -1
  189. package/dist/internal/funding/Provider.js +5 -0
  190. package/dist/internal/funding/Provider.js.map +1 -1
  191. package/dist/internal/funding/Reconciliation.d.ts +16 -2
  192. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  193. package/dist/internal/funding/Reconciliation.js +257 -48
  194. package/dist/internal/funding/Reconciliation.js.map +1 -1
  195. package/dist/internal/funding/SourceObservation.d.ts +108 -0
  196. package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
  197. package/dist/internal/funding/SourceObservation.js +143 -0
  198. package/dist/internal/funding/SourceObservation.js.map +1 -0
  199. package/dist/internal/funding/Subsidy.d.ts +2 -2
  200. package/dist/internal/funding/Subsidy.d.ts.map +1 -1
  201. package/dist/internal/funding/Subsidy.js +1 -1
  202. package/dist/internal/funding/Subsidy.js.map +1 -1
  203. package/dist/internal/funding/index.d.ts +1 -0
  204. package/dist/internal/funding/index.d.ts.map +1 -1
  205. package/dist/internal/funding/index.js +1 -0
  206. package/dist/internal/funding/index.js.map +1 -1
  207. package/dist/internal/funding/providers/relay.d.ts +43 -1
  208. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  209. package/dist/internal/funding/providers/relay.js +434 -27
  210. package/dist/internal/funding/providers/relay.js.map +1 -1
  211. package/package.json +3 -3
  212. package/src/ApiKey.test.ts +35 -0
  213. package/src/ApiKey.ts +27 -0
  214. package/src/ApiKeys.test.ts +29 -0
  215. package/src/ApiKeys.ts +11 -3
  216. package/src/App.test.ts +23 -5
  217. package/src/App.ts +76 -5
  218. package/src/Client.test-d.ts +171 -19
  219. package/src/admin/apps/api-keys.test.ts +25 -1
  220. package/src/admin/apps/api-keys.ts +6 -2
  221. package/src/admin/ui.generated.ts +67 -67
  222. package/src/analytics/Analytics.ts +4 -0
  223. package/src/apps/composition.test.ts +100 -2
  224. package/src/apps/data/App.test.ts +0 -12
  225. package/src/apps/data/App.ts +4 -8
  226. package/src/apps/data/routes/earn.test.ts +283 -0
  227. package/src/apps/data/routes/earn.ts +800 -3
  228. package/src/apps/data/routes/indexer.ts +2 -1
  229. package/src/apps/data/routes/rpc.ts +2 -0
  230. package/src/apps/data/routes/tokens.test.ts +6 -8
  231. package/src/apps/funding/Access.ts +26 -0
  232. package/src/apps/funding/App.test.ts +78 -0
  233. package/src/apps/funding/App.ts +63 -0
  234. package/src/apps/funding/Inventory.ts +30 -0
  235. package/src/apps/funding/ProviderAttempts.ts +26 -0
  236. package/src/apps/funding/index.ts +1 -0
  237. package/src/apps/funding/routes/chains.test.ts +78 -0
  238. package/src/apps/funding/routes/chains.ts +101 -0
  239. package/src/apps/funding/routes/deposit-addresses.test.ts +1628 -0
  240. package/src/apps/funding/routes/deposit-addresses.ts +1015 -0
  241. package/src/apps/funding/routes/providers.test.ts +165 -0
  242. package/src/apps/funding/routes/providers.ts +73 -0
  243. package/src/apps/funding/routes/quotes.test.ts +511 -0
  244. package/src/apps/funding/routes/quotes.ts +205 -0
  245. package/src/apps/funding/routes/transfers.test.ts +1255 -0
  246. package/src/apps/funding/routes/transfers.ts +704 -0
  247. package/src/apps/index.ts +1 -0
  248. package/src/apps/management/routes/api-keys.test.ts +98 -0
  249. package/src/apps/management/routes/api-keys.ts +96 -1
  250. package/src/apps/mcp.test.ts +17 -2
  251. package/src/apps/mcp.ts +18 -13
  252. package/src/apps/metadata.ts +12 -0
  253. package/src/apps/mpp/internal/Policy.test.ts +7 -1
  254. package/src/cloudflare.ts +279 -0
  255. package/src/db/Db.ts +62 -0
  256. package/src/db/Schema.ts +24 -0
  257. package/src/db/tables/fundingDepositAddresses.ts +28 -0
  258. package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
  259. package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
  260. package/src/db/tables/fundingDeposits.test.ts +138 -0
  261. package/src/db/tables/fundingDeposits.ts +145 -1
  262. package/src/internal/Auth.test.ts +177 -5
  263. package/src/internal/Auth.ts +48 -18
  264. package/src/internal/Cache.test.ts +37 -3
  265. package/src/internal/Cache.ts +1 -1
  266. package/src/internal/EdgeCache.test.ts +7 -7
  267. package/src/internal/EdgeCache.ts +13 -4
  268. package/src/internal/IpAllowlist.test.ts +52 -0
  269. package/src/internal/IpAllowlist.ts +39 -0
  270. package/src/internal/Log.test.ts +7 -1
  271. package/src/internal/OpenApi.ts +1 -1
  272. package/src/internal/Tidx.test.ts +28 -0
  273. package/src/internal/Tidx.ts +19 -3
  274. package/src/internal/Viem.test.ts +28 -0
  275. package/src/internal/Viem.ts +21 -5
  276. package/src/internal/funding/Deposit.ts +74 -5
  277. package/src/internal/funding/Evidence.test.ts +2 -2
  278. package/src/internal/funding/Evidence.ts +4 -9
  279. package/src/internal/funding/Provider.ts +115 -0
  280. package/src/internal/funding/Reconciliation.local.test.ts +7 -0
  281. package/src/internal/funding/Reconciliation.test.ts +1052 -35
  282. package/src/internal/funding/Reconciliation.ts +328 -56
  283. package/src/internal/funding/SourceObservation.test.ts +301 -0
  284. package/src/internal/funding/SourceObservation.ts +267 -0
  285. package/src/internal/funding/Subsidy.ts +2 -2
  286. package/src/internal/funding/index.test.ts +1 -0
  287. package/src/internal/funding/index.ts +1 -0
  288. package/src/internal/funding/providers/relay.test.ts +94 -4
  289. package/src/internal/funding/providers/relay.ts +528 -27
  290. package/dist/apps/data/routes/funding.d.ts.map +0 -1
  291. package/dist/apps/data/routes/funding.js +0 -1557
  292. package/dist/apps/data/routes/funding.js.map +0 -1
  293. package/src/apps/data/routes/funding.test.ts +0 -2994
  294. package/src/apps/data/routes/funding.ts +0 -1821
@@ -0,0 +1,188 @@
1
+ import { Hono } from 'hono';
2
+ import * as z from 'zod/mini';
3
+ import * as Auth from '../../../internal/Auth.js';
4
+ import * as FundingCatalog from '../../../internal/funding/Catalog.js';
5
+ import * as FundingProvider from '../../../internal/funding/Provider.js';
6
+ import * as OpenApi from '../../../internal/OpenApi.js';
7
+ import * as Response from '../../../internal/Response.js';
8
+ import * as Schema from '../../../internal/Schema.js';
9
+ import * as Value from '../../../internal/Value.js';
10
+ import * as ProviderAttempts from '../ProviderAttempts.js';
11
+ /** Zod schemas owned by funding quote resources. */
12
+ export var schema;
13
+ (function (schema) {
14
+ /** Successful live funding quote. */
15
+ schema.FundingQuote = FundingProvider.schema.FundingQuote;
16
+ /** Schemas for the quoteFunding operation. */
17
+ let quoteFunding;
18
+ (function (quoteFunding) {
19
+ /** Query parameters for live funding quotes. */
20
+ quoteFunding.Query = FundingProvider.schema.QuoteRequest;
21
+ /** Non-paginated list of successful funding quotes. */
22
+ quoteFunding.Response = Schema.describe(z.object({
23
+ data: z.array(schema.FundingQuote).check(z.describe('Successful live funding quotes.')),
24
+ }), 'A non-paginated list of successful live funding quotes.');
25
+ })(quoteFunding = schema.quoteFunding || (schema.quoteFunding = {}));
26
+ })(schema || (schema = {}));
27
+ const baseChainExample = {
28
+ addressFormat: 'hex',
29
+ id: 'eip155:8453',
30
+ kind: 'evm',
31
+ name: 'Base',
32
+ };
33
+ const baseUsdcExample = {
34
+ address: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
35
+ currency: 'USD',
36
+ decimals: 6,
37
+ name: 'USD Coin',
38
+ standard: 'ERC-20',
39
+ symbol: 'USDC',
40
+ tokenKey: 'eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
41
+ verified: true,
42
+ };
43
+ const fundingQuoteResponseExample = {
44
+ data: [
45
+ {
46
+ destinationAmount: Value.tokenAmount({
47
+ baseUnits: '979295',
48
+ currency: 'USD',
49
+ decimals: 6,
50
+ }),
51
+ destinationAmountMin: Value.tokenAmount({
52
+ baseUnits: '939242',
53
+ currency: 'USD',
54
+ decimals: 6,
55
+ }),
56
+ destinationChain: {
57
+ addressFormat: 'hex',
58
+ id: 'eip155:4217',
59
+ kind: 'evm',
60
+ name: 'Tempo',
61
+ },
62
+ destinationToken: {
63
+ address: '0x20c000000000000000000000b9537d11c60e8b50',
64
+ currency: 'USD',
65
+ decimals: 6,
66
+ name: 'Bridged USDC (Stargate)',
67
+ standard: 'TIP-20',
68
+ symbol: 'USDC.e',
69
+ tokenKey: 'eip155:4217/erc20:0x20c000000000000000000000b9537d11c60e8b50',
70
+ verified: true,
71
+ },
72
+ id: 'base-usdc-tempo-usdce-relay',
73
+ provider: { id: 'relay', name: 'Relay' },
74
+ quality: {
75
+ estimatedSeconds: 1,
76
+ liquiditySource: 'providerQuote',
77
+ sourceDetail: 'relay:quote-v2',
78
+ tier: 'liquid',
79
+ },
80
+ quote: {
81
+ sampledAt: '2026-01-01T00:00:00.000Z',
82
+ },
83
+ sourceAmount: Value.tokenAmount({
84
+ baseUnits: '1000000',
85
+ currency: 'USD',
86
+ decimals: 6,
87
+ }),
88
+ sourceChain: baseChainExample,
89
+ sourceToken: baseUsdcExample,
90
+ },
91
+ ],
92
+ };
93
+ /** Mounts live funding quote routes. */
94
+ export function quotes() {
95
+ return new Hono().get('/v1/funding/quotes', Auth.policy({ apiKey: { scopes: ['data:read'] }, mpp: true, public: true }), OpenApi.validate('query', schema.quoteFunding.Query, {
96
+ code: 'query_invalid',
97
+ message: 'Invalid query parameters',
98
+ }), OpenApi.describeRoute({
99
+ description: 'Returns live quotes for transferring stablecoins to Tempo.',
100
+ operationId: 'quoteFunding',
101
+ responses: OpenApi.responses({
102
+ errors: {
103
+ 400: { codes: ['query_invalid'] },
104
+ 502: {
105
+ codes: ['upstream_error'],
106
+ description: 'No quote succeeded and at least one matching provider failed unexpectedly.',
107
+ },
108
+ },
109
+ success: {
110
+ description: 'Live funding quotes. An empty list means no provider returned a quote.',
111
+ example: fundingQuoteResponseExample,
112
+ schema: schema.quoteFunding.Response,
113
+ },
114
+ }),
115
+ summary: 'Get quotes',
116
+ tags: ['Quotes'],
117
+ }), async (c) => {
118
+ if (Auth.narrowAccess)
119
+ return Auth.paidAccessError(c);
120
+ if (OpenApi.narrowValidation)
121
+ return OpenApi.validationError(c, {
122
+ code: 'query_invalid',
123
+ message: 'Invalid query parameters',
124
+ });
125
+ const query = c.req.valid('query');
126
+ const attempts = [];
127
+ const catalog = await FundingCatalog.snapshot(c);
128
+ const providers = c.get('providers').filter(FundingProvider.is);
129
+ try {
130
+ c.header('Cache-Control', 'no-store');
131
+ const data = await FundingProvider.getQuotes({
132
+ cache: { bypass: cacheBypass(c.req.raw) },
133
+ catalog,
134
+ destinationToken: query.destinationToken,
135
+ onAttempt: (attempt) => attempts.push(attempt),
136
+ provider: query.provider,
137
+ providers,
138
+ sourceAmount: query.sourceAmount,
139
+ sourceAmountUnits: query.sourceAmountUnits,
140
+ sourceChain: query.sourceChain,
141
+ sourceToken: query.sourceToken,
142
+ });
143
+ if (attempts.length > 0)
144
+ c.set('fundingProviderAttempts', attempts.map(ProviderAttempts.format));
145
+ return c.json(Response.validated(schema.quoteFunding.Response, {
146
+ data,
147
+ }), 200);
148
+ }
149
+ catch (cause) {
150
+ const message = requestErrorMessage(cause);
151
+ if (message)
152
+ return Response.error(c, { code: 'query_invalid', message, status: 400 });
153
+ if (cause instanceof FundingProvider.ProviderQuoteError) {
154
+ if (cause.fundingProviderAttempts.length > 0)
155
+ c.set('fundingProviderAttempts', cause.fundingProviderAttempts);
156
+ if (cause.providerFailure)
157
+ c.set('providerFailure', cause.providerFailure);
158
+ if (cause.providerFailures)
159
+ c.set('providerFailures', cause.providerFailures);
160
+ return Response.error(c, {
161
+ code: 'upstream_error',
162
+ message: 'Quote providers could not complete the request.',
163
+ status: 502,
164
+ });
165
+ }
166
+ throw cause;
167
+ }
168
+ });
169
+ }
170
+ // Maps caller-input errors to a specific 400 message; anything else rethrows.
171
+ function requestErrorMessage(cause) {
172
+ if (cause instanceof FundingProvider.InvalidAmountError)
173
+ return 'Invalid `sourceAmount`.';
174
+ if (cause instanceof FundingProvider.UnsupportedDestinationTokenError)
175
+ return 'Unsupported `destinationToken`.';
176
+ if (cause instanceof FundingProvider.UnsupportedProviderError)
177
+ return 'Unsupported `provider`.';
178
+ if (cause instanceof FundingProvider.UnsupportedSourceChainError)
179
+ return 'Unsupported `sourceChain`.';
180
+ return undefined;
181
+ }
182
+ function cacheBypass(request) {
183
+ const directives = (request.headers.get('Cache-Control') ??
184
+ request.headers.get('Pragma') ??
185
+ '').toLowerCase();
186
+ return directives.includes('no-cache') || directives.includes('no-store');
187
+ }
188
+ //# sourceMappingURL=quotes.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"quotes.js","sourceRoot":"","sources":["../../../../src/apps/funding/routes/quotes.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,IAAI,EAAE,MAAM,MAAM,CAAA;AAC3B,OAAO,KAAK,CAAC,MAAM,UAAU,CAAA;AAG7B,OAAO,KAAK,IAAI,MAAM,2BAA2B,CAAA;AACjD,OAAO,KAAK,cAAc,MAAM,sCAAsC,CAAA;AACtE,OAAO,KAAK,eAAe,MAAM,uCAAuC,CAAA;AACxE,OAAO,KAAK,OAAO,MAAM,8BAA8B,CAAA;AACvD,OAAO,KAAK,QAAQ,MAAM,+BAA+B,CAAA;AACzD,OAAO,KAAK,MAAM,MAAM,6BAA6B,CAAA;AACrD,OAAO,KAAK,KAAK,MAAM,4BAA4B,CAAA;AACnD,OAAO,KAAK,gBAAgB,MAAM,wBAAwB,CAAA;AAE1D,oDAAoD;AACpD,MAAM,KAAW,MAAM,CAiBtB;AAjBD,WAAiB,MAAM;IACrB,qCAAqC;IACxB,mBAAY,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAA;IAE/D,8CAA8C;IAC9C,IAAiB,YAAY,CAW5B;IAXD,WAAiB,YAAY;QAC3B,gDAAgD;QACnC,kBAAK,GAAG,eAAe,CAAC,MAAM,CAAC,YAAY,CAAA;QAExD,uDAAuD;QAC1C,qBAAQ,GAAG,MAAM,CAAC,QAAQ,CACrC,CAAC,CAAC,MAAM,CAAC;YACP,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC,mBAAY,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,QAAQ,CAAC,iCAAiC,CAAC,CAAC;SACjF,CAAC,EACF,yDAAyD,CAC1D,CAAA;IACH,CAAC,EAXgB,YAAY,GAAZ,OAAA,YAAY,KAAZ,OAAA,YAAY,QAW5B;AACH,CAAC,EAjBgB,MAAM,KAAN,MAAM,QAiBtB;AAED,MAAM,gBAAgB,GAAG;IACvB,aAAa,EAAE,KAAK;IACpB,EAAE,EAAE,aAAa;IACjB,IAAI,EAAE,KAAK;IACX,IAAI,EAAE,MAAM;CACJ,CAAA;AAEV,MAAM,eAAe,GAAG;IACtB,OAAO,EAAE,4CAA4C;IACrD,QAAQ,EAAE,KAAK;IACf,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,UAAU;IAChB,QAAQ,EAAE,QAAQ;IAClB,MAAM,EAAE,MAAM;IACd,QAAQ,EAAE,8DAA8D;IACxE,QAAQ,EAAE,IAAI;CACN,CAAA;AAEV,MAAM,2BAA2B,GAAG;IAClC,IAAI,EAAE;QACJ;YACE,iBAAiB,EAAE,KAAK,CAAC,WAAW,CAAC;gBACnC,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,oBAAoB,EAAE,KAAK,CAAC,WAAW,CAAC;gBACtC,SAAS,EAAE,QAAQ;gBACnB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,gBAAgB,EAAE;gBAChB,aAAa,EAAE,KAAK;gBACpB,EAAE,EAAE,aAAa;gBACjB,IAAI,EAAE,KAAK;gBACX,IAAI,EAAE,OAAO;aACd;YACD,gBAAgB,EAAE;gBAChB,OAAO,EAAE,4CAA4C;gBACrD,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC;gBACX,IAAI,EAAE,yBAAyB;gBAC/B,QAAQ,EAAE,QAAQ;gBAClB,MAAM,EAAE,QAAQ;gBAChB,QAAQ,EAAE,8DAA8D;gBACxE,QAAQ,EAAE,IAAI;aACf;YACD,EAAE,EAAE,6BAA6B;YACjC,QAAQ,EAAE,EAAE,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE;YACxC,OAAO,EAAE;gBACP,gBAAgB,EAAE,CAAC;gBACnB,eAAe,EAAE,eAAe;gBAChC,YAAY,EAAE,gBAAgB;gBAC9B,IAAI,EAAE,QAAQ;aACf;YACD,KAAK,EAAE;gBACL,SAAS,EAAE,0BAA0B;aACtC;YACD,YAAY,EAAE,KAAK,CAAC,WAAW,CAAC;gBAC9B,SAAS,EAAE,SAAS;gBACpB,QAAQ,EAAE,KAAK;gBACf,QAAQ,EAAE,CAAC;aACZ,CAAC;YACF,WAAW,EAAE,gBAAgB;YAC7B,WAAW,EAAE,eAAe;SAC7B;KACF;CACsD,CAAA;AAEzD,wCAAwC;AACxC,MAAM,UAAU,MAAM;IACpB,OAAO,IAAI,IAAI,EAAmB,CAAC,GAAG,CACpC,oBAAoB,EACpB,IAAI,CAAC,MAAM,CAAC,EAAE,MAAM,EAAE,EAAE,MAAM,EAAE,CAAC,WAAW,CAAC,EAAE,EAAE,GAAG,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC,EAC3E,OAAO,CAAC,QAAQ,CAAC,OAAO,EAAE,MAAM,CAAC,YAAY,CAAC,KAAK,EAAE;QACnD,IAAI,EAAE,eAAe;QACrB,OAAO,EAAE,0BAA0B;KACpC,CAAC,EACF,OAAO,CAAC,aAAa,CAAC;QACpB,WAAW,EAAE,4DAA4D;QACzE,WAAW,EAAE,cAAc;QAC3B,SAAS,EAAE,OAAO,CAAC,SAAS,CAAC;YAC3B,MAAM,EAAE;gBACN,GAAG,EAAE,EAAE,KAAK,EAAE,CAAC,eAAe,CAAC,EAAE;gBACjC,GAAG,EAAE;oBACH,KAAK,EAAE,CAAC,gBAAgB,CAAC;oBACzB,WAAW,EACT,4EAA4E;iBAC/E;aACF;YACD,OAAO,EAAE;gBACP,WAAW,EAAE,wEAAwE;gBACrF,OAAO,EAAE,2BAA2B;gBACpC,MAAM,EAAE,MAAM,CAAC,YAAY,CAAC,QAAQ;aACrC;SACF,CAAC;QACF,OAAO,EAAE,YAAY;QACrB,IAAI,EAAE,CAAC,QAAQ,CAAC;KACjB,CAAC,EACF,KAAK,EAAE,CAAC,EAAE,EAAE;QACV,IAAI,IAAI,CAAC,YAAY;YAAE,OAAO,IAAI,CAAC,eAAe,CAAC,CAAC,CAAC,CAAA;QACrD,IAAI,OAAO,CAAC,gBAAgB;YAC1B,OAAO,OAAO,CAAC,eAAe,CAAC,CAAC,EAAE;gBAChC,IAAI,EAAE,eAAe;gBACrB,OAAO,EAAE,0BAA0B;aACpC,CAAC,CAAA;QAEJ,MAAM,KAAK,GAAG,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,OAAO,CAAC,CAAA;QAClC,MAAM,QAAQ,GAAsC,EAAE,CAAA;QACtD,MAAM,OAAO,GAAG,MAAM,cAAc,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAA;QAChD,MAAM,SAAS,GAAG,CAAC,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC,CAAA;QAC/D,IAAI,CAAC;YACH,CAAC,CAAC,MAAM,CAAC,eAAe,EAAE,UAAU,CAAC,CAAA;YACrC,MAAM,IAAI,GAAG,MAAM,eAAe,CAAC,SAAS,CAAC;gBAC3C,KAAK,EAAE,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,EAAE;gBACzC,OAAO;gBACP,gBAAgB,EAAE,KAAK,CAAC,gBAAgB;gBACxC,SAAS,EAAE,CAAC,OAAO,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,OAAO,CAAC;gBAC9C,QAAQ,EAAE,KAAK,CAAC,QAAQ;gBACxB,SAAS;gBACT,YAAY,EAAE,KAAK,CAAC,YAAY;gBAChC,iBAAiB,EAAE,KAAK,CAAC,iBAAiB;gBAC1C,WAAW,EAAE,KAAK,CAAC,WAAW;gBAC9B,WAAW,EAAE,KAAK,CAAC,WAAW;aAC/B,CAAC,CAAA;YACF,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC;gBACrB,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAE,QAAQ,CAAC,GAAG,CAAC,gBAAgB,CAAC,MAAM,CAAC,CAAC,CAAA;YACzE,OAAO,CAAC,CAAC,IAAI,CACX,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,YAAY,CAAC,QAAQ,EAAE;gBAC/C,IAAI;aACL,CAAC,EACF,GAAG,CACJ,CAAA;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,MAAM,OAAO,GAAG,mBAAmB,CAAC,KAAK,CAAC,CAAA;YAC1C,IAAI,OAAO;gBAAE,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,IAAI,EAAE,eAAe,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,EAAE,CAAC,CAAA;YACtF,IAAI,KAAK,YAAY,eAAe,CAAC,kBAAkB,EAAE,CAAC;gBACxD,IAAI,KAAK,CAAC,uBAAuB,CAAC,MAAM,GAAG,CAAC;oBAC1C,CAAC,CAAC,GAAG,CAAC,yBAAyB,EAAE,KAAK,CAAC,uBAAuB,CAAC,CAAA;gBACjE,IAAI,KAAK,CAAC,eAAe;oBAAE,CAAC,CAAC,GAAG,CAAC,iBAAiB,EAAE,KAAK,CAAC,eAAe,CAAC,CAAA;gBAC1E,IAAI,KAAK,CAAC,gBAAgB;oBAAE,CAAC,CAAC,GAAG,CAAC,kBAAkB,EAAE,KAAK,CAAC,gBAAgB,CAAC,CAAA;gBAC7E,OAAO,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE;oBACvB,IAAI,EAAE,gBAAgB;oBACtB,OAAO,EAAE,iDAAiD;oBAC1D,MAAM,EAAE,GAAG;iBACZ,CAAC,CAAA;YACJ,CAAC;YACD,MAAM,KAAK,CAAA;QACb,CAAC;IACH,CAAC,CACF,CAAA;AACH,CAAC;AAED,8EAA8E;AAC9E,SAAS,mBAAmB,CAAC,KAAc;IACzC,IAAI,KAAK,YAAY,eAAe,CAAC,kBAAkB;QAAE,OAAO,yBAAyB,CAAA;IACzF,IAAI,KAAK,YAAY,eAAe,CAAC,gCAAgC;QACnE,OAAO,iCAAiC,CAAA;IAC1C,IAAI,KAAK,YAAY,eAAe,CAAC,wBAAwB;QAAE,OAAO,yBAAyB,CAAA;IAC/F,IAAI,KAAK,YAAY,eAAe,CAAC,2BAA2B;QAC9D,OAAO,4BAA4B,CAAA;IACrC,OAAO,SAAS,CAAA;AAClB,CAAC;AAED,SAAS,WAAW,CAAC,OAAgB;IACnC,MAAM,UAAU,GAAG,CACjB,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,eAAe,CAAC;QACpC,OAAO,CAAC,OAAO,CAAC,GAAG,CAAC,QAAQ,CAAC;QAC7B,EAAE,CACH,CAAC,WAAW,EAAE,CAAA;IACf,OAAO,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,IAAI,UAAU,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAA;AAC3E,CAAC"}