tapimo 0.15.1 → 0.18.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 (709) hide show
  1. package/README.md +137 -0
  2. package/dist/ApiKey.d.ts +1 -0
  3. package/dist/ApiKey.d.ts.map +1 -1
  4. package/dist/ApiKey.js +4 -2
  5. package/dist/ApiKey.js.map +1 -1
  6. package/dist/ApiKeys.d.ts +37 -11
  7. package/dist/ApiKeys.d.ts.map +1 -1
  8. package/dist/ApiKeys.js +163 -10
  9. package/dist/ApiKeys.js.map +1 -1
  10. package/dist/App.d.ts +13085 -11974
  11. package/dist/App.d.ts.map +1 -1
  12. package/dist/App.js +46 -15
  13. package/dist/App.js.map +1 -1
  14. package/dist/Scope.d.ts +1 -1
  15. package/dist/Scope.d.ts.map +1 -1
  16. package/dist/Scope.js +1 -1
  17. package/dist/Scope.js.map +1 -1
  18. package/dist/admin/App.d.ts +893 -191
  19. package/dist/admin/App.d.ts.map +1 -1
  20. package/dist/admin/App.js +5 -1
  21. package/dist/admin/App.js.map +1 -1
  22. package/dist/admin/apps/api-keys.d.ts +70 -70
  23. package/dist/admin/apps/api-keys.d.ts.map +1 -1
  24. package/dist/admin/apps/api-keys.js +8 -3
  25. package/dist/admin/apps/api-keys.js.map +1 -1
  26. package/dist/admin/apps/earn-vaults.d.ts +66 -27
  27. package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
  28. package/dist/admin/apps/earn-vaults.js +36 -7
  29. package/dist/admin/apps/earn-vaults.js.map +1 -1
  30. package/dist/admin/apps/organizations.d.ts +25 -25
  31. package/dist/admin/apps/organizations.d.ts.map +1 -1
  32. package/dist/admin/apps/organizations.js +5 -4
  33. package/dist/admin/apps/organizations.js.map +1 -1
  34. package/dist/admin/apps/route-policies.d.ts +632 -0
  35. package/dist/admin/apps/route-policies.d.ts.map +1 -0
  36. package/dist/admin/apps/route-policies.js +257 -0
  37. package/dist/admin/apps/route-policies.js.map +1 -0
  38. package/dist/admin/apps/routes-support.js +39 -3
  39. package/dist/admin/apps/routes-support.js.map +1 -1
  40. package/dist/admin/apps/routes.d.ts +529 -76
  41. package/dist/admin/apps/routes.d.ts.map +1 -1
  42. package/dist/admin/apps/routes.js +82 -1
  43. package/dist/admin/apps/routes.js.map +1 -1
  44. package/dist/admin/apps/verified-tokens.d.ts +157 -157
  45. package/dist/admin/index.d.ts +0 -1
  46. package/dist/admin/index.d.ts.map +1 -1
  47. package/dist/admin/index.js +0 -1
  48. package/dist/admin/index.js.map +1 -1
  49. package/dist/admin/ui.generated.d.ts +1 -1
  50. package/dist/admin/ui.generated.d.ts.map +1 -1
  51. package/dist/admin/ui.generated.js +205 -201
  52. package/dist/admin/ui.generated.js.map +1 -1
  53. package/dist/analytics/Analytics.d.ts.map +1 -1
  54. package/dist/analytics/Analytics.js +65 -1
  55. package/dist/analytics/Analytics.js.map +1 -1
  56. package/dist/analytics/tables/requestEvents.d.ts +1 -1
  57. package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
  58. package/dist/analytics/tables/requestEvents.js +58 -59
  59. package/dist/analytics/tables/requestEvents.js.map +1 -1
  60. package/dist/apps/data/App.d.ts +2709 -2670
  61. package/dist/apps/data/App.d.ts.map +1 -1
  62. package/dist/apps/data/routes/activities.d.ts +357 -357
  63. package/dist/apps/data/routes/activities.d.ts.map +1 -1
  64. package/dist/apps/data/routes/activities.js +50 -0
  65. package/dist/apps/data/routes/activities.js.map +1 -1
  66. package/dist/apps/data/routes/addresses.d.ts +248 -248
  67. package/dist/apps/data/routes/balances.d.ts +22 -22
  68. package/dist/apps/data/routes/balances.d.ts.map +1 -1
  69. package/dist/apps/data/routes/balances.js +5 -7
  70. package/dist/apps/data/routes/balances.js.map +1 -1
  71. package/dist/apps/data/routes/blocks.d.ts +125 -125
  72. package/dist/apps/data/routes/coingecko.d.ts +54 -54
  73. package/dist/apps/data/routes/earn.d.ts +103 -12
  74. package/dist/apps/data/routes/earn.d.ts.map +1 -1
  75. package/dist/apps/data/routes/earn.js +456 -220
  76. package/dist/apps/data/routes/earn.js.map +1 -1
  77. package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
  78. package/dist/apps/data/routes/exchanges.js +267 -97
  79. package/dist/apps/data/routes/exchanges.js.map +1 -1
  80. package/dist/apps/data/routes/fee-amm.d.ts +109 -127
  81. package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
  82. package/dist/apps/data/routes/fee-amm.js +83 -54
  83. package/dist/apps/data/routes/fee-amm.js.map +1 -1
  84. package/dist/apps/data/routes/indexer.d.ts +43 -43
  85. package/dist/apps/data/routes/receipts.d.ts +235 -235
  86. package/dist/apps/data/routes/rpc.d.ts +30 -30
  87. package/dist/apps/data/routes/tokens.d.ts.map +1 -1
  88. package/dist/apps/data/routes/tokens.js +11 -6
  89. package/dist/apps/data/routes/tokens.js.map +1 -1
  90. package/dist/apps/data/routes/transactions.d.ts +2 -0
  91. package/dist/apps/data/routes/transactions.d.ts.map +1 -1
  92. package/dist/apps/data/routes/transactions.js +30 -22
  93. package/dist/apps/data/routes/transactions.js.map +1 -1
  94. package/dist/apps/data/routes/transfers.d.ts +77 -77
  95. package/dist/apps/data/routes/valuation.d.ts +32 -32
  96. package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
  97. package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
  98. package/dist/apps/data/routes/webhooks.js +1 -1
  99. package/dist/apps/data/routes/webhooks.js.map +1 -1
  100. package/dist/apps/data/routes/zones.d.ts +31 -31
  101. package/dist/apps/management/App.d.ts +2909 -2064
  102. package/dist/apps/management/App.d.ts.map +1 -1
  103. package/dist/apps/management/App.js +2 -0
  104. package/dist/apps/management/App.js.map +1 -1
  105. package/dist/apps/management/Billing.d.ts +2 -4
  106. package/dist/apps/management/Billing.d.ts.map +1 -1
  107. package/dist/apps/management/Billing.js +65 -26
  108. package/dist/apps/management/Billing.js.map +1 -1
  109. package/dist/apps/management/routes/api-keys.d.ts +257 -245
  110. package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
  111. package/dist/apps/management/routes/api-keys.js +70 -11
  112. package/dist/apps/management/routes/api-keys.js.map +1 -1
  113. package/dist/apps/management/routes/billing.d.ts +84 -84
  114. package/dist/apps/management/routes/cli.d.ts +912 -0
  115. package/dist/apps/management/routes/cli.d.ts.map +1 -0
  116. package/dist/apps/management/routes/cli.js +416 -0
  117. package/dist/apps/management/routes/cli.js.map +1 -0
  118. package/dist/apps/management/routes/faucet.d.ts +8 -8
  119. package/dist/apps/management/routes/invitations.d.ts +138 -138
  120. package/dist/apps/management/routes/invite-links.d.ts +172 -172
  121. package/dist/apps/management/routes/members.d.ts +16 -16
  122. package/dist/apps/management/routes/orgs.d.ts +104 -104
  123. package/dist/apps/management/routes/orgs.d.ts.map +1 -1
  124. package/dist/apps/management/routes/orgs.js +8 -2
  125. package/dist/apps/management/routes/orgs.js.map +1 -1
  126. package/dist/apps/management/routes/projects.d.ts +125 -125
  127. package/dist/apps/management/routes/usage.d.ts +8 -8
  128. package/dist/apps/management/routes/verified-token-requests.d.ts +86 -86
  129. package/dist/apps/management/routes/webhooks.d.ts +485 -485
  130. package/dist/apps/mpp/App.d.ts +44 -44
  131. package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
  132. package/dist/apps/mpp/internal/Policy.js +4 -2
  133. package/dist/apps/mpp/internal/Policy.js.map +1 -1
  134. package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
  135. package/dist/apps/mpp/internal/Sponsorship.js +6 -4
  136. package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
  137. package/dist/apps/relay/App.d.ts +8 -0
  138. package/dist/apps/relay/App.d.ts.map +1 -1
  139. package/dist/apps/relay/App.js +16 -4
  140. package/dist/apps/relay/App.js.map +1 -1
  141. package/dist/apps/relay/Sponsorships.d.ts +4 -6
  142. package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
  143. package/dist/apps/relay/Sponsorships.js +71 -60
  144. package/dist/apps/relay/Sponsorships.js.map +1 -1
  145. package/dist/apps/routes/Access.d.ts +53 -0
  146. package/dist/apps/routes/Access.d.ts.map +1 -1
  147. package/dist/apps/routes/Access.js +121 -0
  148. package/dist/apps/routes/Access.js.map +1 -1
  149. package/dist/apps/routes/App.d.ts +397 -158
  150. package/dist/apps/routes/App.d.ts.map +1 -1
  151. package/dist/apps/routes/App.js.map +1 -1
  152. package/dist/apps/routes/routes/chains.d.ts +25 -25
  153. package/dist/apps/routes/routes/deposit-addresses.d.ts +169 -61
  154. package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -1
  155. package/dist/apps/routes/routes/deposit-addresses.js +217 -32
  156. package/dist/apps/routes/routes/deposit-addresses.js.map +1 -1
  157. package/dist/apps/routes/routes/quotes.d.ts +171 -81
  158. package/dist/apps/routes/routes/quotes.d.ts.map +1 -1
  159. package/dist/apps/routes/routes/quotes.js +101 -27
  160. package/dist/apps/routes/routes/quotes.js.map +1 -1
  161. package/dist/apps/routes/routes/transfers.d.ts +532 -480
  162. package/dist/apps/routes/routes/transfers.d.ts.map +1 -1
  163. package/dist/apps/routes/routes/transfers.js +182 -37
  164. package/dist/apps/routes/routes/transfers.js.map +1 -1
  165. package/dist/cli/ApiKeys.d.ts +120 -0
  166. package/dist/cli/ApiKeys.d.ts.map +1 -0
  167. package/dist/cli/ApiKeys.js +138 -0
  168. package/dist/cli/ApiKeys.js.map +1 -0
  169. package/dist/cli/Cli.d.ts +92 -34
  170. package/dist/cli/Cli.d.ts.map +1 -1
  171. package/dist/cli/Cli.js +188 -11
  172. package/dist/cli/Cli.js.map +1 -1
  173. package/dist/cli/Credentials.d.ts +95 -0
  174. package/dist/cli/Credentials.d.ts.map +1 -0
  175. package/dist/cli/Credentials.js +110 -0
  176. package/dist/cli/Credentials.js.map +1 -0
  177. package/dist/cli/Spec.d.ts +59 -0
  178. package/dist/cli/Spec.d.ts.map +1 -0
  179. package/dist/cli/Spec.js +77 -0
  180. package/dist/cli/Spec.js.map +1 -0
  181. package/dist/cli/bin.js +5 -1
  182. package/dist/cli/bin.js.map +1 -1
  183. package/dist/cli/commands/admin.d.ts +5 -5
  184. package/dist/cli/commands/admin.d.ts.map +1 -1
  185. package/dist/cli/commands/auth.d.ts +73 -0
  186. package/dist/cli/commands/auth.d.ts.map +1 -0
  187. package/dist/cli/commands/auth.js +204 -0
  188. package/dist/cli/commands/auth.js.map +1 -0
  189. package/dist/cli/commands/keys.d.ts +17 -0
  190. package/dist/cli/commands/keys.d.ts.map +1 -0
  191. package/dist/cli/commands/keys.js +109 -0
  192. package/dist/cli/commands/keys.js.map +1 -0
  193. package/dist/cloudflare.d.ts +27 -2
  194. package/dist/cloudflare.d.ts.map +1 -1
  195. package/dist/cloudflare.js +144 -17
  196. package/dist/cloudflare.js.map +1 -1
  197. package/dist/db/Db.d.ts +23 -0
  198. package/dist/db/Db.d.ts.map +1 -1
  199. package/dist/db/Db.js +413 -1
  200. package/dist/db/Db.js.map +1 -1
  201. package/dist/db/Schema.d.ts +44 -1
  202. package/dist/db/Schema.d.ts.map +1 -1
  203. package/dist/db/Schema.js +56 -3
  204. package/dist/db/Schema.js.map +1 -1
  205. package/dist/db/tables/apiKeyAdmissions.d.ts +28 -2
  206. package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -1
  207. package/dist/db/tables/apiKeyAdmissions.js +65 -9
  208. package/dist/db/tables/apiKeyAdmissions.js.map +1 -1
  209. package/dist/db/tables/apiKeyOwnerTombstones.d.ts +2 -0
  210. package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -1
  211. package/dist/db/tables/apiKeyOwnerTombstones.js +2 -2
  212. package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -1
  213. package/dist/db/tables/authAccounts.d.ts.map +1 -1
  214. package/dist/db/tables/authAccounts.js +1 -0
  215. package/dist/db/tables/authAccounts.js.map +1 -1
  216. package/dist/db/tables/earnVaults.d.ts +5 -1
  217. package/dist/db/tables/earnVaults.d.ts.map +1 -1
  218. package/dist/db/tables/earnVaults.js +12 -1
  219. package/dist/db/tables/earnVaults.js.map +1 -1
  220. package/dist/db/tables/organizations.d.ts +4 -2
  221. package/dist/db/tables/organizations.d.ts.map +1 -1
  222. package/dist/db/tables/organizations.js +8 -34
  223. package/dist/db/tables/organizations.js.map +1 -1
  224. package/dist/db/tables/requestUsage.d.ts +5 -1
  225. package/dist/db/tables/requestUsage.d.ts.map +1 -1
  226. package/dist/db/tables/requestUsage.js +10 -2
  227. package/dist/db/tables/requestUsage.js.map +1 -1
  228. package/dist/db/tables/rewardEligibilityAssociations.d.ts +13 -0
  229. package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -1
  230. package/dist/db/tables/rewardEligibilityAssociations.js +11 -0
  231. package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -1
  232. package/dist/db/tables/rewardRuns.d.ts.map +1 -1
  233. package/dist/db/tables/rewardRuns.js +4 -0
  234. package/dist/db/tables/rewardRuns.js.map +1 -1
  235. package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -1
  236. package/dist/db/tables/rewardTransactionAttempts.js +2 -0
  237. package/dist/db/tables/rewardTransactionAttempts.js.map +1 -1
  238. package/dist/db/tables/routesDepositAddresses.d.ts +29 -0
  239. package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -1
  240. package/dist/db/tables/routesDepositAddresses.js +84 -31
  241. package/dist/db/tables/routesDepositAddresses.js.map +1 -1
  242. package/dist/db/tables/routesDeposits.d.ts.map +1 -1
  243. package/dist/db/tables/routesDeposits.js +31 -21
  244. package/dist/db/tables/routesDeposits.js.map +1 -1
  245. package/dist/db/tables/routesIdempotency.d.ts.map +1 -1
  246. package/dist/db/tables/routesIdempotency.js +2 -0
  247. package/dist/db/tables/routesIdempotency.js.map +1 -1
  248. package/dist/db/tables/routesPolicies.d.ts +58 -0
  249. package/dist/db/tables/routesPolicies.d.ts.map +1 -0
  250. package/dist/db/tables/routesPolicies.js +198 -0
  251. package/dist/db/tables/routesPolicies.js.map +1 -0
  252. package/dist/db/tables/routesTransferSubsidies.d.ts +22 -0
  253. package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -1
  254. package/dist/db/tables/routesTransferSubsidies.js +41 -0
  255. package/dist/db/tables/routesTransferSubsidies.js.map +1 -1
  256. package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -1
  257. package/dist/db/tables/routesTransferSubsidyNonces.js +12 -4
  258. package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -1
  259. package/dist/db/tables/routesTransfers.d.ts +26 -1
  260. package/dist/db/tables/routesTransfers.d.ts.map +1 -1
  261. package/dist/db/tables/routesTransfers.js +36 -6
  262. package/dist/db/tables/routesTransfers.js.map +1 -1
  263. package/dist/db/tables/sponsoredTransactions.d.ts +45 -13
  264. package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
  265. package/dist/db/tables/sponsoredTransactions.js +144 -33
  266. package/dist/db/tables/sponsoredTransactions.js.map +1 -1
  267. package/dist/db/tables/users.d.ts +2 -0
  268. package/dist/db/tables/users.d.ts.map +1 -1
  269. package/dist/db/tables/users.js +11 -0
  270. package/dist/db/tables/users.js.map +1 -1
  271. package/dist/handlers/internal/multisig.d.ts +1 -1
  272. package/dist/handlers/internal/multisig.d.ts.map +1 -1
  273. package/dist/handlers/internal/multisig.js +3 -2
  274. package/dist/handlers/internal/multisig.js.map +1 -1
  275. package/dist/handlers/relay.d.ts +2 -0
  276. package/dist/handlers/relay.d.ts.map +1 -1
  277. package/dist/handlers/relay.js +34 -15
  278. package/dist/handlers/relay.js.map +1 -1
  279. package/dist/internal/Auth.d.ts +57 -6
  280. package/dist/internal/Auth.d.ts.map +1 -1
  281. package/dist/internal/Auth.js +182 -78
  282. package/dist/internal/Auth.js.map +1 -1
  283. package/dist/internal/BetterAuth.d.ts +22 -0
  284. package/dist/internal/BetterAuth.d.ts.map +1 -1
  285. package/dist/internal/BetterAuth.js +17 -14
  286. package/dist/internal/BetterAuth.js.map +1 -1
  287. package/dist/internal/Cache.d.ts +5 -0
  288. package/dist/internal/Cache.d.ts.map +1 -1
  289. package/dist/internal/Cache.js +3 -1
  290. package/dist/internal/Cache.js.map +1 -1
  291. package/dist/internal/CliAuth.d.ts +243 -0
  292. package/dist/internal/CliAuth.d.ts.map +1 -0
  293. package/dist/internal/CliAuth.js +249 -0
  294. package/dist/internal/CliAuth.js.map +1 -0
  295. package/dist/internal/EarnSharePrices.d.ts +1 -1
  296. package/dist/internal/EarnSharePrices.d.ts.map +1 -1
  297. package/dist/internal/EarnSharePrices.js +7 -3
  298. package/dist/internal/EarnSharePrices.js.map +1 -1
  299. package/dist/internal/EarnVaults.d.ts +47 -0
  300. package/dist/internal/EarnVaults.d.ts.map +1 -1
  301. package/dist/internal/EarnVaults.js +188 -4
  302. package/dist/internal/EarnVaults.js.map +1 -1
  303. package/dist/internal/EarnWithdrawals.d.ts +73 -0
  304. package/dist/internal/EarnWithdrawals.d.ts.map +1 -0
  305. package/dist/internal/EarnWithdrawals.js +189 -0
  306. package/dist/internal/EarnWithdrawals.js.map +1 -0
  307. package/dist/internal/ExecutionContext.d.ts +21 -0
  308. package/dist/internal/ExecutionContext.d.ts.map +1 -0
  309. package/dist/internal/ExecutionContext.js +16 -0
  310. package/dist/internal/ExecutionContext.js.map +1 -0
  311. package/dist/internal/Log.d.ts +7 -3
  312. package/dist/internal/Log.d.ts.map +1 -1
  313. package/dist/internal/Log.js +163 -130
  314. package/dist/internal/Log.js.map +1 -1
  315. package/dist/internal/MetricSink.d.ts.map +1 -1
  316. package/dist/internal/MetricSink.js +26 -1
  317. package/dist/internal/MetricSink.js.map +1 -1
  318. package/dist/internal/RateLimit.d.ts +67 -0
  319. package/dist/internal/RateLimit.d.ts.map +1 -1
  320. package/dist/internal/RateLimit.js +174 -27
  321. package/dist/internal/RateLimit.js.map +1 -1
  322. package/dist/internal/Store.d.ts +6 -0
  323. package/dist/internal/Store.d.ts.map +1 -1
  324. package/dist/internal/Store.js +4 -5
  325. package/dist/internal/Store.js.map +1 -1
  326. package/dist/internal/Timing.d.ts +6 -0
  327. package/dist/internal/Timing.d.ts.map +1 -1
  328. package/dist/internal/Timing.js +21 -1
  329. package/dist/internal/Timing.js.map +1 -1
  330. package/dist/internal/Tron.d.ts +124 -0
  331. package/dist/internal/Tron.d.ts.map +1 -0
  332. package/dist/internal/Tron.js +202 -0
  333. package/dist/internal/Tron.js.map +1 -0
  334. package/dist/internal/Viem.d.ts +4 -0
  335. package/dist/internal/Viem.d.ts.map +1 -1
  336. package/dist/internal/Viem.js +25 -6
  337. package/dist/internal/Viem.js.map +1 -1
  338. package/dist/internal/rewards/Read.d.ts +2 -2
  339. package/dist/internal/rewards/Read.d.ts.map +1 -1
  340. package/dist/internal/rewards/Read.js +11 -2
  341. package/dist/internal/rewards/Read.js.map +1 -1
  342. package/dist/internal/routes/Action.d.ts +27 -0
  343. package/dist/internal/routes/Action.d.ts.map +1 -1
  344. package/dist/internal/routes/Action.js +49 -1
  345. package/dist/internal/routes/Action.js.map +1 -1
  346. package/dist/internal/routes/Chain.d.ts +2 -0
  347. package/dist/internal/routes/Chain.d.ts.map +1 -1
  348. package/dist/internal/routes/Chain.js +4 -0
  349. package/dist/internal/routes/Chain.js.map +1 -1
  350. package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
  351. package/dist/internal/routes/DepositAddress.js +5 -0
  352. package/dist/internal/routes/DepositAddress.js.map +1 -1
  353. package/dist/internal/routes/Evidence.d.ts.map +1 -1
  354. package/dist/internal/routes/Evidence.js +6 -2
  355. package/dist/internal/routes/Evidence.js.map +1 -1
  356. package/dist/internal/routes/EvmTransferSettlement.d.ts +17 -0
  357. package/dist/internal/routes/EvmTransferSettlement.d.ts.map +1 -0
  358. package/dist/internal/routes/EvmTransferSettlement.js +196 -0
  359. package/dist/internal/routes/EvmTransferSettlement.js.map +1 -0
  360. package/dist/internal/routes/Policy.d.ts +161 -0
  361. package/dist/internal/routes/Policy.d.ts.map +1 -0
  362. package/dist/internal/routes/Policy.js +249 -0
  363. package/dist/internal/routes/Policy.js.map +1 -0
  364. package/dist/internal/routes/Provider.d.ts +66 -3
  365. package/dist/internal/routes/Provider.d.ts.map +1 -1
  366. package/dist/internal/routes/Provider.js +106 -27
  367. package/dist/internal/routes/Provider.js.map +1 -1
  368. package/dist/internal/routes/Quota.d.ts +57 -0
  369. package/dist/internal/routes/Quota.d.ts.map +1 -0
  370. package/dist/internal/routes/Quota.js +144 -0
  371. package/dist/internal/routes/Quota.js.map +1 -0
  372. package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
  373. package/dist/internal/routes/Reconciliation.js +163 -47
  374. package/dist/internal/routes/Reconciliation.js.map +1 -1
  375. package/dist/internal/routes/SolanaTransferSettlement.d.ts +12 -0
  376. package/dist/internal/routes/SolanaTransferSettlement.d.ts.map +1 -0
  377. package/dist/internal/routes/SolanaTransferSettlement.js +220 -0
  378. package/dist/internal/routes/SolanaTransferSettlement.js.map +1 -0
  379. package/dist/internal/routes/SolanaTransferSubsidy.d.ts +172 -0
  380. package/dist/internal/routes/SolanaTransferSubsidy.d.ts.map +1 -0
  381. package/dist/internal/routes/SolanaTransferSubsidy.js +564 -0
  382. package/dist/internal/routes/SolanaTransferSubsidy.js.map +1 -0
  383. package/dist/internal/routes/Subsidy.d.ts +2 -2
  384. package/dist/internal/routes/Subsidy.d.ts.map +1 -1
  385. package/dist/internal/routes/Subsidy.js +2 -2
  386. package/dist/internal/routes/Subsidy.js.map +1 -1
  387. package/dist/internal/routes/Transfer.d.ts +229 -1
  388. package/dist/internal/routes/Transfer.d.ts.map +1 -1
  389. package/dist/internal/routes/Transfer.js +644 -7
  390. package/dist/internal/routes/Transfer.js.map +1 -1
  391. package/dist/internal/routes/TransferReconciliation.d.ts +6 -0
  392. package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -1
  393. package/dist/internal/routes/TransferReconciliation.js +83 -159
  394. package/dist/internal/routes/TransferReconciliation.js.map +1 -1
  395. package/dist/internal/routes/TransferSettlement.d.ts +45 -0
  396. package/dist/internal/routes/TransferSettlement.d.ts.map +1 -0
  397. package/dist/internal/routes/TransferSettlement.js +2 -0
  398. package/dist/internal/routes/TransferSettlement.js.map +1 -0
  399. package/dist/internal/routes/TransferSubsidy.d.ts +23 -8
  400. package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -1
  401. package/dist/internal/routes/TransferSubsidy.js +64 -5
  402. package/dist/internal/routes/TransferSubsidy.js.map +1 -1
  403. package/dist/internal/routes/TronTransferSettlement.d.ts +12 -0
  404. package/dist/internal/routes/TronTransferSettlement.d.ts.map +1 -0
  405. package/dist/internal/routes/TronTransferSettlement.js +201 -0
  406. package/dist/internal/routes/TronTransferSettlement.js.map +1 -0
  407. package/dist/internal/routes/TronTransferSubsidy.d.ts +174 -0
  408. package/dist/internal/routes/TronTransferSubsidy.d.ts.map +1 -0
  409. package/dist/internal/routes/TronTransferSubsidy.js +439 -0
  410. package/dist/internal/routes/TronTransferSubsidy.js.map +1 -0
  411. package/dist/internal/routes/index.d.ts +3 -0
  412. package/dist/internal/routes/index.d.ts.map +1 -1
  413. package/dist/internal/routes/index.js +3 -0
  414. package/dist/internal/routes/index.js.map +1 -1
  415. package/dist/internal/routes/providers/across.d.ts +3 -0
  416. package/dist/internal/routes/providers/across.d.ts.map +1 -1
  417. package/dist/internal/routes/providers/across.js +11 -0
  418. package/dist/internal/routes/providers/across.js.map +1 -1
  419. package/dist/internal/routes/providers/legacyMesh.d.ts +29 -0
  420. package/dist/internal/routes/providers/legacyMesh.d.ts.map +1 -0
  421. package/dist/internal/routes/providers/legacyMesh.js +474 -0
  422. package/dist/internal/routes/providers/legacyMesh.js.map +1 -0
  423. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts +59 -0
  424. package/dist/internal/routes/providers/legacyMeshDelivery.d.ts.map +1 -0
  425. package/dist/internal/routes/providers/legacyMeshDelivery.js +229 -0
  426. package/dist/internal/routes/providers/legacyMeshDelivery.js.map +1 -0
  427. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts +19 -0
  428. package/dist/internal/routes/providers/legacyMeshOutbound.d.ts.map +1 -0
  429. package/dist/internal/routes/providers/legacyMeshOutbound.js +457 -0
  430. package/dist/internal/routes/providers/legacyMeshOutbound.js.map +1 -0
  431. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts +123 -0
  432. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts.map +1 -0
  433. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js +333 -0
  434. package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js.map +1 -0
  435. package/dist/internal/routes/providers/propAmm.d.ts +70 -0
  436. package/dist/internal/routes/providers/propAmm.d.ts.map +1 -0
  437. package/dist/internal/routes/providers/propAmm.js +524 -0
  438. package/dist/internal/routes/providers/propAmm.js.map +1 -0
  439. package/dist/internal/routes/providers/relay.d.ts +3 -0
  440. package/dist/internal/routes/providers/relay.d.ts.map +1 -1
  441. package/dist/internal/routes/providers/relay.js +352 -41
  442. package/dist/internal/routes/providers/relay.js.map +1 -1
  443. package/dist/internal/routes/providers/rhino.d.ts +3 -0
  444. package/dist/internal/routes/providers/rhino.d.ts.map +1 -1
  445. package/dist/internal/routes/providers/rhino.js +11 -0
  446. package/dist/internal/routes/providers/rhino.js.map +1 -1
  447. package/dist/internal/routes/providers/squid.d.ts +3 -0
  448. package/dist/internal/routes/providers/squid.d.ts.map +1 -1
  449. package/dist/internal/routes/providers/squid.js +19 -0
  450. package/dist/internal/routes/providers/squid.js.map +1 -1
  451. package/dist/internal/routes/providers/stargate.d.ts.map +1 -1
  452. package/dist/internal/routes/providers/stargate.js +22 -9
  453. package/dist/internal/routes/providers/stargate.js.map +1 -1
  454. package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -1
  455. package/dist/internal/routes/providers/symbiosis.js +13 -17
  456. package/dist/internal/routes/providers/symbiosis.js.map +1 -1
  457. package/dist/providers/index.d.ts +14 -0
  458. package/dist/providers/index.d.ts.map +1 -1
  459. package/dist/providers/index.js +6 -0
  460. package/dist/providers/index.js.map +1 -1
  461. package/package.json +16 -6
  462. package/src/ApiKey.ts +7 -3
  463. package/src/ApiKeys.test.ts +652 -8
  464. package/src/ApiKeys.ts +191 -11
  465. package/src/App.test.ts +405 -18
  466. package/src/App.ts +51 -15
  467. package/src/Client.test-d.ts +157 -10
  468. package/src/Client.test.ts +4 -4
  469. package/src/Scope.ts +1 -2
  470. package/src/admin/App.ts +11 -5
  471. package/src/admin/apps/api-keys.test.ts +98 -2
  472. package/src/admin/apps/api-keys.ts +21 -12
  473. package/src/admin/apps/earn-vaults.test.ts +76 -7
  474. package/src/admin/apps/earn-vaults.ts +47 -8
  475. package/src/admin/apps/organizations.test.ts +147 -31
  476. package/src/admin/apps/organizations.ts +5 -4
  477. package/src/admin/apps/route-policies.test.ts +220 -0
  478. package/src/admin/apps/route-policies.ts +322 -0
  479. package/src/admin/apps/routes-support.test.ts +107 -2
  480. package/src/admin/apps/routes-support.ts +43 -3
  481. package/src/admin/apps/routes.test.ts +150 -0
  482. package/src/admin/apps/routes.ts +97 -1
  483. package/src/admin/apps/scopes.test.ts +1 -1
  484. package/src/admin/index.ts +0 -1
  485. package/src/admin/ui/plugin.ts +2 -1
  486. package/src/admin/ui/src/components/Dialog.tsx +1 -1
  487. package/src/admin/ui/src/components/EarnVaultForm.tsx +45 -0
  488. package/src/admin/ui/src/components/RoutePicker.tsx +79 -0
  489. package/src/admin/ui/src/lib/earn-vaults.ts +1 -1
  490. package/src/admin/ui/src/lib/route-policies.test.ts +452 -0
  491. package/src/admin/ui/src/lib/route-policies.ts +232 -0
  492. package/src/admin/ui/src/lib/routes.ts +34 -0
  493. package/src/admin/ui/src/routeTree.gen.ts +21 -0
  494. package/src/admin/ui/src/routes/api-keys.tsx +21 -2
  495. package/src/admin/ui/src/routes/early-access.tsx +1 -0
  496. package/src/admin/ui/src/routes/earn.vaults.tsx +1 -0
  497. package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +22 -0
  498. package/src/admin/ui/src/routes/earn.vaults_.new.tsx +10 -0
  499. package/src/admin/ui/src/routes/organizations.tsx +1 -0
  500. package/src/admin/ui/src/routes/organizations_.$orgId.tsx +18 -3
  501. package/src/admin/ui/src/routes/route-policies.tsx +678 -0
  502. package/src/admin/ui/src/routes/routes.tsx +85 -2
  503. package/src/admin/ui/src/routes/routes_.support.tsx +6 -22
  504. package/src/admin/ui/src/routes/subsidies.tsx +1 -0
  505. package/src/admin/ui/src/routes/verified-tokens.tsx +1 -0
  506. package/src/admin/ui.generated.ts +258 -202
  507. package/src/analytics/Analytics.test.ts +4 -50
  508. package/src/analytics/Analytics.ts +65 -1
  509. package/src/analytics/tables/requestEvents.test.ts +402 -1
  510. package/src/analytics/tables/requestEvents.ts +62 -93
  511. package/src/apps/data/routes/activities.test.ts +315 -14
  512. package/src/apps/data/routes/activities.ts +60 -0
  513. package/src/apps/data/routes/balances.ts +5 -7
  514. package/src/apps/data/routes/earn.bench.ts +18 -0
  515. package/src/apps/data/routes/earn.local.test.ts +507 -0
  516. package/src/apps/data/routes/earn.test.ts +405 -127
  517. package/src/apps/data/routes/earn.ts +660 -270
  518. package/src/apps/data/routes/exchanges.bench.ts +3 -1
  519. package/src/apps/data/routes/exchanges.test.ts +166 -2
  520. package/src/apps/data/routes/exchanges.ts +308 -101
  521. package/src/apps/data/routes/fee-amm.test.ts +134 -2
  522. package/src/apps/data/routes/fee-amm.ts +122 -60
  523. package/src/apps/data/routes/receipts.test.ts +21 -18
  524. package/src/apps/data/routes/rpc.test.ts +2 -2
  525. package/src/apps/data/routes/tokens.provenance.test.ts +157 -0
  526. package/src/apps/data/routes/tokens.test.ts +4 -4
  527. package/src/apps/data/routes/tokens.ts +11 -6
  528. package/src/apps/data/routes/transactions.test.ts +29 -0
  529. package/src/apps/data/routes/transactions.ts +33 -22
  530. package/src/apps/data/routes/webhooks.test.ts +12 -3
  531. package/src/apps/data/routes/webhooks.ts +2 -1
  532. package/src/apps/management/App.ts +4 -0
  533. package/src/apps/management/Billing.test.ts +253 -27
  534. package/src/apps/management/Billing.ts +83 -29
  535. package/src/apps/management/routes/api-keys.test.ts +1 -1
  536. package/src/apps/management/routes/api-keys.ts +85 -11
  537. package/src/apps/management/routes/billing.test.ts +68 -4
  538. package/src/apps/management/routes/cli.test.ts +370 -0
  539. package/src/apps/management/routes/cli.ts +533 -0
  540. package/src/apps/management/routes/me.test.ts +14 -4
  541. package/src/apps/management/routes/orgs.test.ts +108 -4
  542. package/src/apps/management/routes/orgs.ts +7 -2
  543. package/src/apps/management/routes/usage.test.ts +2 -2
  544. package/src/apps/mpp/internal/Policy.test.ts +51 -4
  545. package/src/apps/mpp/internal/Policy.ts +6 -2
  546. package/src/apps/mpp/internal/Sponsorship.test.ts +29 -0
  547. package/src/apps/mpp/internal/Sponsorship.ts +6 -4
  548. package/src/apps/relay/App.test.ts +85 -1
  549. package/src/apps/relay/App.ts +28 -4
  550. package/src/apps/relay/Sponsorships.test.ts +97 -1
  551. package/src/apps/relay/Sponsorships.ts +77 -66
  552. package/src/apps/routes/Access.test.ts +319 -0
  553. package/src/apps/routes/Access.ts +147 -0
  554. package/src/apps/routes/App.ts +10 -0
  555. package/src/apps/routes/routes/chains.test.ts +3 -2
  556. package/src/apps/routes/routes/deposit-addresses.test.ts +978 -34
  557. package/src/apps/routes/routes/deposit-addresses.ts +243 -32
  558. package/src/apps/routes/routes/propAmm.local.test.ts +951 -0
  559. package/src/apps/routes/routes/quotes.test.ts +81 -8
  560. package/src/apps/routes/routes/quotes.ts +109 -27
  561. package/src/apps/routes/routes/transfers.test.ts +252 -15
  562. package/src/apps/routes/routes/transfers.ts +212 -33
  563. package/src/cli/ApiKeys.test.ts +265 -0
  564. package/src/cli/ApiKeys.ts +189 -0
  565. package/src/cli/Cli.test.ts +188 -0
  566. package/src/cli/Cli.ts +280 -12
  567. package/src/cli/Credentials.test.ts +122 -0
  568. package/src/cli/Credentials.ts +144 -0
  569. package/src/cli/Spec.test.ts +133 -0
  570. package/src/cli/Spec.ts +132 -0
  571. package/src/cli/bin.test.ts +49 -0
  572. package/src/cli/bin.ts +5 -1
  573. package/src/cli/commands/auth.test.ts +138 -0
  574. package/src/cli/commands/auth.ts +254 -0
  575. package/src/cli/commands/keys.test.ts +68 -0
  576. package/src/cli/commands/keys.ts +125 -0
  577. package/src/cloudflare.ts +184 -36
  578. package/src/db/Db.test.ts +877 -0
  579. package/src/db/Db.ts +498 -1
  580. package/src/db/Schema.ts +75 -4
  581. package/src/db/tables/apiKeyAdmissions.test.ts +57 -0
  582. package/src/db/tables/apiKeyAdmissions.ts +101 -11
  583. package/src/db/tables/apiKeyOwnerTombstones.ts +2 -2
  584. package/src/db/tables/authAccounts.test.ts +30 -0
  585. package/src/db/tables/authAccounts.ts +1 -0
  586. package/src/db/tables/earnVaults.test.ts +34 -0
  587. package/src/db/tables/earnVaults.ts +17 -2
  588. package/src/db/tables/organizations.test.ts +148 -84
  589. package/src/db/tables/organizations.ts +11 -43
  590. package/src/db/tables/requestUsage.ts +13 -2
  591. package/src/db/tables/rewardCampaigns.test.ts +163 -0
  592. package/src/db/tables/rewardEligibilityAssociations.test.ts +14 -0
  593. package/src/db/tables/rewardEligibilityAssociations.ts +24 -0
  594. package/src/db/tables/rewardRuns.ts +4 -0
  595. package/src/db/tables/rewardTransactionAttempts.ts +2 -0
  596. package/src/db/tables/routesDepositAddresses.test.ts +263 -0
  597. package/src/db/tables/routesDepositAddresses.ts +118 -34
  598. package/src/db/tables/routesDeposits.test.ts +66 -5
  599. package/src/db/tables/routesDeposits.ts +47 -26
  600. package/src/db/tables/routesIdempotency.test.ts +80 -0
  601. package/src/db/tables/routesIdempotency.ts +2 -0
  602. package/src/db/tables/routesPolicies.test.ts +143 -0
  603. package/src/db/tables/routesPolicies.ts +251 -0
  604. package/src/db/tables/routesTransferSubsidies.ts +64 -0
  605. package/src/db/tables/routesTransferSubsidyNonces.ts +16 -4
  606. package/src/db/tables/routesTransfers.test.ts +183 -2
  607. package/src/db/tables/routesTransfers.ts +65 -6
  608. package/src/db/tables/sponsoredTransactions.test.ts +351 -76
  609. package/src/db/tables/sponsoredTransactions.ts +182 -38
  610. package/src/db/tables/users.test.ts +51 -0
  611. package/src/db/tables/users.ts +12 -0
  612. package/src/handlers/internal/multisig.store.test.ts +120 -0
  613. package/src/handlers/internal/multisig.test.ts +389 -0
  614. package/src/handlers/internal/multisig.ts +13 -10
  615. package/src/handlers/relay.test.ts +259 -83
  616. package/src/handlers/relay.ts +36 -17
  617. package/src/internal/Auth.test.ts +291 -8
  618. package/src/internal/Auth.ts +227 -96
  619. package/src/internal/BetterAuth.test.ts +58 -22
  620. package/src/internal/BetterAuth.ts +23 -17
  621. package/src/internal/Cache.ts +3 -1
  622. package/src/internal/CliAuth.test.ts +279 -0
  623. package/src/internal/CliAuth.ts +319 -0
  624. package/src/internal/EarnSharePrices.test.ts +25 -0
  625. package/src/internal/EarnSharePrices.ts +9 -2
  626. package/src/internal/EarnVaults.test.ts +67 -0
  627. package/src/internal/EarnVaults.ts +299 -4
  628. package/src/internal/EarnWithdrawals.test.ts +315 -0
  629. package/src/internal/EarnWithdrawals.ts +266 -0
  630. package/src/internal/ExecutionContext.ts +31 -0
  631. package/src/internal/Log.test.ts +210 -0
  632. package/src/internal/Log.ts +180 -142
  633. package/src/internal/MetricSink.test.ts +190 -15
  634. package/src/internal/MetricSink.ts +27 -1
  635. package/src/internal/RateLimit.test.ts +144 -8
  636. package/src/internal/RateLimit.ts +254 -26
  637. package/src/internal/Store.ts +4 -5
  638. package/src/internal/Timing.test.ts +32 -0
  639. package/src/internal/Timing.ts +20 -1
  640. package/src/internal/Tron.test-d.ts +22 -0
  641. package/src/internal/Tron.test.ts +94 -0
  642. package/src/internal/Tron.ts +289 -0
  643. package/src/internal/Viem.rpc.test.ts +76 -0
  644. package/src/internal/Viem.ts +29 -6
  645. package/src/internal/rewards/Read.test.ts +109 -0
  646. package/src/internal/rewards/Read.ts +13 -4
  647. package/src/internal/routes/Action.test.ts +70 -0
  648. package/src/internal/routes/Action.ts +76 -1
  649. package/src/internal/routes/Chain.test.ts +18 -0
  650. package/src/internal/routes/Chain.ts +5 -0
  651. package/src/internal/routes/DepositAddress.ts +5 -0
  652. package/src/internal/routes/Evidence.test.ts +64 -0
  653. package/src/internal/routes/Evidence.ts +11 -3
  654. package/src/internal/routes/EvmTransferSettlement.ts +213 -0
  655. package/src/internal/routes/Policy.test.ts +316 -0
  656. package/src/internal/routes/Policy.ts +399 -0
  657. package/src/internal/routes/Provider.test.ts +103 -2
  658. package/src/internal/routes/Provider.ts +149 -27
  659. package/src/internal/routes/Quota.test.ts +149 -0
  660. package/src/internal/routes/Quota.ts +226 -0
  661. package/src/internal/routes/Reconciliation.local.test.ts +285 -0
  662. package/src/internal/routes/Reconciliation.test.ts +371 -13
  663. package/src/internal/routes/Reconciliation.ts +193 -42
  664. package/src/internal/routes/SolanaTransferSettlement.ts +232 -0
  665. package/src/internal/routes/SolanaTransferSubsidy.test.ts +471 -0
  666. package/src/internal/routes/SolanaTransferSubsidy.ts +760 -0
  667. package/src/internal/routes/SourceObservation.test.ts +221 -0
  668. package/src/internal/routes/Subsidy.local.test.ts +46 -0
  669. package/src/internal/routes/Subsidy.ts +4 -2
  670. package/src/internal/routes/Transfer.solana.test.ts +389 -0
  671. package/src/internal/routes/Transfer.test.ts +130 -1
  672. package/src/internal/routes/Transfer.tron.test.ts +172 -0
  673. package/src/internal/routes/Transfer.ts +866 -8
  674. package/src/internal/routes/TransferReconciliation.test.ts +26 -4
  675. package/src/internal/routes/TransferReconciliation.ts +91 -166
  676. package/src/internal/routes/TransferSettlement.ts +48 -0
  677. package/src/internal/routes/TransferSubsidy.local.test.ts +143 -0
  678. package/src/internal/routes/TransferSubsidy.test.ts +34 -4
  679. package/src/internal/routes/TransferSubsidy.ts +87 -12
  680. package/src/internal/routes/TronTransferSettlement.ts +212 -0
  681. package/src/internal/routes/TronTransferSubsidy.test.ts +109 -0
  682. package/src/internal/routes/TronTransferSubsidy.ts +619 -0
  683. package/src/internal/routes/index.test.ts +3 -0
  684. package/src/internal/routes/index.ts +3 -0
  685. package/src/internal/routes/providers/across.ts +13 -0
  686. package/src/internal/routes/providers/index.test.ts +141 -0
  687. package/src/internal/routes/providers/legacyMesh.test.ts +484 -0
  688. package/src/internal/routes/providers/legacyMesh.ts +633 -0
  689. package/src/internal/routes/providers/legacyMeshDelivery.test.ts +306 -0
  690. package/src/internal/routes/providers/legacyMeshDelivery.ts +320 -0
  691. package/src/internal/routes/providers/legacyMeshOutbound.test.ts +401 -0
  692. package/src/internal/routes/providers/legacyMeshOutbound.ts +566 -0
  693. package/src/internal/routes/providers/legacyMeshOutboundDelivery.ts +473 -0
  694. package/src/internal/routes/providers/propAmm.ts +640 -0
  695. package/src/internal/routes/providers/relay.test.ts +1263 -41
  696. package/src/internal/routes/providers/relay.ts +423 -38
  697. package/src/internal/routes/providers/rhino.ts +14 -1
  698. package/src/internal/routes/providers/squid.ts +21 -0
  699. package/src/internal/routes/providers/stargate.test.ts +105 -1
  700. package/src/internal/routes/providers/stargate.ts +22 -9
  701. package/src/internal/routes/providers/symbiosis.ts +13 -47
  702. package/src/providers/index.test.ts +2 -0
  703. package/src/providers/index.ts +18 -0
  704. package/dist/admin/Access.d.ts +0 -39
  705. package/dist/admin/Access.d.ts.map +0 -1
  706. package/dist/admin/Access.js +0 -73
  707. package/dist/admin/Access.js.map +0 -1
  708. package/src/admin/Access.test.ts +0 -130
  709. package/src/admin/Access.ts +0 -85
