tapimo 0.7.2 → 0.9.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 (300) 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 +20117 -19183
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +61 -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 +11 -11
  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 +11696 -13937
  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 +271 -271
  35. package/dist/apps/data/routes/addresses.d.ts +398 -167
  36. package/dist/apps/data/routes/addresses.d.ts.map +1 -1
  37. package/dist/apps/data/routes/balances.d.ts +278 -8
  38. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  39. package/dist/apps/data/routes/balances.js +114 -2
  40. package/dist/apps/data/routes/balances.js.map +1 -1
  41. package/dist/apps/data/routes/blocks.d.ts +123 -123
  42. package/dist/apps/data/routes/coingecko.d.ts +170 -170
  43. package/dist/apps/data/routes/earn.d.ts +498 -6
  44. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  45. package/dist/apps/data/routes/earn.js +876 -4
  46. package/dist/apps/data/routes/earn.js.map +1 -1
  47. package/dist/apps/data/routes/exchanges.d.ts +10 -10
  48. package/dist/apps/data/routes/fee-amm.d.ts +2 -2
  49. package/dist/apps/data/routes/indexer.d.ts +6 -6
  50. package/dist/apps/data/routes/indexer.js +4 -1
  51. package/dist/apps/data/routes/indexer.js.map +1 -1
  52. package/dist/apps/data/routes/receipts.d.ts +235 -235
  53. package/dist/apps/data/routes/rpc.d.ts +31 -31
  54. package/dist/apps/data/routes/rpc.js +4 -1
  55. package/dist/apps/data/routes/rpc.js.map +1 -1
  56. package/dist/apps/data/routes/tokenlist.d.ts +36 -36
  57. package/dist/apps/data/routes/tokens.d.ts +449 -449
  58. package/dist/apps/data/routes/transactions.d.ts +2 -2
  59. package/dist/apps/data/routes/transfers.d.ts +81 -81
  60. package/dist/apps/data/routes/valuation.d.ts +1 -1
  61. package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
  62. package/dist/apps/data/routes/webhooks.d.ts +9 -9
  63. package/dist/apps/data/routes/zones.d.ts +14 -14
  64. package/dist/apps/funding/Access.d.ts +16 -0
  65. package/dist/apps/funding/Access.d.ts.map +1 -0
  66. package/dist/apps/funding/Access.js +22 -0
  67. package/dist/apps/funding/Access.js.map +1 -0
  68. package/dist/apps/{data/routes/funding.d.ts → funding/App.d.ts} +1640 -3217
  69. package/dist/apps/funding/App.d.ts.map +1 -0
  70. package/dist/apps/funding/App.js +61 -0
  71. package/dist/apps/funding/App.js.map +1 -0
  72. package/dist/apps/funding/Inventory.d.ts +5 -0
  73. package/dist/apps/funding/Inventory.d.ts.map +1 -0
  74. package/dist/apps/funding/Inventory.js +25 -0
  75. package/dist/apps/funding/Inventory.js.map +1 -0
  76. package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
  77. package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
  78. package/dist/apps/funding/ProviderAttempts.js +24 -0
  79. package/dist/apps/funding/ProviderAttempts.js.map +1 -0
  80. package/dist/apps/funding/index.d.ts +2 -0
  81. package/dist/apps/funding/index.d.ts.map +1 -0
  82. package/dist/apps/funding/index.js +2 -0
  83. package/dist/apps/funding/index.js.map +1 -0
  84. package/dist/apps/funding/routes/chains.d.ts +169 -0
  85. package/dist/apps/funding/routes/chains.d.ts.map +1 -0
  86. package/dist/apps/funding/routes/chains.js +80 -0
  87. package/dist/apps/funding/routes/chains.js.map +1 -0
  88. package/dist/apps/funding/routes/deposit-addresses.d.ts +1997 -0
  89. package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
  90. package/dist/apps/funding/routes/deposit-addresses.js +778 -0
  91. package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
  92. package/dist/apps/funding/routes/providers.d.ts +91 -0
  93. package/dist/apps/funding/routes/providers.d.ts.map +1 -0
  94. package/dist/apps/funding/routes/providers.js +56 -0
  95. package/dist/apps/funding/routes/providers.js.map +1 -0
  96. package/dist/apps/funding/routes/quotes.d.ts +426 -0
  97. package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
  98. package/dist/apps/funding/routes/quotes.js +188 -0
  99. package/dist/apps/funding/routes/quotes.js.map +1 -0
  100. package/dist/apps/funding/routes/transfers.d.ts +1999 -0
  101. package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
  102. package/dist/apps/funding/routes/transfers.js +614 -0
  103. package/dist/apps/funding/routes/transfers.js.map +1 -0
  104. package/dist/apps/index.d.ts +1 -0
  105. package/dist/apps/index.d.ts.map +1 -1
  106. package/dist/apps/index.js +1 -0
  107. package/dist/apps/index.js.map +1 -1
  108. package/dist/apps/management/App.d.ts +430 -165
  109. package/dist/apps/management/App.d.ts.map +1 -1
  110. package/dist/apps/management/routes/api-keys.d.ts +298 -21
  111. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  112. package/dist/apps/management/routes/api-keys.js +75 -1
  113. package/dist/apps/management/routes/api-keys.js.map +1 -1
  114. package/dist/apps/management/routes/billing.d.ts +6 -6
  115. package/dist/apps/management/routes/faucet.d.ts +35 -35
  116. package/dist/apps/management/routes/invitations.d.ts +122 -122
  117. package/dist/apps/management/routes/invite-links.d.ts +38 -38
  118. package/dist/apps/management/routes/members.d.ts +69 -69
  119. package/dist/apps/management/routes/orgs.d.ts +99 -99
  120. package/dist/apps/management/routes/projects.d.ts +25 -25
  121. package/dist/apps/management/routes/scopes.d.ts +1 -1
  122. package/dist/apps/management/routes/usage.d.ts +72 -72
  123. package/dist/apps/management/routes/verified-token-requests.d.ts +77 -77
  124. package/dist/apps/management/routes/webhooks.d.ts +128 -128
  125. package/dist/apps/mcp.d.ts +2 -3
  126. package/dist/apps/mcp.d.ts.map +1 -1
  127. package/dist/apps/mcp.js +16 -14
  128. package/dist/apps/mcp.js.map +1 -1
  129. package/dist/apps/metadata.d.ts +4 -0
  130. package/dist/apps/metadata.d.ts.map +1 -1
  131. package/dist/apps/metadata.js +10 -0
  132. package/dist/apps/metadata.js.map +1 -1
  133. package/dist/apps/mpp/App.d.ts +44 -44
  134. package/dist/cloudflare.d.ts +50 -0
  135. package/dist/cloudflare.d.ts.map +1 -1
  136. package/dist/cloudflare.js +178 -0
  137. package/dist/cloudflare.js.map +1 -1
  138. package/dist/db/Db.d.ts +2 -0
  139. package/dist/db/Db.d.ts.map +1 -1
  140. package/dist/db/Db.js +45 -0
  141. package/dist/db/Db.js.map +1 -1
  142. package/dist/db/Schema.d.ts +12 -0
  143. package/dist/db/Schema.d.ts.map +1 -1
  144. package/dist/db/Schema.js +20 -0
  145. package/dist/db/Schema.js.map +1 -1
  146. package/dist/db/tables/fundingDepositAddresses.d.ts +13 -0
  147. package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -1
  148. package/dist/db/tables/fundingDepositAddresses.js +12 -0
  149. package/dist/db/tables/fundingDepositAddresses.js.map +1 -1
  150. package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
  151. package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
  152. package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
  153. package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
  154. package/dist/db/tables/fundingDeposits.d.ts +74 -1
  155. package/dist/db/tables/fundingDeposits.d.ts.map +1 -1
  156. package/dist/db/tables/fundingDeposits.js +126 -0
  157. package/dist/db/tables/fundingDeposits.js.map +1 -1
  158. package/dist/internal/Auth.d.ts +15 -11
  159. package/dist/internal/Auth.d.ts.map +1 -1
  160. package/dist/internal/Auth.js +52 -17
  161. package/dist/internal/Auth.js.map +1 -1
  162. package/dist/internal/Cache.js +1 -1
  163. package/dist/internal/Cache.js.map +1 -1
  164. package/dist/internal/EdgeCache.d.ts +2 -2
  165. package/dist/internal/EdgeCache.d.ts.map +1 -1
  166. package/dist/internal/EdgeCache.js +10 -4
  167. package/dist/internal/EdgeCache.js.map +1 -1
  168. package/dist/internal/IpAllowlist.d.ts +15 -0
  169. package/dist/internal/IpAllowlist.d.ts.map +1 -0
  170. package/dist/internal/IpAllowlist.js +27 -0
  171. package/dist/internal/IpAllowlist.js.map +1 -0
  172. package/dist/internal/OpenApi.d.ts +1 -1
  173. package/dist/internal/OpenApi.js +1 -1
  174. package/dist/internal/OpenApi.js.map +1 -1
  175. package/dist/internal/Tidx.d.ts +6 -0
  176. package/dist/internal/Tidx.d.ts.map +1 -1
  177. package/dist/internal/Tidx.js +13 -3
  178. package/dist/internal/Tidx.js.map +1 -1
  179. package/dist/internal/Viem.d.ts +8 -0
  180. package/dist/internal/Viem.d.ts.map +1 -1
  181. package/dist/internal/Viem.js +12 -5
  182. package/dist/internal/Viem.js.map +1 -1
  183. package/dist/internal/funding/Deposit.d.ts +42 -0
  184. package/dist/internal/funding/Deposit.d.ts.map +1 -1
  185. package/dist/internal/funding/Deposit.js +37 -5
  186. package/dist/internal/funding/Deposit.js.map +1 -1
  187. package/dist/internal/funding/Evidence.d.ts +1 -5
  188. package/dist/internal/funding/Evidence.d.ts.map +1 -1
  189. package/dist/internal/funding/Evidence.js +4 -3
  190. package/dist/internal/funding/Evidence.js.map +1 -1
  191. package/dist/internal/funding/Provider.d.ts +102 -0
  192. package/dist/internal/funding/Provider.d.ts.map +1 -1
  193. package/dist/internal/funding/Provider.js +5 -0
  194. package/dist/internal/funding/Provider.js.map +1 -1
  195. package/dist/internal/funding/Reconciliation.d.ts +16 -2
  196. package/dist/internal/funding/Reconciliation.d.ts.map +1 -1
  197. package/dist/internal/funding/Reconciliation.js +348 -54
  198. package/dist/internal/funding/Reconciliation.js.map +1 -1
  199. package/dist/internal/funding/SourceObservation.d.ts +108 -0
  200. package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
  201. package/dist/internal/funding/SourceObservation.js +143 -0
  202. package/dist/internal/funding/SourceObservation.js.map +1 -0
  203. package/dist/internal/funding/Subsidy.d.ts +2 -2
  204. package/dist/internal/funding/Subsidy.d.ts.map +1 -1
  205. package/dist/internal/funding/Subsidy.js +1 -1
  206. package/dist/internal/funding/Subsidy.js.map +1 -1
  207. package/dist/internal/funding/index.d.ts +1 -0
  208. package/dist/internal/funding/index.d.ts.map +1 -1
  209. package/dist/internal/funding/index.js +1 -0
  210. package/dist/internal/funding/index.js.map +1 -1
  211. package/dist/internal/funding/providers/relay.d.ts +43 -1
  212. package/dist/internal/funding/providers/relay.d.ts.map +1 -1
  213. package/dist/internal/funding/providers/relay.js +438 -27
  214. package/dist/internal/funding/providers/relay.js.map +1 -1
  215. package/package.json +3 -3
  216. package/src/ApiKey.test.ts +35 -0
  217. package/src/ApiKey.ts +27 -0
  218. package/src/ApiKeys.test.ts +29 -0
  219. package/src/ApiKeys.ts +11 -3
  220. package/src/App.test.ts +55 -5
  221. package/src/App.ts +79 -5
  222. package/src/Client.test-d.ts +203 -28
  223. package/src/admin/apps/api-keys.test.ts +25 -1
  224. package/src/admin/apps/api-keys.ts +6 -2
  225. package/src/admin/ui.generated.ts +67 -67
  226. package/src/analytics/Analytics.ts +4 -0
  227. package/src/apps/composition.test.ts +130 -3
  228. package/src/apps/data/App.test.ts +0 -12
  229. package/src/apps/data/App.ts +4 -8
  230. package/src/apps/data/routes/balances.test.ts +42 -0
  231. package/src/apps/data/routes/balances.ts +218 -85
  232. package/src/apps/data/routes/earn.test.ts +363 -0
  233. package/src/apps/data/routes/earn.ts +1141 -3
  234. package/src/apps/data/routes/indexer.ts +2 -1
  235. package/src/apps/data/routes/rpc.ts +2 -0
  236. package/src/apps/data/routes/tokens.test.ts +6 -8
  237. package/src/apps/funding/Access.ts +26 -0
  238. package/src/apps/funding/App.test.ts +78 -0
  239. package/src/apps/funding/App.ts +78 -0
  240. package/src/apps/funding/Inventory.ts +30 -0
  241. package/src/apps/funding/ProviderAttempts.ts +26 -0
  242. package/src/apps/funding/index.ts +1 -0
  243. package/src/apps/funding/routes/chains.test.ts +78 -0
  244. package/src/apps/funding/routes/chains.ts +101 -0
  245. package/src/apps/funding/routes/deposit-addresses.test.ts +1649 -0
  246. package/src/apps/funding/routes/deposit-addresses.ts +932 -0
  247. package/src/apps/funding/routes/providers.test.ts +165 -0
  248. package/src/apps/funding/routes/providers.ts +73 -0
  249. package/src/apps/funding/routes/quotes.test.ts +511 -0
  250. package/src/apps/funding/routes/quotes.ts +205 -0
  251. package/src/apps/funding/routes/transfers.test.ts +1236 -0
  252. package/src/apps/funding/routes/transfers.ts +704 -0
  253. package/src/apps/index.ts +1 -0
  254. package/src/apps/management/routes/api-keys.test.ts +98 -0
  255. package/src/apps/management/routes/api-keys.ts +96 -1
  256. package/src/apps/mcp.test.ts +17 -2
  257. package/src/apps/mcp.ts +18 -13
  258. package/src/apps/metadata.ts +12 -0
  259. package/src/apps/mpp/internal/Policy.test.ts +7 -1
  260. package/src/cloudflare.ts +279 -0
  261. package/src/db/Db.ts +71 -0
  262. package/src/db/Schema.ts +24 -0
  263. package/src/db/tables/fundingDepositAddresses.ts +28 -0
  264. package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
  265. package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
  266. package/src/db/tables/fundingDeposits.test.ts +239 -0
  267. package/src/db/tables/fundingDeposits.ts +214 -1
  268. package/src/internal/Auth.test.ts +205 -5
  269. package/src/internal/Auth.ts +63 -19
  270. package/src/internal/Cache.test.ts +37 -3
  271. package/src/internal/Cache.ts +1 -1
  272. package/src/internal/EdgeCache.test.ts +7 -7
  273. package/src/internal/EdgeCache.ts +13 -4
  274. package/src/internal/IpAllowlist.test.ts +52 -0
  275. package/src/internal/IpAllowlist.ts +39 -0
  276. package/src/internal/Log.test.ts +7 -1
  277. package/src/internal/OpenApi.ts +1 -1
  278. package/src/internal/Tidx.test.ts +28 -0
  279. package/src/internal/Tidx.ts +19 -3
  280. package/src/internal/Viem.test.ts +28 -0
  281. package/src/internal/Viem.ts +21 -5
  282. package/src/internal/funding/Deposit.ts +74 -5
  283. package/src/internal/funding/Evidence.test.ts +2 -2
  284. package/src/internal/funding/Evidence.ts +4 -9
  285. package/src/internal/funding/Provider.ts +115 -0
  286. package/src/internal/funding/Reconciliation.local.test.ts +7 -0
  287. package/src/internal/funding/Reconciliation.test.ts +1364 -109
  288. package/src/internal/funding/Reconciliation.ts +467 -88
  289. package/src/internal/funding/SourceObservation.test.ts +301 -0
  290. package/src/internal/funding/SourceObservation.ts +267 -0
  291. package/src/internal/funding/Subsidy.ts +2 -2
  292. package/src/internal/funding/index.test.ts +1 -0
  293. package/src/internal/funding/index.ts +1 -0
  294. package/src/internal/funding/providers/relay.test.ts +94 -4
  295. package/src/internal/funding/providers/relay.ts +533 -27
  296. package/dist/apps/data/routes/funding.d.ts.map +0 -1
  297. package/dist/apps/data/routes/funding.js +0 -1557
  298. package/dist/apps/data/routes/funding.js.map +0 -1
  299. package/src/apps/data/routes/funding.test.ts +0 -2994
  300. 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":"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"}