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.
- package/README.md +137 -0
- package/dist/ApiKey.d.ts +1 -0
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +4 -2
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +37 -11
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +163 -10
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +13085 -11974
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +46 -15
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +1 -1
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +1 -1
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +893 -191
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +5 -1
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +70 -70
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +8 -3
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +66 -27
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +36 -7
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +25 -25
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +5 -4
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/route-policies.d.ts +632 -0
- package/dist/admin/apps/route-policies.d.ts.map +1 -0
- package/dist/admin/apps/route-policies.js +257 -0
- package/dist/admin/apps/route-policies.js.map +1 -0
- package/dist/admin/apps/routes-support.js +39 -3
- package/dist/admin/apps/routes-support.js.map +1 -1
- package/dist/admin/apps/routes.d.ts +529 -76
- package/dist/admin/apps/routes.d.ts.map +1 -1
- package/dist/admin/apps/routes.js +82 -1
- package/dist/admin/apps/routes.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +157 -157
- package/dist/admin/index.d.ts +0 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +0 -1
- package/dist/admin/index.js.map +1 -1
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.d.ts.map +1 -1
- package/dist/admin/ui.generated.js +205 -201
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +65 -1
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +1 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +58 -59
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts +2709 -2670
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +357 -357
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +50 -0
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +248 -248
- package/dist/apps/data/routes/balances.d.ts +22 -22
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +5 -7
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +125 -125
- package/dist/apps/data/routes/coingecko.d.ts +54 -54
- package/dist/apps/data/routes/earn.d.ts +103 -12
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +456 -220
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +267 -97
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +109 -127
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +83 -54
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +43 -43
- package/dist/apps/data/routes/receipts.d.ts +235 -235
- package/dist/apps/data/routes/rpc.d.ts +30 -30
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +11 -6
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +2 -0
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +30 -22
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +77 -77
- package/dist/apps/data/routes/valuation.d.ts +32 -32
- package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +1 -1
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +31 -31
- package/dist/apps/management/App.d.ts +2909 -2064
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +2 -0
- package/dist/apps/management/App.js.map +1 -1
- package/dist/apps/management/Billing.d.ts +2 -4
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +65 -26
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +257 -245
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +70 -11
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +84 -84
- package/dist/apps/management/routes/cli.d.ts +912 -0
- package/dist/apps/management/routes/cli.d.ts.map +1 -0
- package/dist/apps/management/routes/cli.js +416 -0
- package/dist/apps/management/routes/cli.js.map +1 -0
- package/dist/apps/management/routes/faucet.d.ts +8 -8
- package/dist/apps/management/routes/invitations.d.ts +138 -138
- package/dist/apps/management/routes/invite-links.d.ts +172 -172
- package/dist/apps/management/routes/members.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts +104 -104
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +8 -2
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +125 -125
- package/dist/apps/management/routes/usage.d.ts +8 -8
- package/dist/apps/management/routes/verified-token-requests.d.ts +86 -86
- package/dist/apps/management/routes/webhooks.d.ts +485 -485
- package/dist/apps/mpp/App.d.ts +44 -44
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Policy.js +4 -2
- package/dist/apps/mpp/internal/Policy.js.map +1 -1
- package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Sponsorship.js +6 -4
- package/dist/apps/mpp/internal/Sponsorship.js.map +1 -1
- package/dist/apps/relay/App.d.ts +8 -0
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +16 -4
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts +4 -6
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +71 -60
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/apps/routes/Access.d.ts +53 -0
- package/dist/apps/routes/Access.d.ts.map +1 -1
- package/dist/apps/routes/Access.js +121 -0
- package/dist/apps/routes/Access.js.map +1 -1
- package/dist/apps/routes/App.d.ts +397 -158
- package/dist/apps/routes/App.d.ts.map +1 -1
- package/dist/apps/routes/App.js.map +1 -1
- package/dist/apps/routes/routes/chains.d.ts +25 -25
- package/dist/apps/routes/routes/deposit-addresses.d.ts +169 -61
- package/dist/apps/routes/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/routes/routes/deposit-addresses.js +217 -32
- package/dist/apps/routes/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/routes/routes/quotes.d.ts +171 -81
- package/dist/apps/routes/routes/quotes.d.ts.map +1 -1
- package/dist/apps/routes/routes/quotes.js +101 -27
- package/dist/apps/routes/routes/quotes.js.map +1 -1
- package/dist/apps/routes/routes/transfers.d.ts +532 -480
- package/dist/apps/routes/routes/transfers.d.ts.map +1 -1
- package/dist/apps/routes/routes/transfers.js +182 -37
- package/dist/apps/routes/routes/transfers.js.map +1 -1
- package/dist/cli/ApiKeys.d.ts +120 -0
- package/dist/cli/ApiKeys.d.ts.map +1 -0
- package/dist/cli/ApiKeys.js +138 -0
- package/dist/cli/ApiKeys.js.map +1 -0
- package/dist/cli/Cli.d.ts +92 -34
- package/dist/cli/Cli.d.ts.map +1 -1
- package/dist/cli/Cli.js +188 -11
- package/dist/cli/Cli.js.map +1 -1
- package/dist/cli/Credentials.d.ts +95 -0
- package/dist/cli/Credentials.d.ts.map +1 -0
- package/dist/cli/Credentials.js +110 -0
- package/dist/cli/Credentials.js.map +1 -0
- package/dist/cli/Spec.d.ts +59 -0
- package/dist/cli/Spec.d.ts.map +1 -0
- package/dist/cli/Spec.js +77 -0
- package/dist/cli/Spec.js.map +1 -0
- package/dist/cli/bin.js +5 -1
- package/dist/cli/bin.js.map +1 -1
- package/dist/cli/commands/admin.d.ts +5 -5
- package/dist/cli/commands/admin.d.ts.map +1 -1
- package/dist/cli/commands/auth.d.ts +73 -0
- package/dist/cli/commands/auth.d.ts.map +1 -0
- package/dist/cli/commands/auth.js +204 -0
- package/dist/cli/commands/auth.js.map +1 -0
- package/dist/cli/commands/keys.d.ts +17 -0
- package/dist/cli/commands/keys.d.ts.map +1 -0
- package/dist/cli/commands/keys.js +109 -0
- package/dist/cli/commands/keys.js.map +1 -0
- package/dist/cloudflare.d.ts +27 -2
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +144 -17
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +23 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +413 -1
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +44 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +56 -3
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/apiKeyAdmissions.d.ts +28 -2
- package/dist/db/tables/apiKeyAdmissions.d.ts.map +1 -1
- package/dist/db/tables/apiKeyAdmissions.js +65 -9
- package/dist/db/tables/apiKeyAdmissions.js.map +1 -1
- package/dist/db/tables/apiKeyOwnerTombstones.d.ts +2 -0
- package/dist/db/tables/apiKeyOwnerTombstones.d.ts.map +1 -1
- package/dist/db/tables/apiKeyOwnerTombstones.js +2 -2
- package/dist/db/tables/apiKeyOwnerTombstones.js.map +1 -1
- package/dist/db/tables/authAccounts.d.ts.map +1 -1
- package/dist/db/tables/authAccounts.js +1 -0
- package/dist/db/tables/authAccounts.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +5 -1
- package/dist/db/tables/earnVaults.d.ts.map +1 -1
- package/dist/db/tables/earnVaults.js +12 -1
- package/dist/db/tables/earnVaults.js.map +1 -1
- package/dist/db/tables/organizations.d.ts +4 -2
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +8 -34
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +5 -1
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +10 -2
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/rewardEligibilityAssociations.d.ts +13 -0
- package/dist/db/tables/rewardEligibilityAssociations.d.ts.map +1 -1
- package/dist/db/tables/rewardEligibilityAssociations.js +11 -0
- package/dist/db/tables/rewardEligibilityAssociations.js.map +1 -1
- package/dist/db/tables/rewardRuns.d.ts.map +1 -1
- package/dist/db/tables/rewardRuns.js +4 -0
- package/dist/db/tables/rewardRuns.js.map +1 -1
- package/dist/db/tables/rewardTransactionAttempts.d.ts.map +1 -1
- package/dist/db/tables/rewardTransactionAttempts.js +2 -0
- package/dist/db/tables/rewardTransactionAttempts.js.map +1 -1
- package/dist/db/tables/routesDepositAddresses.d.ts +29 -0
- package/dist/db/tables/routesDepositAddresses.d.ts.map +1 -1
- package/dist/db/tables/routesDepositAddresses.js +84 -31
- package/dist/db/tables/routesDepositAddresses.js.map +1 -1
- package/dist/db/tables/routesDeposits.d.ts.map +1 -1
- package/dist/db/tables/routesDeposits.js +31 -21
- package/dist/db/tables/routesDeposits.js.map +1 -1
- package/dist/db/tables/routesIdempotency.d.ts.map +1 -1
- package/dist/db/tables/routesIdempotency.js +2 -0
- package/dist/db/tables/routesIdempotency.js.map +1 -1
- package/dist/db/tables/routesPolicies.d.ts +58 -0
- package/dist/db/tables/routesPolicies.d.ts.map +1 -0
- package/dist/db/tables/routesPolicies.js +198 -0
- package/dist/db/tables/routesPolicies.js.map +1 -0
- package/dist/db/tables/routesTransferSubsidies.d.ts +22 -0
- package/dist/db/tables/routesTransferSubsidies.d.ts.map +1 -1
- package/dist/db/tables/routesTransferSubsidies.js +41 -0
- package/dist/db/tables/routesTransferSubsidies.js.map +1 -1
- package/dist/db/tables/routesTransferSubsidyNonces.d.ts.map +1 -1
- package/dist/db/tables/routesTransferSubsidyNonces.js +12 -4
- package/dist/db/tables/routesTransferSubsidyNonces.js.map +1 -1
- package/dist/db/tables/routesTransfers.d.ts +26 -1
- package/dist/db/tables/routesTransfers.d.ts.map +1 -1
- package/dist/db/tables/routesTransfers.js +36 -6
- package/dist/db/tables/routesTransfers.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +45 -13
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +144 -33
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/users.d.ts +2 -0
- package/dist/db/tables/users.d.ts.map +1 -1
- package/dist/db/tables/users.js +11 -0
- package/dist/db/tables/users.js.map +1 -1
- package/dist/handlers/internal/multisig.d.ts +1 -1
- package/dist/handlers/internal/multisig.d.ts.map +1 -1
- package/dist/handlers/internal/multisig.js +3 -2
- package/dist/handlers/internal/multisig.js.map +1 -1
- package/dist/handlers/relay.d.ts +2 -0
- package/dist/handlers/relay.d.ts.map +1 -1
- package/dist/handlers/relay.js +34 -15
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +57 -6
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +182 -78
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/BetterAuth.d.ts +22 -0
- package/dist/internal/BetterAuth.d.ts.map +1 -1
- package/dist/internal/BetterAuth.js +17 -14
- package/dist/internal/BetterAuth.js.map +1 -1
- package/dist/internal/Cache.d.ts +5 -0
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +3 -1
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/CliAuth.d.ts +243 -0
- package/dist/internal/CliAuth.d.ts.map +1 -0
- package/dist/internal/CliAuth.js +249 -0
- package/dist/internal/CliAuth.js.map +1 -0
- package/dist/internal/EarnSharePrices.d.ts +1 -1
- package/dist/internal/EarnSharePrices.d.ts.map +1 -1
- package/dist/internal/EarnSharePrices.js +7 -3
- package/dist/internal/EarnSharePrices.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +47 -0
- package/dist/internal/EarnVaults.d.ts.map +1 -1
- package/dist/internal/EarnVaults.js +188 -4
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/EarnWithdrawals.d.ts +73 -0
- package/dist/internal/EarnWithdrawals.d.ts.map +1 -0
- package/dist/internal/EarnWithdrawals.js +189 -0
- package/dist/internal/EarnWithdrawals.js.map +1 -0
- package/dist/internal/ExecutionContext.d.ts +21 -0
- package/dist/internal/ExecutionContext.d.ts.map +1 -0
- package/dist/internal/ExecutionContext.js +16 -0
- package/dist/internal/ExecutionContext.js.map +1 -0
- package/dist/internal/Log.d.ts +7 -3
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +163 -130
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +26 -1
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/RateLimit.d.ts +67 -0
- package/dist/internal/RateLimit.d.ts.map +1 -1
- package/dist/internal/RateLimit.js +174 -27
- package/dist/internal/RateLimit.js.map +1 -1
- package/dist/internal/Store.d.ts +6 -0
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +4 -5
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Timing.d.ts +6 -0
- package/dist/internal/Timing.d.ts.map +1 -1
- package/dist/internal/Timing.js +21 -1
- package/dist/internal/Timing.js.map +1 -1
- package/dist/internal/Tron.d.ts +124 -0
- package/dist/internal/Tron.d.ts.map +1 -0
- package/dist/internal/Tron.js +202 -0
- package/dist/internal/Tron.js.map +1 -0
- package/dist/internal/Viem.d.ts +4 -0
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +25 -6
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/rewards/Read.d.ts +2 -2
- package/dist/internal/rewards/Read.d.ts.map +1 -1
- package/dist/internal/rewards/Read.js +11 -2
- package/dist/internal/rewards/Read.js.map +1 -1
- package/dist/internal/routes/Action.d.ts +27 -0
- package/dist/internal/routes/Action.d.ts.map +1 -1
- package/dist/internal/routes/Action.js +49 -1
- package/dist/internal/routes/Action.js.map +1 -1
- package/dist/internal/routes/Chain.d.ts +2 -0
- package/dist/internal/routes/Chain.d.ts.map +1 -1
- package/dist/internal/routes/Chain.js +4 -0
- package/dist/internal/routes/Chain.js.map +1 -1
- package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/DepositAddress.js +5 -0
- package/dist/internal/routes/DepositAddress.js.map +1 -1
- package/dist/internal/routes/Evidence.d.ts.map +1 -1
- package/dist/internal/routes/Evidence.js +6 -2
- package/dist/internal/routes/Evidence.js.map +1 -1
- package/dist/internal/routes/EvmTransferSettlement.d.ts +17 -0
- package/dist/internal/routes/EvmTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/EvmTransferSettlement.js +196 -0
- package/dist/internal/routes/EvmTransferSettlement.js.map +1 -0
- package/dist/internal/routes/Policy.d.ts +161 -0
- package/dist/internal/routes/Policy.d.ts.map +1 -0
- package/dist/internal/routes/Policy.js +249 -0
- package/dist/internal/routes/Policy.js.map +1 -0
- package/dist/internal/routes/Provider.d.ts +66 -3
- package/dist/internal/routes/Provider.d.ts.map +1 -1
- package/dist/internal/routes/Provider.js +106 -27
- package/dist/internal/routes/Provider.js.map +1 -1
- package/dist/internal/routes/Quota.d.ts +57 -0
- package/dist/internal/routes/Quota.d.ts.map +1 -0
- package/dist/internal/routes/Quota.js +144 -0
- package/dist/internal/routes/Quota.js.map +1 -0
- package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
- package/dist/internal/routes/Reconciliation.js +163 -47
- package/dist/internal/routes/Reconciliation.js.map +1 -1
- package/dist/internal/routes/SolanaTransferSettlement.d.ts +12 -0
- package/dist/internal/routes/SolanaTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/SolanaTransferSettlement.js +220 -0
- package/dist/internal/routes/SolanaTransferSettlement.js.map +1 -0
- package/dist/internal/routes/SolanaTransferSubsidy.d.ts +172 -0
- package/dist/internal/routes/SolanaTransferSubsidy.d.ts.map +1 -0
- package/dist/internal/routes/SolanaTransferSubsidy.js +564 -0
- package/dist/internal/routes/SolanaTransferSubsidy.js.map +1 -0
- package/dist/internal/routes/Subsidy.d.ts +2 -2
- package/dist/internal/routes/Subsidy.d.ts.map +1 -1
- package/dist/internal/routes/Subsidy.js +2 -2
- package/dist/internal/routes/Subsidy.js.map +1 -1
- package/dist/internal/routes/Transfer.d.ts +229 -1
- package/dist/internal/routes/Transfer.d.ts.map +1 -1
- package/dist/internal/routes/Transfer.js +644 -7
- package/dist/internal/routes/Transfer.js.map +1 -1
- package/dist/internal/routes/TransferReconciliation.d.ts +6 -0
- package/dist/internal/routes/TransferReconciliation.d.ts.map +1 -1
- package/dist/internal/routes/TransferReconciliation.js +83 -159
- package/dist/internal/routes/TransferReconciliation.js.map +1 -1
- package/dist/internal/routes/TransferSettlement.d.ts +45 -0
- package/dist/internal/routes/TransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/TransferSettlement.js +2 -0
- package/dist/internal/routes/TransferSettlement.js.map +1 -0
- package/dist/internal/routes/TransferSubsidy.d.ts +23 -8
- package/dist/internal/routes/TransferSubsidy.d.ts.map +1 -1
- package/dist/internal/routes/TransferSubsidy.js +64 -5
- package/dist/internal/routes/TransferSubsidy.js.map +1 -1
- package/dist/internal/routes/TronTransferSettlement.d.ts +12 -0
- package/dist/internal/routes/TronTransferSettlement.d.ts.map +1 -0
- package/dist/internal/routes/TronTransferSettlement.js +201 -0
- package/dist/internal/routes/TronTransferSettlement.js.map +1 -0
- package/dist/internal/routes/TronTransferSubsidy.d.ts +174 -0
- package/dist/internal/routes/TronTransferSubsidy.d.ts.map +1 -0
- package/dist/internal/routes/TronTransferSubsidy.js +439 -0
- package/dist/internal/routes/TronTransferSubsidy.js.map +1 -0
- package/dist/internal/routes/index.d.ts +3 -0
- package/dist/internal/routes/index.d.ts.map +1 -1
- package/dist/internal/routes/index.js +3 -0
- package/dist/internal/routes/index.js.map +1 -1
- package/dist/internal/routes/providers/across.d.ts +3 -0
- package/dist/internal/routes/providers/across.d.ts.map +1 -1
- package/dist/internal/routes/providers/across.js +11 -0
- package/dist/internal/routes/providers/across.js.map +1 -1
- package/dist/internal/routes/providers/legacyMesh.d.ts +29 -0
- package/dist/internal/routes/providers/legacyMesh.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMesh.js +474 -0
- package/dist/internal/routes/providers/legacyMesh.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.d.ts +59 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.js +229 -0
- package/dist/internal/routes/providers/legacyMeshDelivery.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.d.ts +19 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.js +457 -0
- package/dist/internal/routes/providers/legacyMeshOutbound.js.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts +123 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.d.ts.map +1 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js +333 -0
- package/dist/internal/routes/providers/legacyMeshOutboundDelivery.js.map +1 -0
- package/dist/internal/routes/providers/propAmm.d.ts +70 -0
- package/dist/internal/routes/providers/propAmm.d.ts.map +1 -0
- package/dist/internal/routes/providers/propAmm.js +524 -0
- package/dist/internal/routes/providers/propAmm.js.map +1 -0
- package/dist/internal/routes/providers/relay.d.ts +3 -0
- package/dist/internal/routes/providers/relay.d.ts.map +1 -1
- package/dist/internal/routes/providers/relay.js +352 -41
- package/dist/internal/routes/providers/relay.js.map +1 -1
- package/dist/internal/routes/providers/rhino.d.ts +3 -0
- package/dist/internal/routes/providers/rhino.d.ts.map +1 -1
- package/dist/internal/routes/providers/rhino.js +11 -0
- package/dist/internal/routes/providers/rhino.js.map +1 -1
- package/dist/internal/routes/providers/squid.d.ts +3 -0
- package/dist/internal/routes/providers/squid.d.ts.map +1 -1
- package/dist/internal/routes/providers/squid.js +19 -0
- package/dist/internal/routes/providers/squid.js.map +1 -1
- package/dist/internal/routes/providers/stargate.d.ts.map +1 -1
- package/dist/internal/routes/providers/stargate.js +22 -9
- package/dist/internal/routes/providers/stargate.js.map +1 -1
- package/dist/internal/routes/providers/symbiosis.d.ts.map +1 -1
- package/dist/internal/routes/providers/symbiosis.js +13 -17
- package/dist/internal/routes/providers/symbiosis.js.map +1 -1
- package/dist/providers/index.d.ts +14 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +6 -0
- package/dist/providers/index.js.map +1 -1
- package/package.json +16 -6
- package/src/ApiKey.ts +7 -3
- package/src/ApiKeys.test.ts +652 -8
- package/src/ApiKeys.ts +191 -11
- package/src/App.test.ts +405 -18
- package/src/App.ts +51 -15
- package/src/Client.test-d.ts +157 -10
- package/src/Client.test.ts +4 -4
- package/src/Scope.ts +1 -2
- package/src/admin/App.ts +11 -5
- package/src/admin/apps/api-keys.test.ts +98 -2
- package/src/admin/apps/api-keys.ts +21 -12
- package/src/admin/apps/earn-vaults.test.ts +76 -7
- package/src/admin/apps/earn-vaults.ts +47 -8
- package/src/admin/apps/organizations.test.ts +147 -31
- package/src/admin/apps/organizations.ts +5 -4
- package/src/admin/apps/route-policies.test.ts +220 -0
- package/src/admin/apps/route-policies.ts +322 -0
- package/src/admin/apps/routes-support.test.ts +107 -2
- package/src/admin/apps/routes-support.ts +43 -3
- package/src/admin/apps/routes.test.ts +150 -0
- package/src/admin/apps/routes.ts +97 -1
- package/src/admin/apps/scopes.test.ts +1 -1
- package/src/admin/index.ts +0 -1
- package/src/admin/ui/plugin.ts +2 -1
- package/src/admin/ui/src/components/Dialog.tsx +1 -1
- package/src/admin/ui/src/components/EarnVaultForm.tsx +45 -0
- package/src/admin/ui/src/components/RoutePicker.tsx +79 -0
- package/src/admin/ui/src/lib/earn-vaults.ts +1 -1
- package/src/admin/ui/src/lib/route-policies.test.ts +452 -0
- package/src/admin/ui/src/lib/route-policies.ts +232 -0
- package/src/admin/ui/src/lib/routes.ts +34 -0
- package/src/admin/ui/src/routeTree.gen.ts +21 -0
- package/src/admin/ui/src/routes/api-keys.tsx +21 -2
- package/src/admin/ui/src/routes/early-access.tsx +1 -0
- package/src/admin/ui/src/routes/earn.vaults.tsx +1 -0
- package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +22 -0
- package/src/admin/ui/src/routes/earn.vaults_.new.tsx +10 -0
- package/src/admin/ui/src/routes/organizations.tsx +1 -0
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +18 -3
- package/src/admin/ui/src/routes/route-policies.tsx +678 -0
- package/src/admin/ui/src/routes/routes.tsx +85 -2
- package/src/admin/ui/src/routes/routes_.support.tsx +6 -22
- package/src/admin/ui/src/routes/subsidies.tsx +1 -0
- package/src/admin/ui/src/routes/verified-tokens.tsx +1 -0
- package/src/admin/ui.generated.ts +258 -202
- package/src/analytics/Analytics.test.ts +4 -50
- package/src/analytics/Analytics.ts +65 -1
- package/src/analytics/tables/requestEvents.test.ts +402 -1
- package/src/analytics/tables/requestEvents.ts +62 -93
- package/src/apps/data/routes/activities.test.ts +315 -14
- package/src/apps/data/routes/activities.ts +60 -0
- package/src/apps/data/routes/balances.ts +5 -7
- package/src/apps/data/routes/earn.bench.ts +18 -0
- package/src/apps/data/routes/earn.local.test.ts +507 -0
- package/src/apps/data/routes/earn.test.ts +405 -127
- package/src/apps/data/routes/earn.ts +660 -270
- package/src/apps/data/routes/exchanges.bench.ts +3 -1
- package/src/apps/data/routes/exchanges.test.ts +166 -2
- package/src/apps/data/routes/exchanges.ts +308 -101
- package/src/apps/data/routes/fee-amm.test.ts +134 -2
- package/src/apps/data/routes/fee-amm.ts +122 -60
- package/src/apps/data/routes/receipts.test.ts +21 -18
- package/src/apps/data/routes/rpc.test.ts +2 -2
- package/src/apps/data/routes/tokens.provenance.test.ts +157 -0
- package/src/apps/data/routes/tokens.test.ts +4 -4
- package/src/apps/data/routes/tokens.ts +11 -6
- package/src/apps/data/routes/transactions.test.ts +29 -0
- package/src/apps/data/routes/transactions.ts +33 -22
- package/src/apps/data/routes/webhooks.test.ts +12 -3
- package/src/apps/data/routes/webhooks.ts +2 -1
- package/src/apps/management/App.ts +4 -0
- package/src/apps/management/Billing.test.ts +253 -27
- package/src/apps/management/Billing.ts +83 -29
- package/src/apps/management/routes/api-keys.test.ts +1 -1
- package/src/apps/management/routes/api-keys.ts +85 -11
- package/src/apps/management/routes/billing.test.ts +68 -4
- package/src/apps/management/routes/cli.test.ts +370 -0
- package/src/apps/management/routes/cli.ts +533 -0
- package/src/apps/management/routes/me.test.ts +14 -4
- package/src/apps/management/routes/orgs.test.ts +108 -4
- package/src/apps/management/routes/orgs.ts +7 -2
- package/src/apps/management/routes/usage.test.ts +2 -2
- package/src/apps/mpp/internal/Policy.test.ts +51 -4
- package/src/apps/mpp/internal/Policy.ts +6 -2
- package/src/apps/mpp/internal/Sponsorship.test.ts +29 -0
- package/src/apps/mpp/internal/Sponsorship.ts +6 -4
- package/src/apps/relay/App.test.ts +85 -1
- package/src/apps/relay/App.ts +28 -4
- package/src/apps/relay/Sponsorships.test.ts +97 -1
- package/src/apps/relay/Sponsorships.ts +77 -66
- package/src/apps/routes/Access.test.ts +319 -0
- package/src/apps/routes/Access.ts +147 -0
- package/src/apps/routes/App.ts +10 -0
- package/src/apps/routes/routes/chains.test.ts +3 -2
- package/src/apps/routes/routes/deposit-addresses.test.ts +978 -34
- package/src/apps/routes/routes/deposit-addresses.ts +243 -32
- package/src/apps/routes/routes/propAmm.local.test.ts +951 -0
- package/src/apps/routes/routes/quotes.test.ts +81 -8
- package/src/apps/routes/routes/quotes.ts +109 -27
- package/src/apps/routes/routes/transfers.test.ts +252 -15
- package/src/apps/routes/routes/transfers.ts +212 -33
- package/src/cli/ApiKeys.test.ts +265 -0
- package/src/cli/ApiKeys.ts +189 -0
- package/src/cli/Cli.test.ts +188 -0
- package/src/cli/Cli.ts +280 -12
- package/src/cli/Credentials.test.ts +122 -0
- package/src/cli/Credentials.ts +144 -0
- package/src/cli/Spec.test.ts +133 -0
- package/src/cli/Spec.ts +132 -0
- package/src/cli/bin.test.ts +49 -0
- package/src/cli/bin.ts +5 -1
- package/src/cli/commands/auth.test.ts +138 -0
- package/src/cli/commands/auth.ts +254 -0
- package/src/cli/commands/keys.test.ts +68 -0
- package/src/cli/commands/keys.ts +125 -0
- package/src/cloudflare.ts +184 -36
- package/src/db/Db.test.ts +877 -0
- package/src/db/Db.ts +498 -1
- package/src/db/Schema.ts +75 -4
- package/src/db/tables/apiKeyAdmissions.test.ts +57 -0
- package/src/db/tables/apiKeyAdmissions.ts +101 -11
- package/src/db/tables/apiKeyOwnerTombstones.ts +2 -2
- package/src/db/tables/authAccounts.test.ts +30 -0
- package/src/db/tables/authAccounts.ts +1 -0
- package/src/db/tables/earnVaults.test.ts +34 -0
- package/src/db/tables/earnVaults.ts +17 -2
- package/src/db/tables/organizations.test.ts +148 -84
- package/src/db/tables/organizations.ts +11 -43
- package/src/db/tables/requestUsage.ts +13 -2
- package/src/db/tables/rewardCampaigns.test.ts +163 -0
- package/src/db/tables/rewardEligibilityAssociations.test.ts +14 -0
- package/src/db/tables/rewardEligibilityAssociations.ts +24 -0
- package/src/db/tables/rewardRuns.ts +4 -0
- package/src/db/tables/rewardTransactionAttempts.ts +2 -0
- package/src/db/tables/routesDepositAddresses.test.ts +263 -0
- package/src/db/tables/routesDepositAddresses.ts +118 -34
- package/src/db/tables/routesDeposits.test.ts +66 -5
- package/src/db/tables/routesDeposits.ts +47 -26
- package/src/db/tables/routesIdempotency.test.ts +80 -0
- package/src/db/tables/routesIdempotency.ts +2 -0
- package/src/db/tables/routesPolicies.test.ts +143 -0
- package/src/db/tables/routesPolicies.ts +251 -0
- package/src/db/tables/routesTransferSubsidies.ts +64 -0
- package/src/db/tables/routesTransferSubsidyNonces.ts +16 -4
- package/src/db/tables/routesTransfers.test.ts +183 -2
- package/src/db/tables/routesTransfers.ts +65 -6
- package/src/db/tables/sponsoredTransactions.test.ts +351 -76
- package/src/db/tables/sponsoredTransactions.ts +182 -38
- package/src/db/tables/users.test.ts +51 -0
- package/src/db/tables/users.ts +12 -0
- package/src/handlers/internal/multisig.store.test.ts +120 -0
- package/src/handlers/internal/multisig.test.ts +389 -0
- package/src/handlers/internal/multisig.ts +13 -10
- package/src/handlers/relay.test.ts +259 -83
- package/src/handlers/relay.ts +36 -17
- package/src/internal/Auth.test.ts +291 -8
- package/src/internal/Auth.ts +227 -96
- package/src/internal/BetterAuth.test.ts +58 -22
- package/src/internal/BetterAuth.ts +23 -17
- package/src/internal/Cache.ts +3 -1
- package/src/internal/CliAuth.test.ts +279 -0
- package/src/internal/CliAuth.ts +319 -0
- package/src/internal/EarnSharePrices.test.ts +25 -0
- package/src/internal/EarnSharePrices.ts +9 -2
- package/src/internal/EarnVaults.test.ts +67 -0
- package/src/internal/EarnVaults.ts +299 -4
- package/src/internal/EarnWithdrawals.test.ts +315 -0
- package/src/internal/EarnWithdrawals.ts +266 -0
- package/src/internal/ExecutionContext.ts +31 -0
- package/src/internal/Log.test.ts +210 -0
- package/src/internal/Log.ts +180 -142
- package/src/internal/MetricSink.test.ts +190 -15
- package/src/internal/MetricSink.ts +27 -1
- package/src/internal/RateLimit.test.ts +144 -8
- package/src/internal/RateLimit.ts +254 -26
- package/src/internal/Store.ts +4 -5
- package/src/internal/Timing.test.ts +32 -0
- package/src/internal/Timing.ts +20 -1
- package/src/internal/Tron.test-d.ts +22 -0
- package/src/internal/Tron.test.ts +94 -0
- package/src/internal/Tron.ts +289 -0
- package/src/internal/Viem.rpc.test.ts +76 -0
- package/src/internal/Viem.ts +29 -6
- package/src/internal/rewards/Read.test.ts +109 -0
- package/src/internal/rewards/Read.ts +13 -4
- package/src/internal/routes/Action.test.ts +70 -0
- package/src/internal/routes/Action.ts +76 -1
- package/src/internal/routes/Chain.test.ts +18 -0
- package/src/internal/routes/Chain.ts +5 -0
- package/src/internal/routes/DepositAddress.ts +5 -0
- package/src/internal/routes/Evidence.test.ts +64 -0
- package/src/internal/routes/Evidence.ts +11 -3
- package/src/internal/routes/EvmTransferSettlement.ts +213 -0
- package/src/internal/routes/Policy.test.ts +316 -0
- package/src/internal/routes/Policy.ts +399 -0
- package/src/internal/routes/Provider.test.ts +103 -2
- package/src/internal/routes/Provider.ts +149 -27
- package/src/internal/routes/Quota.test.ts +149 -0
- package/src/internal/routes/Quota.ts +226 -0
- package/src/internal/routes/Reconciliation.local.test.ts +285 -0
- package/src/internal/routes/Reconciliation.test.ts +371 -13
- package/src/internal/routes/Reconciliation.ts +193 -42
- package/src/internal/routes/SolanaTransferSettlement.ts +232 -0
- package/src/internal/routes/SolanaTransferSubsidy.test.ts +471 -0
- package/src/internal/routes/SolanaTransferSubsidy.ts +760 -0
- package/src/internal/routes/SourceObservation.test.ts +221 -0
- package/src/internal/routes/Subsidy.local.test.ts +46 -0
- package/src/internal/routes/Subsidy.ts +4 -2
- package/src/internal/routes/Transfer.solana.test.ts +389 -0
- package/src/internal/routes/Transfer.test.ts +130 -1
- package/src/internal/routes/Transfer.tron.test.ts +172 -0
- package/src/internal/routes/Transfer.ts +866 -8
- package/src/internal/routes/TransferReconciliation.test.ts +26 -4
- package/src/internal/routes/TransferReconciliation.ts +91 -166
- package/src/internal/routes/TransferSettlement.ts +48 -0
- package/src/internal/routes/TransferSubsidy.local.test.ts +143 -0
- package/src/internal/routes/TransferSubsidy.test.ts +34 -4
- package/src/internal/routes/TransferSubsidy.ts +87 -12
- package/src/internal/routes/TronTransferSettlement.ts +212 -0
- package/src/internal/routes/TronTransferSubsidy.test.ts +109 -0
- package/src/internal/routes/TronTransferSubsidy.ts +619 -0
- package/src/internal/routes/index.test.ts +3 -0
- package/src/internal/routes/index.ts +3 -0
- package/src/internal/routes/providers/across.ts +13 -0
- package/src/internal/routes/providers/index.test.ts +141 -0
- package/src/internal/routes/providers/legacyMesh.test.ts +484 -0
- package/src/internal/routes/providers/legacyMesh.ts +633 -0
- package/src/internal/routes/providers/legacyMeshDelivery.test.ts +306 -0
- package/src/internal/routes/providers/legacyMeshDelivery.ts +320 -0
- package/src/internal/routes/providers/legacyMeshOutbound.test.ts +401 -0
- package/src/internal/routes/providers/legacyMeshOutbound.ts +566 -0
- package/src/internal/routes/providers/legacyMeshOutboundDelivery.ts +473 -0
- package/src/internal/routes/providers/propAmm.ts +640 -0
- package/src/internal/routes/providers/relay.test.ts +1263 -41
- package/src/internal/routes/providers/relay.ts +423 -38
- package/src/internal/routes/providers/rhino.ts +14 -1
- package/src/internal/routes/providers/squid.ts +21 -0
- package/src/internal/routes/providers/stargate.test.ts +105 -1
- package/src/internal/routes/providers/stargate.ts +22 -9
- package/src/internal/routes/providers/symbiosis.ts +13 -47
- package/src/providers/index.test.ts +2 -0
- package/src/providers/index.ts +18 -0
- package/dist/admin/Access.d.ts +0 -39
- package/dist/admin/Access.d.ts.map +0 -1
- package/dist/admin/Access.js +0 -73
- package/dist/admin/Access.js.map +0 -1
- package/src/admin/Access.test.ts +0 -130
- package/src/admin/Access.ts +0 -85
package/src/db/Db.ts
CHANGED
|
@@ -3,7 +3,10 @@ import {
|
|
|
3
3
|
type Compilable,
|
|
4
4
|
CompiledQuery,
|
|
5
5
|
type Dialect,
|
|
6
|
+
type DatabaseConnection,
|
|
7
|
+
type Driver,
|
|
6
8
|
Kysely,
|
|
9
|
+
type KyselyPlugin,
|
|
7
10
|
PostgresDialect,
|
|
8
11
|
type RawBuilder,
|
|
9
12
|
sql,
|
|
@@ -42,6 +45,7 @@ import type * as RoutesDepositAddresses from './tables/routesDepositAddresses.js
|
|
|
42
45
|
import type * as RoutesDepositRequestObservations from './tables/routesDepositRequestObservations.js'
|
|
43
46
|
import type * as RoutesDeposits from './tables/routesDeposits.js'
|
|
44
47
|
import type * as RoutesIdempotency from './tables/routesIdempotency.js'
|
|
48
|
+
import type * as RoutesPolicies from './tables/routesPolicies.js'
|
|
45
49
|
import type * as RoutesSubsidies from './tables/routesSubsidies.js'
|
|
46
50
|
import type * as RoutesTransferEvents from './tables/routesTransferEvents.js'
|
|
47
51
|
import type * as RoutesTransfers from './tables/routesTransfers.js'
|
|
@@ -107,10 +111,12 @@ export type Database = {
|
|
|
107
111
|
routes_deposit_request_observations: RoutesDepositRequestObservations.Table
|
|
108
112
|
routes_deposits: RoutesDeposits.Table
|
|
109
113
|
routes_idempotency_requests: RoutesIdempotency.Table
|
|
114
|
+
routes_policies: RoutesPolicies.Table
|
|
110
115
|
routes_routes: RoutesCatalog.RouteTable
|
|
111
116
|
routes_subsidies: RoutesSubsidies.Table
|
|
112
117
|
routes_tokens: RoutesCatalog.TokenTable
|
|
113
118
|
routes_transfer_events: RoutesTransferEvents.Table
|
|
119
|
+
routes_transfer_subsidy_expired_attempts: RoutesTransferSubsidies.ExpiredAttemptTable
|
|
114
120
|
routes_transfer_subsidies: RoutesTransferSubsidies.Table
|
|
115
121
|
routes_transfer_subsidy_nonces: RoutesTransferSubsidyNonces.Table
|
|
116
122
|
routes_transfer_transactions: RoutesTransferTransactions.Table
|
|
@@ -150,6 +156,45 @@ export type Db = {
|
|
|
150
156
|
transaction<value>(fn: (tx: Db) => Promise<value>): Promise<value>
|
|
151
157
|
}
|
|
152
158
|
|
|
159
|
+
/** Per-execution observers, keyed by Kysely's query id so the driver can find them. */
|
|
160
|
+
const queryObservers = new WeakMap<object, observe.Options['onQuery']>()
|
|
161
|
+
|
|
162
|
+
/**
|
|
163
|
+
* Wraps a database so every query reports its wall-clock duration at the
|
|
164
|
+
* driver: acquisition of its connection plus execution, whether it succeeds or
|
|
165
|
+
* rejects. A rejected acquisition has no query to charge and goes unreported.
|
|
166
|
+
*/
|
|
167
|
+
export function observe(db: Db, options: observe.Options): Db {
|
|
168
|
+
// The plugin only tags executions; the driver wrapper installed by
|
|
169
|
+
// `fromDialect` does the timing, so rejected queries report too.
|
|
170
|
+
const plugin: KyselyPlugin = {
|
|
171
|
+
transformQuery(args) {
|
|
172
|
+
queryObservers.set(args.queryId, options.onQuery)
|
|
173
|
+
return args.node
|
|
174
|
+
},
|
|
175
|
+
async transformResult(args) {
|
|
176
|
+
return args.result
|
|
177
|
+
},
|
|
178
|
+
}
|
|
179
|
+
return { ...db, kysely: db.kysely.withPlugin(plugin) }
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
export declare namespace observe {
|
|
183
|
+
/** Query observation hooks. */
|
|
184
|
+
type Options = {
|
|
185
|
+
/** Receives each completed query's total and component durations in milliseconds. */
|
|
186
|
+
onQuery: (durationMs: number, timing: Timing) => void
|
|
187
|
+
}
|
|
188
|
+
|
|
189
|
+
/** Connection acquisition and query execution durations, in milliseconds. */
|
|
190
|
+
type Timing = {
|
|
191
|
+
/** Time spent waiting for or connecting a database connection. */
|
|
192
|
+
acquire: number
|
|
193
|
+
/** Time spent executing the query, including network round trips. */
|
|
194
|
+
query: number
|
|
195
|
+
}
|
|
196
|
+
}
|
|
197
|
+
|
|
153
198
|
/**
|
|
154
199
|
* A {@link Db}, or a factory for per-request Workers/Hyperdrive connections.
|
|
155
200
|
* Node can pass a long-lived singleton. Resolve at the leaf with {@link get}.
|
|
@@ -2980,6 +3025,389 @@ export const migrations: readonly Migration[] = [
|
|
|
2980
3025
|
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'`,
|
|
2981
3026
|
),
|
|
2982
3027
|
},
|
|
3028
|
+
{
|
|
3029
|
+
name: '0280_routes_policies',
|
|
3030
|
+
up: (db) =>
|
|
3031
|
+
raw(
|
|
3032
|
+
db,
|
|
3033
|
+
sql`DO $$ BEGIN
|
|
3034
|
+
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));
|
|
3035
|
+
ALTER TABLE api_key_admissions ADD COLUMN IF NOT EXISTS pending_scopes jsonb;
|
|
3036
|
+
END $$`,
|
|
3037
|
+
),
|
|
3038
|
+
},
|
|
3039
|
+
{
|
|
3040
|
+
name: '0270_earn_vault_earnings',
|
|
3041
|
+
up: (db) => raw(db, sql`ALTER TABLE earn_vaults ADD COLUMN IF NOT EXISTS earnings jsonb`),
|
|
3042
|
+
},
|
|
3043
|
+
{
|
|
3044
|
+
// All workers must understand pinned commitments before this index permits multiple terms for the same wallets.
|
|
3045
|
+
name: '0281_routes_deposit_address_policy_identity',
|
|
3046
|
+
up: (db) =>
|
|
3047
|
+
raw(
|
|
3048
|
+
db,
|
|
3049
|
+
sql`DO $$ BEGIN
|
|
3050
|
+
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;
|
|
3051
|
+
DROP INDEX IF EXISTS routes_deposit_addresses_identity_idx;
|
|
3052
|
+
END $$`,
|
|
3053
|
+
),
|
|
3054
|
+
},
|
|
3055
|
+
{
|
|
3056
|
+
// The funding-to-routes rename left existing subscriptions with event types rejected by response validation.
|
|
3057
|
+
name: '0282_webhook_subscription_routes_event_types',
|
|
3058
|
+
up: (db) =>
|
|
3059
|
+
raw(
|
|
3060
|
+
db,
|
|
3061
|
+
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')`,
|
|
3062
|
+
),
|
|
3063
|
+
},
|
|
3064
|
+
{
|
|
3065
|
+
name: '0283_sponsored_transactions_drop_hashless_recovery_index',
|
|
3066
|
+
up: (db) => raw(db, sql`DROP INDEX IF EXISTS sponsored_transactions_recovery_idx`),
|
|
3067
|
+
},
|
|
3068
|
+
{
|
|
3069
|
+
name: '0284_sponsored_transactions_failed_recovery_index',
|
|
3070
|
+
up: (db) =>
|
|
3071
|
+
raw(
|
|
3072
|
+
db,
|
|
3073
|
+
sql`CREATE INDEX IF NOT EXISTS sponsored_transactions_recovery_idx ON sponsored_transactions (finalized_at, chain_id, created_at) WHERE status = 'failed'`,
|
|
3074
|
+
),
|
|
3075
|
+
},
|
|
3076
|
+
{
|
|
3077
|
+
name: '0285_sponsored_transactions_reconciled_hash',
|
|
3078
|
+
up: (db) =>
|
|
3079
|
+
raw(
|
|
3080
|
+
db,
|
|
3081
|
+
sql`ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS transaction_hash_reconciled boolean NOT NULL DEFAULT false`,
|
|
3082
|
+
),
|
|
3083
|
+
},
|
|
3084
|
+
{
|
|
3085
|
+
name: '0286_request_usage_event_timestamp',
|
|
3086
|
+
up: (db) =>
|
|
3087
|
+
raw(
|
|
3088
|
+
db,
|
|
3089
|
+
sql`ALTER TABLE request_usage_meter_events ADD COLUMN IF NOT EXISTS event_timestamp text`,
|
|
3090
|
+
),
|
|
3091
|
+
},
|
|
3092
|
+
{
|
|
3093
|
+
name: '0287_users_terms_shared_at',
|
|
3094
|
+
up: (db) => raw(db, sql`ALTER TABLE users ADD COLUMN IF NOT EXISTS terms_shared_at text`),
|
|
3095
|
+
},
|
|
3096
|
+
{
|
|
3097
|
+
name: '0288_sponsored_transactions_meter_attempt',
|
|
3098
|
+
up: (db) => raw(db, sql`ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS meter_report_attempted_at text`), // prettier-ignore
|
|
3099
|
+
},
|
|
3100
|
+
{
|
|
3101
|
+
name: '0289_sponsored_transactions_meter_attempt_index',
|
|
3102
|
+
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
|
|
3103
|
+
},
|
|
3104
|
+
{
|
|
3105
|
+
name: '0290_sponsored_transactions_first_meter_event_attempt',
|
|
3106
|
+
up: (db) => raw(db, sql`ALTER TABLE sponsored_transactions ADD COLUMN IF NOT EXISTS meter_event_first_attempted_at text`), // prettier-ignore
|
|
3107
|
+
},
|
|
3108
|
+
{
|
|
3109
|
+
name: '0291_sponsored_transactions_meter_retry_index',
|
|
3110
|
+
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
|
|
3111
|
+
},
|
|
3112
|
+
{
|
|
3113
|
+
name: '0292_routes_transfer_subsidies_tron_addresses',
|
|
3114
|
+
up: (db) =>
|
|
3115
|
+
raw(
|
|
3116
|
+
db,
|
|
3117
|
+
sql`CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
|
|
3118
|
+
LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
|
|
3119
|
+
DECLARE
|
|
3120
|
+
settlement routes_transfer_subsidies%ROWTYPE;
|
|
3121
|
+
source_chain text;
|
|
3122
|
+
source_ref text;
|
|
3123
|
+
recipient text;
|
|
3124
|
+
token_address text;
|
|
3125
|
+
BEGIN
|
|
3126
|
+
IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
|
|
3127
|
+
RETURN NEW;
|
|
3128
|
+
END IF;
|
|
3129
|
+
source_chain := NEW.snapshot->'sourceChain'->>'id';
|
|
3130
|
+
source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
|
|
3131
|
+
IF source_ref IS NULL THEN
|
|
3132
|
+
RAISE EXCEPTION 'Subsidy source evidence is missing';
|
|
3133
|
+
END IF;
|
|
3134
|
+
recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'tron:%'
|
|
3135
|
+
THEN NEW.snapshot->>'recipient' ELSE lower(NEW.snapshot->>'recipient') END;
|
|
3136
|
+
token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'tron:%'
|
|
3137
|
+
THEN NEW.subsidy_token_address ELSE lower(NEW.subsidy_token_address) END;
|
|
3138
|
+
INSERT INTO routes_transfer_subsidies (
|
|
3139
|
+
source_chain_id, transaction_ref, destination_chain_id, recipient,
|
|
3140
|
+
token_address, transaction, transfer_id, created_at
|
|
3141
|
+
) VALUES (
|
|
3142
|
+
source_chain, source_ref, NEW.subsidy_chain_id, recipient,
|
|
3143
|
+
token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
|
|
3144
|
+
) ON CONFLICT DO NOTHING;
|
|
3145
|
+
SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
|
|
3146
|
+
WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
|
|
3147
|
+
IF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy'
|
|
3148
|
+
OR settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
|
|
3149
|
+
OR settlement.recipient IS DISTINCT FROM recipient
|
|
3150
|
+
OR settlement.token_address IS DISTINCT FROM token_address THEN
|
|
3151
|
+
RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
|
|
3152
|
+
END IF;
|
|
3153
|
+
IF settlement.transfer_id <> NEW.id THEN
|
|
3154
|
+
NEW.subsidy_amount := NULL;
|
|
3155
|
+
NEW.subsidy_commitment_amount := NULL;
|
|
3156
|
+
NEW.subsidy_native_amount := NULL;
|
|
3157
|
+
END IF;
|
|
3158
|
+
RETURN NEW;
|
|
3159
|
+
END $capture$`,
|
|
3160
|
+
),
|
|
3161
|
+
},
|
|
3162
|
+
{
|
|
3163
|
+
name: '0293_routes_transfer_subsidies_case_sensitive_addresses',
|
|
3164
|
+
up: (db) =>
|
|
3165
|
+
raw(
|
|
3166
|
+
db,
|
|
3167
|
+
sql`CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
|
|
3168
|
+
LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
|
|
3169
|
+
DECLARE
|
|
3170
|
+
settlement routes_transfer_subsidies%ROWTYPE;
|
|
3171
|
+
source_chain text;
|
|
3172
|
+
source_ref text;
|
|
3173
|
+
recipient text;
|
|
3174
|
+
token_address text;
|
|
3175
|
+
BEGIN
|
|
3176
|
+
IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
|
|
3177
|
+
RETURN NEW;
|
|
3178
|
+
END IF;
|
|
3179
|
+
source_chain := NEW.snapshot->'sourceChain'->>'id';
|
|
3180
|
+
source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
|
|
3181
|
+
IF source_ref IS NULL THEN
|
|
3182
|
+
RAISE EXCEPTION 'Subsidy source evidence is missing';
|
|
3183
|
+
END IF;
|
|
3184
|
+
recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
|
|
3185
|
+
THEN lower(NEW.snapshot->>'recipient') ELSE NEW.snapshot->>'recipient' END;
|
|
3186
|
+
token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
|
|
3187
|
+
THEN lower(NEW.subsidy_token_address) ELSE NEW.subsidy_token_address END;
|
|
3188
|
+
INSERT INTO routes_transfer_subsidies (
|
|
3189
|
+
source_chain_id, transaction_ref, destination_chain_id, recipient,
|
|
3190
|
+
token_address, transaction, transfer_id, created_at
|
|
3191
|
+
) VALUES (
|
|
3192
|
+
source_chain, source_ref, NEW.subsidy_chain_id, recipient,
|
|
3193
|
+
token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
|
|
3194
|
+
) ON CONFLICT DO NOTHING;
|
|
3195
|
+
SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
|
|
3196
|
+
WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
|
|
3197
|
+
IF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy'
|
|
3198
|
+
OR settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
|
|
3199
|
+
OR settlement.recipient IS DISTINCT FROM recipient
|
|
3200
|
+
OR settlement.token_address IS DISTINCT FROM token_address THEN
|
|
3201
|
+
RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
|
|
3202
|
+
END IF;
|
|
3203
|
+
IF settlement.transfer_id <> NEW.id THEN
|
|
3204
|
+
NEW.subsidy_amount := NULL;
|
|
3205
|
+
NEW.subsidy_commitment_amount := NULL;
|
|
3206
|
+
NEW.subsidy_native_amount := NULL;
|
|
3207
|
+
END IF;
|
|
3208
|
+
RETURN NEW;
|
|
3209
|
+
END $capture$`,
|
|
3210
|
+
),
|
|
3211
|
+
},
|
|
3212
|
+
{
|
|
3213
|
+
name: '0294_routes_transfer_subsidies_status',
|
|
3214
|
+
up: (db) =>
|
|
3215
|
+
raw(
|
|
3216
|
+
db,
|
|
3217
|
+
sql`ALTER TABLE routes_transfer_subsidies ADD COLUMN IF NOT EXISTS status text NOT NULL DEFAULT 'active'`,
|
|
3218
|
+
),
|
|
3219
|
+
},
|
|
3220
|
+
{
|
|
3221
|
+
name: '0295_routes_transfer_subsidies_status_check',
|
|
3222
|
+
up: (db) =>
|
|
3223
|
+
raw(
|
|
3224
|
+
db,
|
|
3225
|
+
sql`DO $$ BEGIN
|
|
3226
|
+
IF NOT EXISTS (
|
|
3227
|
+
SELECT 1 FROM pg_constraint WHERE conname = 'routes_transfer_subsidies_status_check'
|
|
3228
|
+
) THEN
|
|
3229
|
+
ALTER TABLE routes_transfer_subsidies
|
|
3230
|
+
ADD CONSTRAINT routes_transfer_subsidies_status_check
|
|
3231
|
+
CHECK (status IN ('active', 'expired'));
|
|
3232
|
+
END IF;
|
|
3233
|
+
END $$`,
|
|
3234
|
+
),
|
|
3235
|
+
},
|
|
3236
|
+
{
|
|
3237
|
+
name: '0296_routes_transfer_subsidy_expired_attempts',
|
|
3238
|
+
up: (db) =>
|
|
3239
|
+
db.schema
|
|
3240
|
+
.createTable('routesTransferSubsidyExpiredAttempts')
|
|
3241
|
+
.ifNotExists()
|
|
3242
|
+
.addColumn('createdAt', 'text', (c) => c.notNull())
|
|
3243
|
+
.addColumn('expiredAt', 'text', (c) => c.notNull())
|
|
3244
|
+
.addColumn('sourceChainId', 'text', (c) => c.notNull())
|
|
3245
|
+
.addColumn('transaction', 'jsonb', (c) => c.notNull())
|
|
3246
|
+
.addColumn('transactionHash', 'text', (c) => c.notNull())
|
|
3247
|
+
.addColumn('transactionRef', 'text', (c) => c.notNull())
|
|
3248
|
+
.addColumn('transferId', 'text', (c) => c.notNull())
|
|
3249
|
+
.addPrimaryKeyConstraint('routes_transfer_subsidy_expired_attempts_pkey', [
|
|
3250
|
+
'sourceChainId',
|
|
3251
|
+
'transactionRef',
|
|
3252
|
+
'transactionHash',
|
|
3253
|
+
]),
|
|
3254
|
+
},
|
|
3255
|
+
{
|
|
3256
|
+
name: '0297_routes_transfer_subsidy_expiry_capture',
|
|
3257
|
+
up: (db) =>
|
|
3258
|
+
raw(
|
|
3259
|
+
db,
|
|
3260
|
+
sql`CREATE OR REPLACE FUNCTION capture_routes_transfer_subsidy() RETURNS trigger
|
|
3261
|
+
LANGUAGE plpgsql SET search_path FROM CURRENT AS $capture$
|
|
3262
|
+
DECLARE
|
|
3263
|
+
settlement routes_transfer_subsidies%ROWTYPE;
|
|
3264
|
+
source_chain text;
|
|
3265
|
+
source_ref text;
|
|
3266
|
+
recipient text;
|
|
3267
|
+
token_address text;
|
|
3268
|
+
expired_signed jsonb;
|
|
3269
|
+
replacement_signed jsonb;
|
|
3270
|
+
BEGIN
|
|
3271
|
+
IF NEW.subsidy_transaction_hash IS NULL OR NEW.provider_state->'transferSubsidy' IS NULL THEN
|
|
3272
|
+
RETURN NEW;
|
|
3273
|
+
END IF;
|
|
3274
|
+
source_chain := NEW.snapshot->'sourceChain'->>'id';
|
|
3275
|
+
source_ref := NEW.snapshot->'sourceTransactionHashes'->>0;
|
|
3276
|
+
IF source_ref IS NULL THEN
|
|
3277
|
+
RAISE EXCEPTION 'Subsidy source evidence is missing';
|
|
3278
|
+
END IF;
|
|
3279
|
+
recipient := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
|
|
3280
|
+
THEN lower(NEW.snapshot->>'recipient') ELSE NEW.snapshot->>'recipient' END;
|
|
3281
|
+
token_address := CASE WHEN NEW.subsidy_chain_id LIKE 'eip155:%'
|
|
3282
|
+
THEN lower(NEW.subsidy_token_address) ELSE NEW.subsidy_token_address END;
|
|
3283
|
+
INSERT INTO routes_transfer_subsidies (
|
|
3284
|
+
source_chain_id, transaction_ref, destination_chain_id, recipient,
|
|
3285
|
+
token_address, transaction, transfer_id, created_at
|
|
3286
|
+
) VALUES (
|
|
3287
|
+
source_chain, source_ref, NEW.subsidy_chain_id, recipient,
|
|
3288
|
+
token_address, NEW.provider_state->'transferSubsidy', NEW.id, NEW.updated_at
|
|
3289
|
+
) ON CONFLICT DO NOTHING;
|
|
3290
|
+
SELECT * INTO STRICT settlement FROM routes_transfer_subsidies
|
|
3291
|
+
WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
|
|
3292
|
+
IF settlement.destination_chain_id IS DISTINCT FROM NEW.subsidy_chain_id
|
|
3293
|
+
OR settlement.recipient IS DISTINCT FROM recipient
|
|
3294
|
+
OR settlement.token_address IS DISTINCT FROM token_address THEN
|
|
3295
|
+
RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
|
|
3296
|
+
END IF;
|
|
3297
|
+
IF settlement.status = 'expired'
|
|
3298
|
+
AND settlement.destination_chain_id LIKE 'solana:%'
|
|
3299
|
+
AND settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy' THEN
|
|
3300
|
+
IF settlement.transfer_id IS DISTINCT FROM NEW.id THEN
|
|
3301
|
+
RAISE EXCEPTION 'Only the subsidy owner may replace an expired settlement';
|
|
3302
|
+
END IF;
|
|
3303
|
+
expired_signed := (settlement.transaction #>> '{}')::jsonb;
|
|
3304
|
+
replacement_signed := (NEW.provider_state->>'transferSubsidy')::jsonb;
|
|
3305
|
+
IF expired_signed->>'account' IS DISTINCT FROM replacement_signed->>'account'
|
|
3306
|
+
OR expired_signed->>'amount' IS DISTINCT FROM replacement_signed->>'amount'
|
|
3307
|
+
OR expired_signed->>'chainId' IS DISTINCT FROM replacement_signed->>'chainId'
|
|
3308
|
+
OR replacement_signed->>'hash' IS DISTINCT FROM NEW.subsidy_transaction_hash THEN
|
|
3309
|
+
RAISE EXCEPTION 'Expired subsidy replacement changed settlement terms';
|
|
3310
|
+
END IF;
|
|
3311
|
+
UPDATE routes_transfer_subsidies SET
|
|
3312
|
+
transaction = NEW.provider_state->'transferSubsidy',
|
|
3313
|
+
created_at = NEW.updated_at,
|
|
3314
|
+
status = 'active'
|
|
3315
|
+
WHERE source_chain_id = source_chain AND transaction_ref = source_ref;
|
|
3316
|
+
ELSIF settlement.transaction IS DISTINCT FROM NEW.provider_state->'transferSubsidy' THEN
|
|
3317
|
+
RAISE EXCEPTION 'Source payment already has a different subsidy settlement';
|
|
3318
|
+
END IF;
|
|
3319
|
+
IF settlement.transfer_id <> NEW.id THEN
|
|
3320
|
+
NEW.subsidy_amount := NULL;
|
|
3321
|
+
NEW.subsidy_commitment_amount := NULL;
|
|
3322
|
+
NEW.subsidy_native_amount := NULL;
|
|
3323
|
+
END IF;
|
|
3324
|
+
RETURN NEW;
|
|
3325
|
+
END $capture$`,
|
|
3326
|
+
),
|
|
3327
|
+
},
|
|
3328
|
+
{
|
|
3329
|
+
name: '0298_routes_transfer_subsidies_status_check_schema',
|
|
3330
|
+
up: (db) =>
|
|
3331
|
+
raw(
|
|
3332
|
+
db,
|
|
3333
|
+
sql`DO $$ BEGIN
|
|
3334
|
+
IF NOT EXISTS (
|
|
3335
|
+
SELECT 1 FROM pg_constraint
|
|
3336
|
+
WHERE conname = 'routes_transfer_subsidies_status_check'
|
|
3337
|
+
AND conrelid = 'routes_transfer_subsidies'::regclass
|
|
3338
|
+
) THEN
|
|
3339
|
+
ALTER TABLE routes_transfer_subsidies
|
|
3340
|
+
ADD CONSTRAINT routes_transfer_subsidies_status_check
|
|
3341
|
+
CHECK (status IN ('active', 'expired'));
|
|
3342
|
+
END IF;
|
|
3343
|
+
END $$`,
|
|
3344
|
+
),
|
|
3345
|
+
},
|
|
3346
|
+
{
|
|
3347
|
+
name: '0299_verified_tokens_ousd',
|
|
3348
|
+
up: (db) =>
|
|
3349
|
+
raw(
|
|
3350
|
+
db,
|
|
3351
|
+
// Matches the verified-token publisher's "vtok" lock for Tempo mainnet.
|
|
3352
|
+
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$`,
|
|
3353
|
+
),
|
|
3354
|
+
},
|
|
3355
|
+
{
|
|
3356
|
+
name: '0300_reward_runs_latest_delivered_index',
|
|
3357
|
+
// Serves latest-run lookups per vault and phase without sorting every run.
|
|
3358
|
+
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
|
|
3359
|
+
},
|
|
3360
|
+
{
|
|
3361
|
+
name: '0301_verified_tokens_ousd_testnet',
|
|
3362
|
+
up: (db) =>
|
|
3363
|
+
raw(
|
|
3364
|
+
db,
|
|
3365
|
+
// Matches the verified-token publisher's "vtok" lock for Tempo testnet.
|
|
3366
|
+
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$`,
|
|
3367
|
+
),
|
|
3368
|
+
},
|
|
3369
|
+
{
|
|
3370
|
+
name: '0302_extend_d730_reward_campaign',
|
|
3371
|
+
up: (db) =>
|
|
3372
|
+
raw(
|
|
3373
|
+
db,
|
|
3374
|
+
// December 17, 2026 at noon EST. Preserve the delivered cursor so expired intervals accrue during catch-up.
|
|
3375
|
+
sql`DO $migration$
|
|
3376
|
+
DECLARE
|
|
3377
|
+
campaign reward_campaigns%ROWTYPE;
|
|
3378
|
+
replacement jsonb;
|
|
3379
|
+
capability text;
|
|
3380
|
+
BEGIN
|
|
3381
|
+
SELECT * INTO campaign FROM reward_campaigns
|
|
3382
|
+
WHERE chain_id = 4217 AND vault_address = '0xd730394f3bb85a4828e35fc5e361dcc9f894fa4f'
|
|
3383
|
+
FOR UPDATE;
|
|
3384
|
+
IF NOT FOUND THEN RETURN; END IF;
|
|
3385
|
+
|
|
3386
|
+
replacement := campaign.config;
|
|
3387
|
+
FOREACH capability IN ARRAY ARRAY['targetYield', 'boostRewards'] LOOP
|
|
3388
|
+
IF (replacement -> capability ->> 'endTimestamp')::bigint < 1797526800 THEN
|
|
3389
|
+
replacement := jsonb_set(replacement, ARRAY[capability, 'endTimestamp'], '1797526800'::jsonb);
|
|
3390
|
+
END IF;
|
|
3391
|
+
END LOOP;
|
|
3392
|
+
IF replacement = campaign.config THEN RETURN; END IF;
|
|
3393
|
+
|
|
3394
|
+
IF campaign.pending_config IS NOT NULL OR campaign.pending_effective_at IS NOT NULL THEN
|
|
3395
|
+
RAISE EXCEPTION 'Cannot extend d730 reward campaign: resolve the pending configuration before retrying migration';
|
|
3396
|
+
END IF;
|
|
3397
|
+
IF EXISTS (
|
|
3398
|
+
SELECT 1 FROM reward_runs
|
|
3399
|
+
WHERE chain_id = campaign.chain_id AND vault_address = campaign.vault_address
|
|
3400
|
+
AND (phase <> 'delivered' OR starts_after >= campaign.delivered_through)
|
|
3401
|
+
) THEN
|
|
3402
|
+
RAISE EXCEPTION 'Cannot extend d730 reward campaign: finish outstanding reward runs before retrying migration';
|
|
3403
|
+
END IF;
|
|
3404
|
+
|
|
3405
|
+
UPDATE reward_campaigns SET config = replacement,
|
|
3406
|
+
updated_at = to_char(clock_timestamp() AT TIME ZONE 'UTC', 'YYYY-MM-DD"T"HH24:MI:SS.MS"Z"')
|
|
3407
|
+
WHERE chain_id = campaign.chain_id AND vault_address = campaign.vault_address;
|
|
3408
|
+
END $migration$`,
|
|
3409
|
+
),
|
|
3410
|
+
},
|
|
2983
3411
|
]
|
|
2984
3412
|
|
|
2985
3413
|
/**
|
|
@@ -3004,9 +3432,78 @@ export function from(dialect: Dialect): Db {
|
|
|
3004
3432
|
return fromDialect(dialect)
|
|
3005
3433
|
}
|
|
3006
3434
|
|
|
3435
|
+
/**
|
|
3436
|
+
* Times executions that {@link observe} tagged. Acquisition (pool checkout,
|
|
3437
|
+
* connect) is charged to the connection's next query so cold connects count.
|
|
3438
|
+
*/
|
|
3439
|
+
function observeDriver(driver: Driver): Driver {
|
|
3440
|
+
const inner = new WeakMap<DatabaseConnection, DatabaseConnection>()
|
|
3441
|
+
const unwrap = (connection: DatabaseConnection) => inner.get(connection) ?? connection
|
|
3442
|
+
return {
|
|
3443
|
+
async acquireConnection() {
|
|
3444
|
+
const start = performance.now()
|
|
3445
|
+
const connection = await driver.acquireConnection()
|
|
3446
|
+
let pending = performance.now() - start
|
|
3447
|
+
const wrapped: DatabaseConnection = {
|
|
3448
|
+
async executeQuery(compiledQuery) {
|
|
3449
|
+
const onQuery = queryObservers.get(compiledQuery.queryId)
|
|
3450
|
+
if (!onQuery) return connection.executeQuery(compiledQuery)
|
|
3451
|
+
const acquired = pending
|
|
3452
|
+
pending = 0
|
|
3453
|
+
const started = performance.now()
|
|
3454
|
+
try {
|
|
3455
|
+
return await connection.executeQuery(compiledQuery)
|
|
3456
|
+
} finally {
|
|
3457
|
+
const query = performance.now() - started
|
|
3458
|
+
onQuery(acquired + query, { acquire: acquired, query })
|
|
3459
|
+
}
|
|
3460
|
+
},
|
|
3461
|
+
streamQuery(compiledQuery, chunkSize) {
|
|
3462
|
+
return connection.streamQuery(compiledQuery, chunkSize)
|
|
3463
|
+
},
|
|
3464
|
+
}
|
|
3465
|
+
inner.set(wrapped, connection)
|
|
3466
|
+
return wrapped
|
|
3467
|
+
},
|
|
3468
|
+
beginTransaction: (connection, settings) =>
|
|
3469
|
+
driver.beginTransaction(unwrap(connection), settings),
|
|
3470
|
+
commitTransaction: (connection) => driver.commitTransaction(unwrap(connection)),
|
|
3471
|
+
destroy: () => driver.destroy(),
|
|
3472
|
+
init: () => driver.init(),
|
|
3473
|
+
releaseConnection: (connection) => driver.releaseConnection(unwrap(connection)),
|
|
3474
|
+
rollbackTransaction: (connection) => driver.rollbackTransaction(unwrap(connection)),
|
|
3475
|
+
...(driver.releaseSavepoint
|
|
3476
|
+
? {
|
|
3477
|
+
releaseSavepoint: (connection, name, compile) =>
|
|
3478
|
+
driver.releaseSavepoint!(unwrap(connection), name, compile),
|
|
3479
|
+
}
|
|
3480
|
+
: {}),
|
|
3481
|
+
...(driver.rollbackToSavepoint
|
|
3482
|
+
? {
|
|
3483
|
+
rollbackToSavepoint: (connection, name, compile) =>
|
|
3484
|
+
driver.rollbackToSavepoint!(unwrap(connection), name, compile),
|
|
3485
|
+
}
|
|
3486
|
+
: {}),
|
|
3487
|
+
...(driver.savepoint
|
|
3488
|
+
? {
|
|
3489
|
+
savepoint: (connection, name, compile) =>
|
|
3490
|
+
driver.savepoint!(unwrap(connection), name, compile),
|
|
3491
|
+
}
|
|
3492
|
+
: {}),
|
|
3493
|
+
}
|
|
3494
|
+
}
|
|
3495
|
+
|
|
3007
3496
|
/** Builds a database with internal dialect-specific options. */
|
|
3008
3497
|
function fromDialect(dialect: Dialect, options: fromDialect.Options = {}): Db {
|
|
3009
|
-
|
|
3498
|
+
// Delegate method by method: the dialect is a class instance, so a spread
|
|
3499
|
+
// would drop its prototype methods.
|
|
3500
|
+
const observed: Dialect = {
|
|
3501
|
+
createAdapter: () => dialect.createAdapter(),
|
|
3502
|
+
createDriver: () => observeDriver(dialect.createDriver()),
|
|
3503
|
+
createIntrospector: (db) => dialect.createIntrospector(db),
|
|
3504
|
+
createQueryCompiler: () => dialect.createQueryCompiler(),
|
|
3505
|
+
}
|
|
3506
|
+
const root = new Kysely<Database>({ dialect: observed, plugins: [new CamelCasePlugin()] })
|
|
3010
3507
|
// Qualify repository queries instead of relying on session search_path;
|
|
3011
3508
|
// transaction poolers reset session state between statements.
|
|
3012
3509
|
const kysely = options.schema ? root.withPlugin(new WithSchemaPlugin(options.schema)) : root
|