package/dist/db/Db.js CHANGED
@@ -1,5 +1,26 @@
1
1
  import { CamelCasePlugin, CompiledQuery, Kysely, PostgresDialect, sql, WithSchemaPlugin, } from 'kysely';
2
2
  import * as pg from 'pg';
3
+ /** Per-execution observers, keyed by Kysely's query id so the driver can find them. */
4
+ const queryObservers = new WeakMap();
5
+ /**
6
+ * Wraps a database so every query reports its wall-clock duration at the
7
+ * driver: acquisition of its connection plus execution, whether it succeeds or
8
+ * rejects. A rejected acquisition has no query to charge and goes unreported.
9
+ */
10
+ export function observe(db, options) {
11
+ // The plugin only tags executions; the driver wrapper installed by
12
+ // `fromDialect` does the timing, so rejected queries report too.
13
+ const plugin = {
14
+ transformQuery(args) {
15
+ queryObservers.set(args.queryId, options.onQuery);
16
+ return args.node;
17
+ },
18
+ async transformResult(args) {
19
+ return args.result;
20
+ },
21
+ };
22
+ return { ...db, kysely: db.kysely.withPlugin(plugin) };
23
+ }
3
24
  /**
4
25
  * Resolves a {@link Source} to a {@link Db}. Call at the request leaf so
5
26
  * factories create per-request instances; singletons resolve to themselves.
@@ -2208,6 +2229,331 @@ export const migrations = [
2208
2229
  name: '0270_routes_deposits_legacy_provider_subsidies_reported',
2209
2230
  up: (db) => raw(db, sql `UPDATE routes_deposits SET subsidy_meter_reported_at = coalesce(status_updated_at, updated_at) WHERE environment = 'production' AND subsidy_meter_reported_at IS NULL AND (provider_subsidy->'amount'->>'baseUnits')::numeric > 0 AND (status = 'completed' OR (status IN ('action-required', 'settling') AND tempo_gas_paid IS NOT NULL)) AND coalesce(status_updated_at, updated_at) < '2026-09-03T06:10:21.000Z'`),
2210
2231
  },
2232
+ {
2233
+ name: '0280_routes_policies',
2234
+ up: (db) => raw(db, sql `DO $$ BEGIN
2235
+ CREATE TABLE IF NOT EXISTS routes_policies (org_id text NOT NULL REFERENCES organizations(id) ON DELETE CASCADE, environment text NOT NULL CHECK (environment IN ('production', 'sandbox')), project_id text NOT NULL DEFAULT '', api_key_id text NOT NULL DEFAULT '', version integer NOT NULL CHECK (version > 0), policy jsonb NOT NULL, created_at text NOT NULL, updated_at text NOT NULL, PRIMARY KEY (org_id, environment, project_id, api_key_id));
2236
+ ALTER TABLE api_key_admissions ADD COLUMN IF NOT EXISTS pending_scopes jsonb;
2237
+ END $$`),
2238
+ },
2239
+ {
2240
+ name: '0270_earn_vault_earnings',
2241
+ up: (db) => raw(db, sql `ALTER TABLE earn_vaults ADD COLUMN IF NOT EXISTS earnings jsonb`),
2242
+ },
2243
+ {
2244
+ // All workers must understand pinned commitments before this index permits multiple terms for the same wallets.
2245
+ name: '0281_routes_deposit_address_policy_identity',
2246
+ up: (db) => raw(db, sql `DO $$ BEGIN
2247
+ CREATE UNIQUE INDEX IF NOT EXISTS routes_deposit_addresses_policy_identity_idx ON routes_deposit_addresses (org_id, environment, project_id, source_chain_id, source_token_key, destination_token_key, recipient, refund_address, subsidize, (coalesce(provider_state->>'routePolicyKey', ''))) NULLS NOT DISTINCT;
2248
+ DROP INDEX IF EXISTS routes_deposit_addresses_identity_idx;
2249
+ END $$`),
2250
+ },
2251
+ {
2252
+ // The funding-to-routes rename left existing subscriptions with event types rejected by response validation.
2253
+ name: '0282_webhook_subscription_routes_event_types',
2254
+ up: (db) => raw(db, sql `UPDATE webhook_subscriptions SET event_type = CASE event_type WHEN 'funding:deposit.updated' THEN 'routes:deposit.updated' WHEN 'funding:transfer.updated' THEN 'routes:transfer.updated' END WHERE event_type IN ('funding:deposit.updated', 'funding:transfer.updated')`),
2255
+ },
2256
+ {
2257
+ name: '0283_sponsored_transactions_drop_hashless_recovery_index',
2258
+ up: (db) => raw(db, sql `DROP INDEX IF EXISTS sponsored_transactions_recovery_idx`),
2259
+ },
2260
+ {
2261
+ name: '0284_sponsored_transactions_failed_recovery_index',
2262
+ up: (db) => raw(db, sql `CREATE INDEX IF NOT EXISTS sponsored_transactions_recovery_idx ON sponsored_transactions (finalized_at, chain_id, created_at) WHERE status = 'failed'`),
2263
+ },
2264
+ {
2265
+ name: '0285_sponsored_transactions_reconciled_hash',
2266
+ up: (db) => raw(db, sql `ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS transaction_hash_reconciled boolean NOT NULL DEFAULT false`),
2267
+ },
2268
+ {
2269
+ name: '0286_request_usage_event_timestamp',
2270
+ up: (db) => raw(db, sql `ALTER TABLE request_usage_meter_events ADD COLUMN IF NOT EXISTS event_timestamp text`),
2271
+ },
2272
+ {
2273
+ name: '0287_users_terms_shared_at',
2274
+ up: (db) => raw(db, sql `ALTER TABLE users ADD COLUMN IF NOT EXISTS terms_shared_at text`),
2275
+ },
2276
+ {
2277
+ name: '0288_sponsored_transactions_meter_attempt',
2278
+ up: (db) => raw(db, sql `ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS meter_report_attempted_at text`), // prettier-ignore
2279
+ },
2280
+ {
2281
+ name: '0289_sponsored_transactions_meter_attempt_index',
2282
+ up: (db) => raw(db, sql `CREATE INDEX IF NOT EXISTS sponsored_transactions_meter_attempt_idx ON sponsored_transactions (meter_report_attempted_at ASC NULLS FIRST, finalized_at, id) WHERE billable AND status = 'finalized' AND meter_reported_at IS NULL`), // prettier-ignore
2283
+ },
2284
+ {
2285
+ name: '0290_sponsored_transactions_first_meter_event_attempt',
2286
+ up: (db) => raw(db, sql `ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS meter_event_first_attempted_at text`), // prettier-ignore
2287
+ },
2288
+ {
2289
+ name: '0291_sponsored_transactions_meter_retry_index',
2290
+ up: (db) => raw(db, sql `CREATE INDEX IF NOT EXISTS sponsored_transactions_meter_retry_idx ON sponsored_transactions (meter_report_attempted_at, finalized_at, id) WHERE billable AND status = 'finalized' AND meter_reported_at IS NULL AND meter_event_first_attempted_at IS NOT NULL`), // prettier-ignore
2291
+ },
2292
+ {
2293
+ name: '0292_routes_transfer_subsidies_tron_addresses',
2294
+ up: (db) => raw(db, sql `CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
2295
+ LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
2296
+ DECLARE
2297
+ settlement routes_transfer_subsidies%ROWTYPE;
2298
+ source_chain text;
2299
+ source_ref text;
2300
+ recipient text;
2301
+ token_address text;
2302
+ BEGIN
2303
+ IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
2304
+ RETURN NEW;
2305
+ END IF;
2306
+ source_chain := NEW.snapshot->'sourceChain'->>'id';
2307
+ source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
2308
+ IF source_ref IS NULL THEN
2309
+ RAISE EXCEPTION 'Subsidy source evidence is missing';
2310
+ END IF;
2311
+ recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'tron:%'
2312
+ THEN NEW.snapshot->>'recipient' ELSE lower(NEW.snapshot->>'recipient') END;
2313
+ token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'tron:%'
2314
+ THEN NEW.subsidy_token_address ELSE lower(NEW.subsidy_token_address) END;
2315
+ INSERT INTO routes_transfer_subsidies (
2316
+ source_chain_id, transaction_ref, destination_chain_id, recipient,
2317
+ token_address, transaction, transfer_id, created_at
2318
+ ) VALUES (
2319
+ source_chain, source_ref, NEW.subsidy_chain_id, recipient,
2320
+ token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
2321
+ ) ON CONFLICT DO NOTHING;
2322
+ SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
2323
+ WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
2324
+ IF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy'
2325
+ OR settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
2326
+ OR settlement.recipient IS DISTINCT FROM recipient
2327
+ OR settlement.token_address IS DISTINCT FROM token_address THEN
2328
+ RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
2329
+ END IF;
2330
+ IF settlement.transfer_id <> NEW.id THEN
2331
+ NEW.subsidy_amount := NULL;
2332
+ NEW.subsidy_commitment_amount := NULL;
2333
+ NEW.subsidy_native_amount := NULL;
2334
+ END IF;
2335
+ RETURN NEW;
2336
+ END $capture$`),
2337
+ },
2338
+ {
2339
+ name: '0293_routes_transfer_subsidies_case_sensitive_addresses',
2340
+ up: (db) => raw(db, sql `CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
2341
+ LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
2342
+ DECLARE
2343
+ settlement routes_transfer_subsidies%ROWTYPE;
2344
+ source_chain text;
2345
+ source_ref text;
2346
+ recipient text;
2347
+ token_address text;
2348
+ BEGIN
2349
+ IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
2350
+ RETURN NEW;
2351
+ END IF;
2352
+ source_chain := NEW.snapshot->'sourceChain'->>'id';
2353
+ source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
2354
+ IF source_ref IS NULL THEN
2355
+ RAISE EXCEPTION 'Subsidy source evidence is missing';
2356
+ END IF;
2357
+ recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
2358
+ THEN lower(NEW.snapshot->>'recipient') ELSE NEW.snapshot->>'recipient' END;
2359
+ token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
2360
+ THEN lower(NEW.subsidy_token_address) ELSE NEW.subsidy_token_address END;
2361
+ INSERT INTO routes_transfer_subsidies (
2362
+ source_chain_id, transaction_ref, destination_chain_id, recipient,
2363
+ token_address, transaction, transfer_id, created_at
2364
+ ) VALUES (
2365
+ source_chain, source_ref, NEW.subsidy_chain_id, recipient,
2366
+ token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
2367
+ ) ON CONFLICT DO NOTHING;
2368
+ SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
2369
+ WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
2370
+ IF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy'
2371
+ OR settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
2372
+ OR settlement.recipient IS DISTINCT FROM recipient
2373
+ OR settlement.token_address IS DISTINCT FROM token_address THEN
2374
+ RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
2375
+ END IF;
2376
+ IF settlement.transfer_id <> NEW.id THEN
2377
+ NEW.subsidy_amount := NULL;
2378
+ NEW.subsidy_commitment_amount := NULL;
2379
+ NEW.subsidy_native_amount := NULL;
2380
+ END IF;
2381
+ RETURN NEW;
2382
+ END $capture$`),
2383
+ },
2384
+ {
2385
+ name: '0294_routes_transfer_subsidies_status',
2386
+ up: (db) => raw(db, sql `ALTER TABLE routes_transfer_subsidies ADD COLUMN IF NOT EXISTS status text NOT NULL DEFAULT 'active'`),
2387
+ },
2388
+ {
2389
+ name: '0295_routes_transfer_subsidies_status_check',
2390
+ up: (db) => raw(db, sql `DO $$ BEGIN
2391
+ IF NOT EXISTS (
2392
+ SELECT 1 FROM pg_constraint WHERE conname = 'routes_transfer_subsidies_status_check'
2393
+ ) THEN
2394
+ ALTER TABLE routes_transfer_subsidies
2395
+ ADD CONSTRAINT routes_transfer_subsidies_status_check
2396
+ CHECK (status IN ('active', 'expired'));
2397
+ END IF;
2398
+ END $$`),
2399
+ },
2400
+ {
2401
+ name: '0296_routes_transfer_subsidy_expired_attempts',
2402
+ up: (db) => db.schema
2403
+ .createTable('routesTransferSubsidyExpiredAttempts')
2404
+ .ifNotExists()
2405
+ .addColumn('createdAt', 'text', (c) => c.notNull())
2406
+ .addColumn('expiredAt', 'text', (c) => c.notNull())
2407
+ .addColumn('sourceChainId', 'text', (c) => c.notNull())
2408
+ .addColumn('transaction', 'jsonb', (c) => c.notNull())
2409
+ .addColumn('transactionHash', 'text', (c) => c.notNull())
2410
+ .addColumn('transactionRef', 'text', (c) => c.notNull())
2411
+ .addColumn('transferId', 'text', (c) => c.notNull())
2412
+ .addPrimaryKeyConstraint('routes_transfer_subsidy_expired_attempts_pkey', [
2413
+ 'sourceChainId',
2414
+ 'transactionRef',
2415
+ 'transactionHash',
2416
+ ]),
2417
+ },
2418
+ {
2419
+ name: '0297_routes_transfer_subsidy_expiry_capture',
2420
+ up: (db) => raw(db, sql `CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
2421
+ LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
2422
+ DECLARE
2423
+ settlement routes_transfer_subsidies%ROWTYPE;
2424
+ source_chain text;
2425
+ source_ref text;
2426
+ recipient text;
2427
+ token_address text;
2428
+ expired_signed jsonb;
2429
+ replacement_signed jsonb;
2430
+ BEGIN
2431
+ IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
2432
+ RETURN NEW;
2433
+ END IF;
2434
+ source_chain := NEW.snapshot->'sourceChain'->>'id';
2435
+ source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
2436
+ IF source_ref IS NULL THEN
2437
+ RAISE EXCEPTION 'Subsidy source evidence is missing';
2438
+ END IF;
2439
+ recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
2440
+ THEN lower(NEW.snapshot->>'recipient') ELSE NEW.snapshot->>'recipient' END;
2441
+ token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
2442
+ THEN lower(NEW.subsidy_token_address) ELSE NEW.subsidy_token_address END;
2443
+ INSERT INTO routes_transfer_subsidies (
2444
+ source_chain_id, transaction_ref, destination_chain_id, recipient,
2445
+ token_address, transaction, transfer_id, created_at
2446
+ ) VALUES (
2447
+ source_chain, source_ref, NEW.subsidy_chain_id, recipient,
2448
+ token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
2449
+ ) ON CONFLICT DO NOTHING;
2450
+ SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
2451
+ WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
2452
+ IF settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
2453
+ OR settlement.recipient IS DISTINCT FROM recipient
2454
+ OR settlement.token_address IS DISTINCT FROM token_address THEN
2455
+ RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
2456
+ END IF;
2457
+ IF settlement.status = 'expired'
2458
+ AND settlement.destination_chain_id LIKE 'solana:%'
2459
+ AND settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy' THEN
2460
+ IF settlement.transfer_id IS DISTINCT FROM NEW.id THEN
2461
+ RAISE EXCEPTION 'Only the subsidy owner may replace an expired settlement';
2462
+ END IF;
2463
+ expired_signed := (settlement.transaction #>> '{}')::jsonb;
2464
+ replacement_signed := (NEW.provider_state->>'transferSubsidy')::jsonb;
2465
+ IF expired_signed->>'account' IS DISTINCT FROM replacement_signed->>'account'
2466
+ OR expired_signed->>'amount' IS DISTINCT FROM replacement_signed->>'amount'
2467
+ OR expired_signed->>'chainId' IS DISTINCT FROM replacement_signed->>'chainId'
2468
+ OR replacement_signed->>'hash' IS DISTINCT FROM NEW.subsidy_transaction_hash THEN
2469
+ RAISE EXCEPTION 'Expired subsidy replacement changed settlement terms';
2470
+ END IF;
2471
+ UPDATE routes_transfer_subsidies SET
2472
+ transaction = NEW.provider_state->'transferSubsidy',
2473
+ created_at = NEW.updated_at,
2474
+ status = 'active'
2475
+ WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
2476
+ ELSIF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy' THEN
2477
+ RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
2478
+ END IF;
2479
+ IF settlement.transfer_id <> NEW.id THEN
2480
+ NEW.subsidy_amount := NULL;
2481
+ NEW.subsidy_commitment_amount := NULL;
2482
+ NEW.subsidy_native_amount := NULL;
2483
+ END IF;
2484
+ RETURN NEW;
2485
+ END $capture$`),
2486
+ },
2487
+ {
2488
+ name: '0298_routes_transfer_subsidies_status_check_schema',
2489
+ up: (db) => raw(db, sql `DO $$ BEGIN
2490
+ IF NOT EXISTS (
2491
+ SELECT 1 FROM pg_constraint
2492
+ WHERE conname = 'routes_transfer_subsidies_status_check'
2493
+ AND conrelid = 'routes_transfer_subsidies'::regclass
2494
+ ) THEN
2495
+ ALTER TABLE routes_transfer_subsidies
2496
+ ADD CONSTRAINT routes_transfer_subsidies_status_check
2497
+ CHECK (status IN ('active', 'expired'));
2498
+ END IF;
2499
+ END $$`),
2500
+ },
2501
+ {
2502
+ name: '0299_verified_tokens_ousd',
2503
+ up: (db) => raw(db,
2504
+ // Matches the verified-token publisher's "vtok" lock for Tempo mainnet.
2505
+ sql `DO $migration$ BEGIN PERFORM pg_advisory_xact_lock(1987342187, 4217); WITH list AS (UPDATE verified_token_lists SET updated_at = CASE WHEN version LIKE '%_0299_ousd' THEN updated_at ELSE to_char(GREATEST(updated_at::timestamptz, clock_timestamp()) AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"') END, version = CASE WHEN version LIKE '%_0299_ousd' THEN version ELSE version || '_0299_ousd' END WHERE chain_id = 4217 RETURNING chain_id) INSERT INTO verified_tokens (address, chain_id, currency, decimals, logo_uri, name, position, symbol) SELECT '0x20c0000000000000000000006a37da5c996874be', list.chain_id, 'USD', 6, NULL, 'OpenUSD', COALESCE((SELECT max(position) + 1 FROM verified_tokens WHERE chain_id = list.chain_id), 0), 'OUSD' FROM list ON CONFLICT (chain_id, address) DO UPDATE SET currency = EXCLUDED.currency, decimals = EXCLUDED.decimals, logo_uri = EXCLUDED.logo_uri, name = EXCLUDED.name, symbol = EXCLUDED.symbol; END $migration$`),
2506
+ },
2507
+ {
2508
+ name: '0300_reward_runs_latest_delivered_index',
2509
+ // Serves latest-run lookups per vault and phase without sorting every run.
2510
+ up: (db) => raw(db, sql `CREATE INDEX IF NOT EXISTS reward_runs_latest_idx ON reward_runs (chain_id, vault_address, phase, ends_at DESC)`), // prettier-ignore
2511
+ },
2512
+ {
2513
+ name: '0301_verified_tokens_ousd_testnet',
2514
+ up: (db) => raw(db,
2515
+ // Matches the verified-token publisher's "vtok" lock for Tempo testnet.
2516
+ sql `DO $migration$ BEGIN PERFORM pg_advisory_xact_lock(1987342187, 42431); WITH list AS (UPDATE verified_token_lists SET updated_at = CASE WHEN version LIKE '%_0301_ousd' THEN updated_at ELSE to_char(GREATEST(updated_at::timestamptz, clock_timestamp()) AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"') END, version = CASE WHEN version LIKE '%_0301_ousd' THEN version ELSE version || '_0301_ousd' END WHERE chain_id = 42431 RETURNING chain_id) INSERT INTO verified_tokens (address, chain_id, currency, decimals, logo_uri, name, position, symbol) SELECT '0x20c0000000000000000000006a37da5c996874be', list.chain_id, 'USD', 6, NULL, 'OpenUSD', COALESCE((SELECT max(position) + 1 FROM verified_tokens WHERE chain_id = list.chain_id), 0), 'OUSD' FROM list ON CONFLICT (chain_id, address) DO UPDATE SET currency = EXCLUDED.currency, decimals = EXCLUDED.decimals, logo_uri = EXCLUDED.logo_uri, name = EXCLUDED.name, symbol = EXCLUDED.symbol; END $migration$`),
2517
+ },
2518
+ {
2519
+ name: '0302_extend_d730_reward_campaign',
2520
+ up: (db) => raw(db,
2521
+ // December 17, 2026 at noon EST. Preserve the delivered cursor so expired intervals accrue during catch-up.
2522
+ sql `DO $migration$
2523
+ DECLARE
2524
+ campaign reward_campaigns%ROWTYPE;
2525
+ replacement jsonb;
2526
+ capability text;
2527
+ BEGIN
2528
+ SELECT * INTO campaign FROM reward_campaigns
2529
+ WHERE chain_id = 4217 AND vault_address = '0xd730394f3bb85a4828e35fc5e361dcc9f894fa4f'
2530
+ FOR UPDATE;
2531
+ IF NOT FOUND THEN RETURN; END IF;
2532
+
2533
+ replacement := campaign.config;
2534
+ FOREACH capability IN ARRAY ARRAY['targetYield', 'boostRewards'] LOOP
2535
+ IF (replacement -> capability ->> 'endTimestamp')::bigint < 1797526800 THEN
2536
+ replacement := jsonb_set(replacement, ARRAY[capability, 'endTimestamp'], '1797526800'::jsonb);
2537
+ END IF;
2538
+ END LOOP;
2539
+ IF replacement = campaign.config THEN RETURN; END IF;
2540
+
2541
+ IF campaign.pending_config IS NOT NULL OR campaign.pending_effective_at IS NOT NULL THEN
2542
+ RAISE EXCEPTION 'Cannot extend d730 reward campaign: resolve the pending configuration before retrying migration';
2543
+ END IF;
2544
+ IF EXISTS (
2545
+ SELECT 1 FROM reward_runs
2546
+ WHERE chain_id = campaign.chain_id AND vault_address = campaign.vault_address
2547
+ AND (phase <> 'delivered' OR starts_after >= campaign.delivered_through)
2548
+ ) THEN
2549
+ RAISE EXCEPTION 'Cannot extend d730 reward campaign: finish outstanding reward runs before retrying migration';
2550
+ END IF;
2551
+
2552
+ UPDATE reward_campaigns SET config = replacement,
2553
+ updated_at = to_char(clock_timestamp() AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')
2554
+ WHERE chain_id = campaign.chain_id AND vault_address = campaign.vault_address;
2555
+ END $migration$`),
2556
+ },
2211
2557
  ];
2212
2558
  /**
2213
2559
  * Adapts a raw statement to the migration contract (argument-less
@@ -2229,9 +2575,75 @@ function raw(db, statement) {
2229
2575
  export function from(dialect) {
2230
2576
  return fromDialect(dialect);
2231
2577
  }
2578
+ /**
2579
+ * Times executions that {@link observe} tagged. Acquisition (pool checkout,
2580
+ * connect) is charged to the connection's next query so cold connects count.
2581
+ */
2582
+ function observeDriver(driver) {
2583
+ const inner = new WeakMap();
2584
+ const unwrap = (connection) => inner.get(connection) ?? connection;
2585
+ return {
2586
+ async acquireConnection() {
2587
+ const start = performance.now();
2588
+ const connection = await driver.acquireConnection();
2589
+ let pending = performance.now() - start;
2590
+ const wrapped = {
2591
+ async executeQuery(compiledQuery) {
2592
+ const onQuery = queryObservers.get(compiledQuery.queryId);
2593
+ if (!onQuery)
2594
+ return connection.executeQuery(compiledQuery);
2595
+ const acquired = pending;
2596
+ pending = 0;
2597
+ const started = performance.now();
2598
+ try {
2599
+ return await connection.executeQuery(compiledQuery);
2600
+ }
2601
+ finally {
2602
+ const query = performance.now() - started;
2603
+ onQuery(acquired + query, { acquire: acquired, query });
2604
+ }
2605
+ },
2606
+ streamQuery(compiledQuery, chunkSize) {
2607
+ return connection.streamQuery(compiledQuery, chunkSize);
2608
+ },
2609
+ };
2610
+ inner.set(wrapped, connection);
2611
+ return wrapped;
2612
+ },
2613
+ beginTransaction: (connection, settings) => driver.beginTransaction(unwrap(connection), settings),
2614
+ commitTransaction: (connection) => driver.commitTransaction(unwrap(connection)),
2615
+ destroy: () => driver.destroy(),
2616
+ init: () => driver.init(),
2617
+ releaseConnection: (connection) => driver.releaseConnection(unwrap(connection)),
2618
+ rollbackTransaction: (connection) => driver.rollbackTransaction(unwrap(connection)),
2619
+ ...(driver.releaseSavepoint
2620
+ ? {
2621
+ releaseSavepoint: (connection, name, compile) => driver.releaseSavepoint(unwrap(connection), name, compile),
2622
+ }
2623
+ : {}),
2624
+ ...(driver.rollbackToSavepoint
2625
+ ? {
2626
+ rollbackToSavepoint: (connection, name, compile) => driver.rollbackToSavepoint(unwrap(connection), name, compile),
2627
+ }
2628
+ : {}),
2629
+ ...(driver.savepoint
2630
+ ? {
2631
+ savepoint: (connection, name, compile) => driver.savepoint(unwrap(connection), name, compile),
2632
+ }
2633
+ : {}),
2634
+ };
2635
+ }
2232
2636
  /** Builds a database with internal dialect-specific options. */
2233
2637
  function fromDialect(dialect, options = {}) {
2234
- const root = new Kysely({ dialect, plugins: [new CamelCasePlugin()] });
2638
+ // Delegate method by method: the dialect is a class instance, so a spread
2639
+ // would drop its prototype methods.
2640
+ const observed = {
2641
+ createAdapter: () => dialect.createAdapter(),
2642
+ createDriver: () => observeDriver(dialect.createDriver()),
2643
+ createIntrospector: (db) => dialect.createIntrospector(db),
2644
+ createQueryCompiler: () => dialect.createQueryCompiler(),
2645
+ };
2646
+ const root = new Kysely({ dialect: observed, plugins: [new CamelCasePlugin()] });
2235
2647
  // Qualify repository queries instead of relying on session search_path;
2236
2648
  // transaction poolers reset session state between statements.
2237
2649
  const kysely = options.schema ? root.withPlugin(new WithSchemaPlugin(options.schema)) : root;