tapimo 0.19.0 → 0.20.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 +13 -5
- package/dist/ApiKey.d.ts +2 -2
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +2 -2
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +85 -11
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +218 -56
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +12543 -13912
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +4 -5
- package/dist/App.js.map +1 -1
- package/dist/Scope.d.ts +12 -20
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +20 -36
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +871 -828
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +14 -26
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +93 -186
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +3 -5
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/audit-logs.d.ts +18 -18
- package/dist/admin/apps/audit-logs.js +1 -1
- package/dist/admin/apps/audit-logs.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +27 -27
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +11 -5
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts +17 -17
- package/dist/admin/apps/prop-amms.d.ts +4 -4
- package/dist/admin/apps/routes-support.js +1 -38
- package/dist/admin/apps/routes-support.js.map +1 -1
- package/dist/admin/apps/routes.d.ts +153 -153
- package/dist/admin/apps/sentinel.d.ts +4 -4
- package/dist/admin/apps/verified-tokens.d.ts +24 -24
- package/dist/admin/apps/zone-delegation-requests.d.ts +332 -0
- package/dist/admin/apps/zone-delegation-requests.d.ts.map +1 -0
- package/dist/admin/apps/zone-delegation-requests.js +200 -0
- package/dist/admin/apps/zone-delegation-requests.js.map +1 -0
- package/dist/admin/apps/zone-delegations.d.ts +512 -52
- package/dist/admin/apps/zone-delegations.d.ts.map +1 -1
- package/dist/admin/apps/zone-delegations.js +134 -44
- package/dist/admin/apps/zone-delegations.js.map +1 -1
- package/dist/admin/index.d.ts +1 -1
- package/dist/admin/index.d.ts.map +1 -1
- package/dist/admin/index.js +1 -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 +341 -397
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +4 -2
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/data/App.d.ts +11932 -13214
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +32 -13
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +1 -1
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -1
- package/dist/apps/data/ZoneSelection.js +2 -2
- package/dist/apps/data/ZoneSelection.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +60 -27
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +91 -16
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +893 -875
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +36 -36
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +3 -1
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +40 -40
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +3 -7
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +236 -236
- package/dist/apps/data/routes/earn-transactions.d.ts +14 -14
- package/dist/apps/data/routes/earn.d.ts +261 -1445
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +64 -490
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +144 -144
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +5 -15
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +3 -9
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +13 -13
- package/dist/apps/data/routes/receipts.d.ts +53 -53
- package/dist/apps/data/routes/receipts.js +1 -1
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.d.ts +52 -0
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +19 -18
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +14 -14
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +1 -3
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +7 -5
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +281 -281
- package/dist/apps/data/routes/transactions.js +3 -3
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +12 -12
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +1 -3
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +30 -30
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +1 -3
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +86 -86
- package/dist/apps/data/routes/webhooks.d.ts +102 -102
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +9 -23
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zone-deposits.d.ts +16 -16
- package/dist/apps/data/routes/zone-withdrawals.d.ts +31 -31
- package/dist/apps/data/routes/zones.d.ts +28 -28
- package/dist/apps/management/App.d.ts +18 -102
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/App.js +1 -1
- package/dist/apps/management/App.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +253 -339
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +25 -11
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +92 -92
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +5 -13
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/cli.d.ts.map +1 -1
- package/dist/apps/management/routes/cli.js +3 -9
- package/dist/apps/management/routes/cli.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +16 -16
- package/dist/apps/management/routes/fee-payer-usage.d.ts +38 -38
- package/dist/apps/management/routes/fee-payer-usage.d.ts.map +1 -1
- package/dist/apps/management/routes/fee-payer-usage.js +2 -4
- package/dist/apps/management/routes/fee-payer-usage.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +52 -52
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +4 -12
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
- package/dist/apps/management/routes/invite-links.js +6 -14
- package/dist/apps/management/routes/invite-links.js.map +1 -1
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/me.d.ts.map +1 -1
- package/dist/apps/management/routes/me.js +3 -7
- package/dist/apps/management/routes/me.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +84 -84
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +2 -4
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +44 -44
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +2 -6
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +2 -6
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/route-usage.d.ts +34 -34
- package/dist/apps/management/routes/route-usage.d.ts.map +1 -1
- package/dist/apps/management/routes/route-usage.js +2 -4
- package/dist/apps/management/routes/route-usage.js.map +1 -1
- package/dist/apps/management/routes/routes-access-requests.d.ts +120 -91
- package/dist/apps/management/routes/routes-access-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/routes-access-requests.js +49 -9
- package/dist/apps/management/routes/routes-access-requests.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +8 -16
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +39 -39
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +3 -7
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +2089 -2089
- package/dist/apps/management/routes/zone-delegations.d.ts +14 -17
- package/dist/apps/management/routes/zone-delegations.d.ts.map +1 -1
- package/dist/apps/management/routes/zone-delegations.js +1 -6
- package/dist/apps/management/routes/zone-delegations.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +44 -44
- package/dist/apps/mpp/App.js +3 -3
- package/dist/apps/mpp/App.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +1 -1
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/apps/mpp/internal/Error.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Error.js +1 -0
- package/dist/apps/mpp/internal/Error.js.map +1 -1
- package/dist/apps/mpp/internal/Policy.d.ts +5 -1
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Policy.js +35 -13
- package/dist/apps/mpp/internal/Policy.js.map +1 -1
- package/dist/apps/relay/App.d.ts +2 -2
- package/dist/apps/relay/App.d.ts.map +1 -1
- package/dist/apps/relay/App.js +25 -16
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/routes/App.d.ts +311 -311
- package/dist/apps/routes/routes/deposit-addresses.d.ts +1099 -1099
- package/dist/apps/routes/routes/list.d.ts +74 -74
- package/dist/apps/routes/routes/transfers.d.ts +94 -94
- package/dist/cli/ApiKeys.d.ts +19 -26
- package/dist/cli/ApiKeys.d.ts.map +1 -1
- package/dist/db/Db.d.ts +3 -3
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +27 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +28 -62
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +18 -18
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/rewardRuns.d.ts +21 -0
- package/dist/db/tables/rewardRuns.d.ts.map +1 -1
- package/dist/db/tables/rewardRuns.js +19 -0
- package/dist/db/tables/rewardRuns.js.map +1 -1
- package/dist/db/tables/routesAccessRequests.d.ts +13 -0
- package/dist/db/tables/routesAccessRequests.d.ts.map +1 -1
- package/dist/db/tables/routesAccessRequests.js +12 -0
- package/dist/db/tables/routesAccessRequests.js.map +1 -1
- package/dist/db/tables/zoneDelegationRequests.d.ts +165 -0
- package/dist/db/tables/zoneDelegationRequests.d.ts.map +1 -0
- package/dist/db/tables/{zoneKeyRequests.js → zoneDelegationRequests.js} +43 -42
- package/dist/db/tables/zoneDelegationRequests.js.map +1 -0
- package/dist/db/tables/zoneDelegations.d.ts +11 -5
- package/dist/db/tables/zoneDelegations.d.ts.map +1 -1
- package/dist/db/tables/zoneDelegations.js +21 -3
- package/dist/db/tables/zoneDelegations.js.map +1 -1
- package/dist/handlers/internal/accounts.d.ts +7 -0
- package/dist/handlers/internal/accounts.d.ts.map +1 -0
- package/dist/handlers/internal/{multisig.js → accounts.js} +10 -10
- package/dist/handlers/internal/{multisig.js.map → accounts.js.map} +1 -1
- package/dist/handlers/internal/sponsorship.js +17 -17
- package/dist/handlers/internal/sponsorship.js.map +1 -1
- package/dist/handlers/relay.d.ts +6 -6
- package/dist/handlers/relay.d.ts.map +1 -1
- package/dist/handlers/relay.js +15 -15
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +4 -8
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/EarnRates.d.ts.map +1 -1
- package/dist/internal/EarnRates.js +1 -3
- package/dist/internal/EarnRates.js.map +1 -1
- package/dist/internal/EarnVaults.js +2 -2
- package/dist/internal/Log.d.ts +2 -4
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +0 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/Response.d.ts +1 -1
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Response.js +0 -3
- package/dist/internal/Response.js.map +1 -1
- package/dist/internal/Schema.d.ts +11 -0
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +24 -1
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/ZoneAccess.d.ts +70 -35
- package/dist/internal/ZoneAccess.d.ts.map +1 -1
- package/dist/internal/ZoneAccess.js +312 -131
- package/dist/internal/ZoneAccess.js.map +1 -1
- package/dist/internal/ZoneDelegation.d.ts +7 -19
- package/dist/internal/ZoneDelegation.d.ts.map +1 -1
- package/dist/internal/ZoneDelegation.js +8 -29
- package/dist/internal/ZoneDelegation.js.map +1 -1
- package/dist/internal/{ZoneKeyApproval.d.ts → ZoneDelegationApproval.d.ts} +3 -5
- package/dist/internal/ZoneDelegationApproval.d.ts.map +1 -0
- package/dist/internal/ZoneDelegationApproval.js +16 -0
- package/dist/internal/ZoneDelegationApproval.js.map +1 -0
- package/dist/internal/ZoneKeyRewrite.d.ts +98 -0
- package/dist/internal/ZoneKeyRewrite.d.ts.map +1 -0
- package/dist/internal/ZoneKeyRewrite.js +151 -0
- package/dist/internal/ZoneKeyRewrite.js.map +1 -0
- package/dist/internal/rewards/Campaigns.d.ts +2 -0
- package/dist/internal/rewards/Campaigns.d.ts.map +1 -1
- package/dist/internal/rewards/Campaigns.js.map +1 -1
- package/dist/internal/rewards/Distributions.d.ts.map +1 -1
- package/dist/internal/rewards/Distributions.js +2 -6
- package/dist/internal/rewards/Distributions.js.map +1 -1
- package/dist/internal/rewards/Monitor.d.ts +4 -1
- package/dist/internal/rewards/Monitor.d.ts.map +1 -1
- package/dist/internal/rewards/Monitor.js +19 -2
- package/dist/internal/rewards/Monitor.js.map +1 -1
- package/dist/internal/rewards/Runner.d.ts.map +1 -1
- package/dist/internal/rewards/Runner.js +9 -1
- package/dist/internal/rewards/Runner.js.map +1 -1
- package/dist/internal/routes/Action.d.ts.map +1 -1
- package/dist/internal/routes/Action.js +2 -3
- package/dist/internal/routes/Action.js.map +1 -1
- package/dist/internal/routes/Deposit.d.ts.map +1 -1
- package/dist/internal/routes/Deposit.js +2 -6
- package/dist/internal/routes/Deposit.js.map +1 -1
- package/dist/internal/routes/DepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/DepositAddress.js +4 -10
- package/dist/internal/routes/DepositAddress.js.map +1 -1
- package/dist/internal/routes/Policy.d.ts.map +1 -1
- package/dist/internal/routes/Policy.js +2 -1
- package/dist/internal/routes/Policy.js.map +1 -1
- package/dist/internal/routes/Provider.js +8 -8
- package/dist/internal/routes/Provider.js.map +1 -1
- package/dist/internal/routes/Reconciliation.d.ts.map +1 -1
- package/dist/internal/routes/Reconciliation.js +3 -2
- package/dist/internal/routes/Reconciliation.js.map +1 -1
- package/dist/internal/routes/Transfer.d.ts.map +1 -1
- package/dist/internal/routes/Transfer.js +4 -12
- package/dist/internal/routes/Transfer.js.map +1 -1
- package/dist/internal/routes/UniversalDepositAddress.d.ts.map +1 -1
- package/dist/internal/routes/UniversalDepositAddress.js +3 -6
- package/dist/internal/routes/UniversalDepositAddress.js.map +1 -1
- package/dist/internal/routes/providers/SquidOrder.d.ts.map +1 -1
- package/dist/internal/routes/providers/SquidOrder.js +3 -2
- package/dist/internal/routes/providers/SquidOrder.js.map +1 -1
- package/dist/internal/routes/providers/relay.d.ts.map +1 -1
- package/dist/internal/routes/providers/relay.js +4 -3
- package/dist/internal/routes/providers/relay.js.map +1 -1
- package/package.json +20 -5
- package/src/ApiKey.ts +2 -2
- package/src/ApiKeys.test.ts +284 -51
- package/src/ApiKeys.ts +297 -64
- package/src/App.ts +4 -5
- package/src/Client.test-d.ts +33 -126
- package/src/Scope.test.ts +26 -45
- package/src/Scope.ts +24 -37
- package/src/admin/App.test.ts +51 -4
- package/src/admin/App.ts +25 -33
- package/src/admin/Mcp.test.ts +2 -1
- package/src/admin/apps/api-keys.test.ts +90 -20
- package/src/admin/apps/api-keys.ts +5 -8
- package/src/admin/apps/audit-logs.ts +1 -1
- package/src/admin/apps/earn-vaults.test.ts +19 -19
- package/src/admin/apps/earn-vaults.ts +11 -5
- package/src/admin/apps/routes-support.test.ts +254 -3
- package/src/admin/apps/routes-support.ts +1 -44
- package/src/admin/apps/scopes.test.ts +3 -3
- package/src/admin/apps/zone-delegation-requests.test.ts +246 -0
- package/src/admin/apps/zone-delegation-requests.ts +240 -0
- package/src/admin/apps/zone-delegations.test.ts +218 -58
- package/src/admin/apps/zone-delegations.ts +146 -46
- package/src/admin/index.ts +1 -1
- package/src/admin/ui/src/components/ApiKeyForm.tsx +4 -3
- package/src/admin/ui/src/lib/config.ts +3 -3
- package/src/admin/ui/src/lib/query-client.ts +1 -1
- package/src/admin/ui/src/lib/review-queues.ts +10 -10
- package/src/admin/ui/src/lib/routes-setup.test.ts +1 -2
- package/src/admin/ui/src/lib/routes-setup.ts +3 -5
- package/src/admin/ui/src/lib/scopes.test.ts +3 -6
- package/src/admin/ui/src/lib/scopes.ts +2 -9
- package/src/admin/ui/src/lib/{zone-key-requests.ts → zone-delegation-requests.ts} +27 -31
- package/src/admin/ui/src/routeTree.gen.ts +17 -17
- package/src/admin/ui/src/routes/__root.tsx +1 -1
- package/src/admin/ui/src/routes/api-keys.tsx +2 -15
- package/src/admin/ui/src/routes/audit-logs.tsx +2 -2
- package/src/admin/ui/src/routes/index.tsx +11 -11
- package/src/admin/ui/src/routes/organizations.tsx +3 -1
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +3 -1
- package/src/admin/ui/src/routes/organizations_.$orgId_.setup.tsx +1 -3
- package/src/admin/ui/src/routes/{zone-key-requests.tsx → zone-delegation-requests.tsx} +228 -172
- package/src/admin/ui/vite.config.ts +14 -1
- package/src/admin/ui.generated.ts +412 -583
- package/src/analytics/tables/requestEvents.test.ts +13 -3
- package/src/analytics/tables/requestEvents.ts +4 -3
- package/src/apps/data/App.test.ts +72 -35
- package/src/apps/data/App.ts +29 -13
- package/src/apps/data/ZoneSelection.test.ts +53 -70
- package/src/apps/data/ZoneSelection.ts +2 -2
- package/src/apps/data/routes/activities.test.ts +140 -6
- package/src/apps/data/routes/activities.ts +124 -18
- package/src/apps/data/routes/balances.ts +5 -1
- package/src/apps/data/routes/blocks.ts +9 -13
- package/src/apps/data/routes/earn-transactions.local.test.ts +6 -1
- package/src/apps/data/routes/earn-transactions.test.ts +7 -3
- package/src/apps/data/routes/earn.bench.ts +0 -14
- package/src/apps/data/routes/earn.discovery.test.ts +4 -39
- package/src/apps/data/routes/earn.local.test.ts +27 -34
- package/src/apps/data/routes/earn.test.ts +172 -490
- package/src/apps/data/routes/earn.ts +103 -652
- package/src/apps/data/routes/exchanges.ts +20 -30
- package/src/apps/data/routes/fee-amm.ts +12 -18
- package/src/apps/data/routes/indexer.test.ts +14 -12
- package/src/apps/data/routes/receipts.ts +1 -1
- package/src/apps/data/routes/rpc.test.ts +23 -18
- package/src/apps/data/routes/rpc.ts +21 -21
- package/src/apps/data/routes/rpc.zone.test.ts +60 -6
- package/src/apps/data/routes/tokenlist.ts +4 -6
- package/src/apps/data/routes/tokens.test.ts +20 -0
- package/src/apps/data/routes/tokens.ts +10 -5
- package/src/apps/data/routes/transactions.ts +3 -3
- package/src/apps/data/routes/transfers.ts +4 -6
- package/src/apps/data/routes/valuation.test.ts +2 -4
- package/src/apps/data/routes/valuation.ts +4 -6
- package/src/apps/data/routes/webhooks.test.ts +1 -5
- package/src/apps/data/routes/webhooks.ts +30 -44
- package/src/apps/data/routes/zones.test.ts +35 -19
- package/src/apps/management/App.ts +3 -1
- package/src/apps/management/routes/api-keys.test.ts +112 -22
- package/src/apps/management/routes/api-keys.ts +30 -15
- package/src/apps/management/routes/billing.ts +17 -25
- package/src/apps/management/routes/cli.ts +12 -18
- package/src/apps/management/routes/fee-payer-usage.ts +5 -4
- package/src/apps/management/routes/invitations.ts +16 -21
- package/src/apps/management/routes/invite-links.ts +18 -26
- package/src/apps/management/routes/me.ts +9 -13
- package/src/apps/management/routes/members.ts +5 -7
- package/src/apps/management/routes/orgs.ts +8 -12
- package/src/apps/management/routes/projects.ts +8 -12
- package/src/apps/management/routes/route-usage.ts +5 -4
- package/src/apps/management/routes/routes-access-requests.test.ts +64 -2
- package/src/apps/management/routes/routes-access-requests.ts +99 -15
- package/src/apps/management/routes/scopes.test.ts +3 -3
- package/src/apps/management/routes/usage.ts +20 -28
- package/src/apps/management/routes/verified-token-requests.ts +9 -13
- package/src/apps/management/routes/zone-delegations.test.ts +3 -5
- package/src/apps/management/routes/zone-delegations.ts +4 -9
- package/src/apps/mpp/App.ts +3 -3
- package/src/apps/mpp/Mpp.zone.test.ts +49 -18
- package/src/apps/mpp/internal/Adapter.ts +1 -1
- package/src/apps/mpp/internal/Error.test.ts +3 -0
- package/src/apps/mpp/internal/Error.ts +1 -0
- package/src/apps/mpp/internal/Policy.test.ts +9 -8
- package/src/apps/mpp/internal/Policy.ts +37 -14
- package/src/apps/relay/App.sandbox.test.ts +15 -14
- package/src/apps/relay/App.test.ts +120 -61
- package/src/apps/relay/App.ts +28 -18
- package/src/apps/relay/App.zone-billing.test.ts +9 -4
- package/src/apps/routes/App.test.ts +21 -22
- package/src/db/Db.ts +34 -3
- package/src/db/Schema.ts +26 -26
- package/src/db/tables/rewardRuns.ts +39 -0
- package/src/db/tables/routesAccessRequests.test.ts +65 -0
- package/src/db/tables/routesAccessRequests.ts +25 -0
- package/src/db/tables/{zoneKeyRequests.test.ts → zoneDelegationRequests.test.ts} +36 -77
- package/src/db/tables/{zoneKeyRequests.ts → zoneDelegationRequests.ts} +69 -52
- package/src/db/tables/zoneDelegations.test.ts +5 -6
- package/src/db/tables/zoneDelegations.ts +25 -8
- package/src/handlers/internal/{multisig.store.test.ts → accounts.store.test.ts} +16 -16
- package/src/handlers/internal/{multisig.test.ts → accounts.test.ts} +85 -82
- package/src/handlers/internal/{multisig.ts → accounts.ts} +9 -9
- package/src/handlers/internal/sponsorship.ts +20 -20
- package/src/handlers/relay.test.ts +48 -46
- package/src/handlers/relay.ts +26 -26
- package/src/internal/Auth.test.ts +6 -2
- package/src/internal/Auth.ts +4 -10
- package/src/internal/EarnRates.ts +4 -6
- package/src/internal/EarnVaults.ts +2 -2
- package/src/internal/Log.test-d.ts +1 -0
- package/src/internal/Log.test.ts +4 -6
- package/src/internal/Log.ts +2 -6
- package/src/internal/Response.ts +0 -3
- package/src/internal/Schema.test.ts +42 -0
- package/src/internal/Schema.ts +36 -1
- package/src/internal/ZoneAccess.test.ts +515 -312
- package/src/internal/ZoneAccess.ts +410 -158
- package/src/internal/ZoneDelegation.test.ts +1 -41
- package/src/internal/ZoneDelegation.ts +10 -48
- package/src/internal/ZoneDelegationApproval.test.ts +22 -0
- package/src/internal/{ZoneKeyApproval.ts → ZoneDelegationApproval.ts} +4 -11
- package/src/internal/ZoneKeyRewrite.ts +231 -0
- package/src/internal/rewards/Campaigns.ts +2 -0
- package/src/internal/rewards/Distributions.ts +8 -12
- package/src/internal/rewards/Monitor.test.ts +64 -0
- package/src/internal/rewards/Monitor.ts +27 -4
- package/src/internal/rewards/Runner.ts +9 -1
- package/src/internal/routes/Action.ts +5 -6
- package/src/internal/routes/Deposit.ts +8 -12
- package/src/internal/routes/DepositAddress.ts +13 -19
- package/src/internal/routes/Policy.ts +2 -1
- package/src/internal/routes/Provider.ts +8 -8
- package/src/internal/routes/Reconciliation.ts +3 -2
- package/src/internal/routes/Transfer.ts +16 -24
- package/src/internal/routes/UniversalDepositAddress.ts +9 -12
- package/src/internal/routes/providers/SquidOrder.ts +3 -2
- package/src/internal/routes/providers/relay.ts +4 -3
- package/dist/admin/apps/zone-key-requests.d.ts +0 -406
- package/dist/admin/apps/zone-key-requests.d.ts.map +0 -1
- package/dist/admin/apps/zone-key-requests.js +0 -183
- package/dist/admin/apps/zone-key-requests.js.map +0 -1
- package/dist/db/tables/zoneKeyRequests.d.ts +0 -289
- package/dist/db/tables/zoneKeyRequests.d.ts.map +0 -1
- package/dist/db/tables/zoneKeyRequests.js.map +0 -1
- package/dist/handlers/internal/multisig.d.ts +0 -7
- package/dist/handlers/internal/multisig.d.ts.map +0 -1
- package/dist/internal/ZoneKeyApproval.d.ts.map +0 -1
- package/dist/internal/ZoneKeyApproval.js +0 -21
- package/dist/internal/ZoneKeyApproval.js.map +0 -1
- package/src/admin/apps/zone-key-requests.test.ts +0 -272
- package/src/admin/apps/zone-key-requests.ts +0 -231
- package/src/internal/ZoneKeyApproval.test.ts +0 -46
|
@@ -804,7 +804,9 @@ describe('digest', () => {
|
|
|
804
804
|
evidence: {
|
|
805
805
|
appliedTargetRateBps: 400,
|
|
806
806
|
targetFundingAssets: ['3000000'],
|
|
807
|
+
// A run delivered before `deliveredAt` was recorded keeps its closing-boundary window.
|
|
807
808
|
treasuryPaidAssets: '250000',
|
|
809
|
+
treasuryPayoutTransactionHash: `0x${'ab'.repeat(32)}`,
|
|
808
810
|
treasuryPendingAssets: '1000000',
|
|
809
811
|
},
|
|
810
812
|
startsAfter: 2_000_000_000,
|
|
@@ -831,6 +833,9 @@ describe('digest', () => {
|
|
|
831
833
|
"targetFundedAssets": 3000000n,
|
|
832
834
|
"targetRateBps": 400,
|
|
833
835
|
"treasuryPaidAssets": 250000n,
|
|
836
|
+
"treasuryPayoutTransactionHashes": [
|
|
837
|
+
"0xabababababababababababababababababababababababababababababababab",
|
|
838
|
+
],
|
|
834
839
|
"vaultAddress": "0x1000000000000000000000000000000000000001",
|
|
835
840
|
"vaultLabel": "Monitor test vault",
|
|
836
841
|
},
|
|
@@ -839,6 +844,65 @@ describe('digest', () => {
|
|
|
839
844
|
})
|
|
840
845
|
})
|
|
841
846
|
|
|
847
|
+
describe('digest: late treasury payout', () => {
|
|
848
|
+
test('reports a payout in the window it was delivered, not the one its run closed in', async () => {
|
|
849
|
+
const db = TestApp.database()
|
|
850
|
+
await seedCampaign(db, { chainId: 4217 })
|
|
851
|
+
// The run closed inside the first window and was delivered 200 seconds before its boundary, inside the settling margin.
|
|
852
|
+
await deliver(db, {
|
|
853
|
+
chainId: 4217,
|
|
854
|
+
endsAt: 2_000_000_300,
|
|
855
|
+
evidence: {
|
|
856
|
+
deliveredAt: 2_000_000_500,
|
|
857
|
+
treasuryPaidAssets: '250000',
|
|
858
|
+
treasuryPayoutTransactionHash: `0x${'ab'.repeat(32)}`,
|
|
859
|
+
},
|
|
860
|
+
startsAfter: 2_000_000_000,
|
|
861
|
+
})
|
|
862
|
+
const treasury = (campaigns: Monitor.digest.Campaign[]) =>
|
|
863
|
+
campaigns.map(({ treasuryPaidAssets, treasuryPayoutTransactionHashes }) => ({
|
|
864
|
+
treasuryPaidAssets,
|
|
865
|
+
treasuryPayoutTransactionHashes,
|
|
866
|
+
}))
|
|
867
|
+
|
|
868
|
+
const [closed, delivered] = await Promise.all([
|
|
869
|
+
Monitor.digest(db, { chainId: 4217, now: 2_000_000_700, since: 1_999_986_000 }),
|
|
870
|
+
Monitor.digest(db, { chainId: 4217, now: 2_000_086_400, since: 2_000_000_700 }),
|
|
871
|
+
])
|
|
872
|
+
expect([treasury(closed), treasury(delivered)]).toStrictEqual([
|
|
873
|
+
[{ treasuryPaidAssets: 0n, treasuryPayoutTransactionHashes: [] }],
|
|
874
|
+
[
|
|
875
|
+
{
|
|
876
|
+
treasuryPaidAssets: 250_000n,
|
|
877
|
+
treasuryPayoutTransactionHashes: [`0x${'ab'.repeat(32)}`],
|
|
878
|
+
},
|
|
879
|
+
],
|
|
880
|
+
])
|
|
881
|
+
})
|
|
882
|
+
})
|
|
883
|
+
|
|
884
|
+
describe('digest: paused late treasury payout', () => {
|
|
885
|
+
test('reports a paused campaign payout delivered in the window after its run closed', async () => {
|
|
886
|
+
const db = TestApp.database()
|
|
887
|
+
await seedCampaign(db, { chainId: 4217 })
|
|
888
|
+
await deliver(db, {
|
|
889
|
+
chainId: 4217,
|
|
890
|
+
endsAt: 2_000_000_300,
|
|
891
|
+
evidence: {
|
|
892
|
+
deliveredAt: 2_000_000_500,
|
|
893
|
+
treasuryPaidAssets: '250000',
|
|
894
|
+
treasuryPayoutTransactionHash: `0x${'ab'.repeat(32)}`,
|
|
895
|
+
},
|
|
896
|
+
startsAfter: 2_000_000_000,
|
|
897
|
+
})
|
|
898
|
+
await RewardCampaigns.setPaused(db, { chainId: 4217, paused: true, vaultAddress })
|
|
899
|
+
|
|
900
|
+
await expect(
|
|
901
|
+
Monitor.digest(db, { chainId: 4217, now: 2_000_086_400, since: 2_000_000_400 }),
|
|
902
|
+
).resolves.toMatchObject([{ runs: 0, treasuryPaidAssets: 250_000n }])
|
|
903
|
+
})
|
|
904
|
+
})
|
|
905
|
+
|
|
842
906
|
describe('digest: paused', () => {
|
|
843
907
|
test('keeps runs a paused campaign delivered in the window, then drops it', async () => {
|
|
844
908
|
const db = TestApp.database()
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import type { Hex } from 'ox'
|
|
1
2
|
import { erc20Abi, getAddress, type Address } from 'viem'
|
|
2
3
|
|
|
3
4
|
import * as ApiKey from '../../ApiKey.js'
|
|
@@ -12,6 +13,9 @@ import * as Campaigns from './Campaigns.js'
|
|
|
12
13
|
const day = 86_400
|
|
13
14
|
const reminderSeconds = 3_600
|
|
14
15
|
const lagWarningSeconds = 1_800
|
|
16
|
+
// A delivery transaction cannot outlive its 15-minute queue invocation, so one stamped before a
|
|
17
|
+
// boundary has committed or rolled back by the time a digest reads past this margin.
|
|
18
|
+
const deliverySettlingSeconds = 900
|
|
15
19
|
const recoveryLeaseSeconds = 300
|
|
16
20
|
// Cron invocations stop within 15 minutes, so a 30-minute lease never lapses while its holder runs.
|
|
17
21
|
const digestLeaseSeconds = 1_800
|
|
@@ -741,7 +745,7 @@ export function digestBoundary(now: number): number {
|
|
|
741
745
|
/** Summarizes each active campaign's runs between two digest boundaries; a paused campaign appears only for runs it delivered. */
|
|
742
746
|
export async function digest(db: Db.Db, options: digest.Options): Promise<digest.Campaign[]> {
|
|
743
747
|
const { since } = options
|
|
744
|
-
const [campaigns, activity, recent, before] = await Promise.all([
|
|
748
|
+
const [campaigns, activity, recent, before, treasuryPayouts] = await Promise.all([
|
|
745
749
|
RewardCampaigns.listForChain(db, options),
|
|
746
750
|
RewardRuns.listDeliveredSince(db, { chainId: options.chainId, since }),
|
|
747
751
|
// Catch-up runs with old accounting boundaries still show a campaign was active in the window.
|
|
@@ -751,13 +755,22 @@ export async function digest(db: Db.Db, options: digest.Options): Promise<digest
|
|
|
751
755
|
chainId: options.chainId,
|
|
752
756
|
deliveredBy: options.now,
|
|
753
757
|
}),
|
|
758
|
+
// A payout run delivered after its accounting window's digest still reports once, in the window it was delivered.
|
|
759
|
+
RewardRuns.listTreasuryPayoutsDelivered(db, {
|
|
760
|
+
chainId: options.chainId,
|
|
761
|
+
settlingSeconds: deliverySettlingSeconds,
|
|
762
|
+
since,
|
|
763
|
+
until: options.now,
|
|
764
|
+
}),
|
|
754
765
|
])
|
|
755
766
|
// A campaign belongs to the digest when it delivered by the boundary, or was running then (created, started, incomplete).
|
|
756
767
|
// A paused campaign stays in only for runs it delivered in the window, so pausing never hides them.
|
|
757
768
|
const active = campaigns.filter((campaign) => {
|
|
758
|
-
const ran = (run:
|
|
769
|
+
const ran = (run: { vaultAddress: string }) =>
|
|
759
770
|
sameAddress(run.vaultAddress, campaign.vaultAddress)
|
|
760
771
|
if (activity.some((run) => ran(run) && Number(run.endsAt) < options.now)) return true
|
|
772
|
+
// A payout delivered in the window reports even when its run closed earlier and the campaign is now paused.
|
|
773
|
+
if (treasuryPayouts.some(ran)) return true
|
|
761
774
|
if (campaign.paused) return false
|
|
762
775
|
// A replacement promoted after the boundary must not hide the configuration that was running at it.
|
|
763
776
|
const prior = before.find((run) => sameAddress(run.vaultAddress, campaign.vaultAddress))
|
|
@@ -780,6 +793,9 @@ export async function digest(db: Db.Db, options: digest.Options): Promise<digest
|
|
|
780
793
|
(run) =>
|
|
781
794
|
sameAddress(run.vaultAddress, campaign.vaultAddress) && Number(run.endsAt) < options.now,
|
|
782
795
|
)
|
|
796
|
+
const payouts = treasuryPayouts.filter((run) =>
|
|
797
|
+
sameAddress(run.vaultAddress, campaign.vaultAddress),
|
|
798
|
+
)
|
|
783
799
|
const [vault, failing] = await Promise.all([
|
|
784
800
|
EarnVaultRecords.get(db, campaign),
|
|
785
801
|
RewardMonitorStates.get<failure.State>(db, failureKey(campaign)),
|
|
@@ -825,7 +841,12 @@ export async function digest(db: Db.Db, options: digest.Options): Promise<digest
|
|
|
825
841
|
staleRates: [...new Set(runs.flatMap((run) => run.evidence?.staleRates ?? []))].sort(),
|
|
826
842
|
targetFundedAssets: sum(runs.flatMap((run) => run.evidence?.targetFundingAssets ?? [])),
|
|
827
843
|
...(targetRate !== undefined ? { targetRateBps: targetRate } : {}),
|
|
828
|
-
treasuryPaidAssets: sum(
|
|
844
|
+
treasuryPaidAssets: sum(payouts.map((run) => run.evidence?.treasuryPaidAssets)),
|
|
845
|
+
treasuryPayoutTransactionHashes: payouts.flatMap((run) =>
|
|
846
|
+
run.evidence?.treasuryPayoutTransactionHash
|
|
847
|
+
? [run.evidence.treasuryPayoutTransactionHash]
|
|
848
|
+
: [],
|
|
849
|
+
),
|
|
829
850
|
vaultAddress: getAddress(campaign.vaultAddress),
|
|
830
851
|
vaultLabel: vault?.label ?? campaign.vaultAddress,
|
|
831
852
|
}
|
|
@@ -866,8 +887,10 @@ export declare namespace digest {
|
|
|
866
887
|
targetFundedAssets: bigint
|
|
867
888
|
/** Latest applied target rate. */
|
|
868
889
|
targetRateBps?: number | undefined
|
|
869
|
-
/** Treasury
|
|
890
|
+
/** Treasury assets paid by runs delivered in the window. */
|
|
870
891
|
treasuryPaidAssets: bigint
|
|
892
|
+
/** Treasury payout transactions delivered in the window, oldest first. */
|
|
893
|
+
treasuryPayoutTransactionHashes: readonly Hex.Hex[]
|
|
871
894
|
/** EarnVault identifying the campaign. */
|
|
872
895
|
vaultAddress: Address
|
|
873
896
|
/** Curated vault label. */
|
|
@@ -2478,7 +2478,15 @@ async function commit(
|
|
|
2478
2478
|
id: runRecord.id,
|
|
2479
2479
|
patch: {
|
|
2480
2480
|
error: null,
|
|
2481
|
-
|
|
2481
|
+
// Lease renewals rewrite `updatedAt` after delivery, so reporting windows read this fixed time.
|
|
2482
|
+
...(current?.evidence
|
|
2483
|
+
? {
|
|
2484
|
+
evidence: {
|
|
2485
|
+
...Campaigns.compactEvidence(current.evidence),
|
|
2486
|
+
deliveredAt: Math.floor(Date.now() / 1_000),
|
|
2487
|
+
},
|
|
2488
|
+
}
|
|
2489
|
+
: {}),
|
|
2482
2490
|
},
|
|
2483
2491
|
phase: 'delivered',
|
|
2484
2492
|
})
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { AbiFunction, Address, type Hex, Solidity } from 'ox'
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
|
+
import * as Schema from '../Schema.js'
|
|
4
5
|
import * as OpenApi from '../OpenApi.js'
|
|
5
6
|
import * as Tron from '../Tron.js'
|
|
6
7
|
|
|
@@ -111,12 +112,10 @@ export namespace schema {
|
|
|
111
112
|
z
|
|
112
113
|
.object({
|
|
113
114
|
action: EvmCalls,
|
|
114
|
-
availableAt:
|
|
115
|
-
.
|
|
116
|
-
.
|
|
117
|
-
|
|
118
|
-
z.meta({ examples: ['2026-10-11T00:00:00.000Z'] }),
|
|
119
|
-
),
|
|
115
|
+
availableAt: Schema.dateTime().check(
|
|
116
|
+
z.describe('Earliest timestamp for fixed-beneficiary recovery.'),
|
|
117
|
+
z.meta({ examples: ['2026-10-11T00:00:00.000Z'] }),
|
|
118
|
+
),
|
|
120
119
|
chainId: z
|
|
121
120
|
.literal('eip155:4217')
|
|
122
121
|
.check(
|
|
@@ -204,12 +204,10 @@ export namespace schema {
|
|
|
204
204
|
export const RoutesDeposit = OpenApi.component(
|
|
205
205
|
z
|
|
206
206
|
.object({
|
|
207
|
-
createdAt:
|
|
208
|
-
.
|
|
209
|
-
.
|
|
210
|
-
|
|
211
|
-
z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
|
|
212
|
-
),
|
|
207
|
+
createdAt: Schema.dateTime().check(
|
|
208
|
+
z.describe('When the deposit was first detected (ISO 8601).'),
|
|
209
|
+
z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
|
|
210
|
+
),
|
|
213
211
|
depositAddressId: Snapshot.shape.depositAddressId,
|
|
214
212
|
detectionTrigger: z.optional(DetectionTrigger),
|
|
215
213
|
destinationAmount: Snapshot.shape.destinationAmount,
|
|
@@ -241,12 +239,10 @@ export namespace schema {
|
|
|
241
239
|
),
|
|
242
240
|
status: Status,
|
|
243
241
|
statusReason: z.optional(StatusReason),
|
|
244
|
-
updatedAt:
|
|
245
|
-
.
|
|
246
|
-
.
|
|
247
|
-
|
|
248
|
-
z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
|
|
249
|
-
),
|
|
242
|
+
updatedAt: Schema.dateTime().check(
|
|
243
|
+
z.describe('When the deposit last materially changed (ISO 8601).'),
|
|
244
|
+
z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
|
|
245
|
+
),
|
|
250
246
|
})
|
|
251
247
|
.check(z.describe('One detected deposit and its delivery status.')),
|
|
252
248
|
'RoutesDeposit',
|
|
@@ -108,12 +108,10 @@ export namespace schema {
|
|
|
108
108
|
z
|
|
109
109
|
.object({
|
|
110
110
|
address: Snapshot.shape.address,
|
|
111
|
-
createdAt:
|
|
112
|
-
.
|
|
113
|
-
.
|
|
114
|
-
|
|
115
|
-
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
116
|
-
),
|
|
111
|
+
createdAt: Schema.dateTime().check(
|
|
112
|
+
z.describe('When the deposit address was created (ISO 8601).'),
|
|
113
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
114
|
+
),
|
|
117
115
|
destinationChain: Snapshot.shape.destinationChain,
|
|
118
116
|
destinationToken: Snapshot.shape.destinationToken,
|
|
119
117
|
id: z
|
|
@@ -129,12 +127,10 @@ export namespace schema {
|
|
|
129
127
|
sourceToken: Snapshot.shape.sourceToken,
|
|
130
128
|
status: PublicStatus,
|
|
131
129
|
subsidize: Snapshot.shape.subsidize,
|
|
132
|
-
updatedAt:
|
|
133
|
-
.
|
|
134
|
-
.
|
|
135
|
-
|
|
136
|
-
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
137
|
-
),
|
|
130
|
+
updatedAt: Schema.dateTime().check(
|
|
131
|
+
z.describe('When the deposit address last materially changed (ISO 8601).'),
|
|
132
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
133
|
+
),
|
|
138
134
|
})
|
|
139
135
|
.check(z.describe('One reusable address for routes a Tempo account.')),
|
|
140
136
|
'RoutesDepositAddress',
|
|
@@ -145,17 +141,15 @@ export namespace schema {
|
|
|
145
141
|
z
|
|
146
142
|
.object({
|
|
147
143
|
expiresAt: z
|
|
148
|
-
.optional(
|
|
144
|
+
.optional(Schema.dateTime())
|
|
149
145
|
.check(
|
|
150
146
|
z.describe('Timestamp after which the quoted terms are no longer valid.'),
|
|
151
147
|
z.meta({ examples: ['2026-01-01T00:01:00Z'] }),
|
|
152
148
|
),
|
|
153
|
-
sampledAt:
|
|
154
|
-
.
|
|
155
|
-
.
|
|
156
|
-
|
|
157
|
-
z.meta({ examples: ['2026-01-01T00:00:00Z'] }),
|
|
158
|
-
),
|
|
149
|
+
sampledAt: Schema.dateTime().check(
|
|
150
|
+
z.describe('Timestamp for the live quote request.'),
|
|
151
|
+
z.meta({ examples: ['2026-01-01T00:00:00Z'] }),
|
|
152
|
+
),
|
|
159
153
|
})
|
|
160
154
|
.check(z.describe('Freshness data for quoted deposit terms.')),
|
|
161
155
|
'RoutesQuoteDetails',
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Value } from 'ox'
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
|
+
import * as Schema from '../Schema.js'
|
|
4
5
|
import type * as Catalog from './Catalog.js'
|
|
5
6
|
|
|
6
7
|
export type Payer = 'tempo' | 'enterprise'
|
|
@@ -205,7 +206,7 @@ export namespace schema {
|
|
|
205
206
|
z.meta({ examples: ['enterprise'] }),
|
|
206
207
|
),
|
|
207
208
|
subsidyEndsAt: z
|
|
208
|
-
.optional(
|
|
209
|
+
.optional(Schema.dateTime({ offset: true }))
|
|
209
210
|
.check(
|
|
210
211
|
z.describe('When Tempo-paid subsidy ends; later subsidies bill the organization.'),
|
|
211
212
|
z.meta({ examples: ['2027-04-01T00:00:00.000Z'] }),
|
|
@@ -183,7 +183,7 @@ export namespace schema {
|
|
|
183
183
|
),
|
|
184
184
|
destinationAmount: PositiveInteger,
|
|
185
185
|
destinationAmountMin: PositiveInteger,
|
|
186
|
-
expiresAt: z.optional(
|
|
186
|
+
expiresAt: z.optional(Schema.dateTime()),
|
|
187
187
|
fees: z.array(
|
|
188
188
|
z.object({
|
|
189
189
|
amount: Schema.DecimalString,
|
|
@@ -192,7 +192,7 @@ export namespace schema {
|
|
|
192
192
|
}),
|
|
193
193
|
),
|
|
194
194
|
providerState: z.optional(z.record(z.string(), z.unknown())),
|
|
195
|
-
sampledAt:
|
|
195
|
+
sampledAt: Schema.dateTime(),
|
|
196
196
|
})
|
|
197
197
|
|
|
198
198
|
/** Indicative transfer pricing that may omit an executable source action. */
|
|
@@ -222,9 +222,9 @@ export namespace schema {
|
|
|
222
222
|
.check(z.describe('Private provider correlation retained for reconciliation.')),
|
|
223
223
|
destinationAmount: PositiveInteger,
|
|
224
224
|
destinationAmountMin: z.nullable(PositiveInteger),
|
|
225
|
-
expiresAt: z.optional(
|
|
225
|
+
expiresAt: z.optional(Schema.dateTime()),
|
|
226
226
|
fees: PrepareResult.shape.fees,
|
|
227
|
-
sampledAt:
|
|
227
|
+
sampledAt: Schema.dateTime(),
|
|
228
228
|
})
|
|
229
229
|
.check(z.describe('Reusable deposit address and quoted delivery terms returned by a provider.'))
|
|
230
230
|
|
|
@@ -232,14 +232,14 @@ export namespace schema {
|
|
|
232
232
|
export const DepositAddressQuoteResult = z.object({
|
|
233
233
|
destinationAmount: PositiveInteger,
|
|
234
234
|
destinationAmountMin: z.nullable(PositiveInteger),
|
|
235
|
-
expiresAt: z.optional(
|
|
235
|
+
expiresAt: z.optional(Schema.dateTime()),
|
|
236
236
|
fees: PrepareResult.shape.fees,
|
|
237
|
-
sampledAt:
|
|
237
|
+
sampledAt: Schema.dateTime(),
|
|
238
238
|
})
|
|
239
239
|
|
|
240
240
|
/** One provider request discovered for a reusable deposit address. */
|
|
241
241
|
export const DepositAddressRequest = z.object({
|
|
242
|
-
createdAt:
|
|
242
|
+
createdAt: Schema.dateTime(),
|
|
243
243
|
destinationTransactionHashes: z.array(z.string()),
|
|
244
244
|
id: z.string().check(z.minLength(1)),
|
|
245
245
|
providerState: z.optional(z.record(z.string(), z.unknown())),
|
|
@@ -259,7 +259,7 @@ export namespace schema {
|
|
|
259
259
|
sourceUnknown: z.optional(z.literal(true)),
|
|
260
260
|
// Set when the provider reports a source chain or token the address does not accept; reconciliation records nothing for it.
|
|
261
261
|
unexpectedSource: z.optional(z.literal(true)),
|
|
262
|
-
updatedAt:
|
|
262
|
+
updatedAt: Schema.dateTime(),
|
|
263
263
|
})
|
|
264
264
|
|
|
265
265
|
/** One page of provider requests discovered for a reusable address. */
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Hex, Value as core_Value } from 'ox'
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
|
+
import * as Schema from '../Schema.js'
|
|
4
5
|
import * as Db from '../../db/Db.js'
|
|
5
6
|
import * as ApiKeyOwnerTombstones from '../../db/tables/apiKeyOwnerTombstones.js'
|
|
6
7
|
import * as RoutesDepositAddresses from '../../db/tables/routesDepositAddresses.js'
|
|
@@ -825,8 +826,8 @@ async function observeProviderDelivery(options: ReconcileDeliveryOptions) {
|
|
|
825
826
|
async function checkpointUnattributed(db: Db.Db, options: checkpointUnattributed.Options) {
|
|
826
827
|
const parsed = z.safeParse(
|
|
827
828
|
z.object({
|
|
828
|
-
before:
|
|
829
|
-
cursor: z.object({ createdAt:
|
|
829
|
+
before: Schema.dateTime(),
|
|
830
|
+
cursor: z.object({ createdAt: Schema.dateTime(), id: z.string() }),
|
|
830
831
|
}),
|
|
831
832
|
options.address.providerState?.['unattributed'],
|
|
832
833
|
)
|
|
@@ -165,18 +165,14 @@ export namespace schema {
|
|
|
165
165
|
export const Quote = OpenApi.component(
|
|
166
166
|
z
|
|
167
167
|
.object({
|
|
168
|
-
expiresAt:
|
|
169
|
-
.
|
|
170
|
-
.
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
),
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
.check(
|
|
177
|
-
z.describe('When the quote was produced (ISO 8601).'),
|
|
178
|
-
z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
|
|
179
|
-
),
|
|
168
|
+
expiresAt: Schema.dateTime().check(
|
|
169
|
+
z.describe('When the quoted terms stop being executable (ISO 8601).'),
|
|
170
|
+
z.meta({ examples: ['2026-07-30T04:01:00.000Z'] }),
|
|
171
|
+
),
|
|
172
|
+
sampledAt: Schema.dateTime().check(
|
|
173
|
+
z.describe('When the quote was produced (ISO 8601).'),
|
|
174
|
+
z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
|
|
175
|
+
),
|
|
180
176
|
})
|
|
181
177
|
.check(z.describe('Freshness and validity window of the selected quote.')),
|
|
182
178
|
'RoutesTransferQuoteDetails',
|
|
@@ -264,12 +260,10 @@ export namespace schema {
|
|
|
264
260
|
.check(z.describe('Quote terms and reconciled public fields of a route transfer.'))
|
|
265
261
|
|
|
266
262
|
const routesTransferFields = {
|
|
267
|
-
createdAt:
|
|
268
|
-
.
|
|
269
|
-
.
|
|
270
|
-
|
|
271
|
-
z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
|
|
272
|
-
),
|
|
263
|
+
createdAt: Schema.dateTime().check(
|
|
264
|
+
z.describe('When the transfer was created (ISO 8601).'),
|
|
265
|
+
z.meta({ examples: ['2026-07-30T04:00:00.000Z'] }),
|
|
266
|
+
),
|
|
273
267
|
destinationAmount: snapshotFields.destinationAmount,
|
|
274
268
|
destinationAmountMin: snapshotFields.destinationAmountMin,
|
|
275
269
|
destinationAmountRequired: snapshotFields.destinationAmountRequired,
|
|
@@ -299,12 +293,10 @@ export namespace schema {
|
|
|
299
293
|
subsidize: snapshotFields.subsidize,
|
|
300
294
|
status: Status,
|
|
301
295
|
statusReason: z.optional(StatusReason),
|
|
302
|
-
updatedAt:
|
|
303
|
-
.
|
|
304
|
-
.
|
|
305
|
-
|
|
306
|
-
z.meta({ examples: ['2026-07-30T04:00:20.000Z'] }),
|
|
307
|
-
),
|
|
296
|
+
updatedAt: Schema.dateTime().check(
|
|
297
|
+
z.describe('When the transfer last materially changed (ISO 8601).'),
|
|
298
|
+
z.meta({ examples: ['2026-07-30T04:00:20.000Z'] }),
|
|
299
|
+
),
|
|
308
300
|
version: z
|
|
309
301
|
.number()
|
|
310
302
|
.check(
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Address } from 'ox'
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
|
+
import * as Schema from '../Schema.js'
|
|
4
5
|
import type * as RoutesDepositAddresses from '../../db/tables/routesDepositAddresses.js'
|
|
5
6
|
import type * as RoutesUniversalDepositAddresses from '../../db/tables/routesUniversalDepositAddresses.js'
|
|
6
7
|
import * as Id from '../Id.js'
|
|
@@ -156,12 +157,10 @@ export namespace schema {
|
|
|
156
157
|
),
|
|
157
158
|
z.meta({ examples: [[familyAddressExample]] }),
|
|
158
159
|
),
|
|
159
|
-
createdAt:
|
|
160
|
-
.
|
|
161
|
-
.
|
|
162
|
-
|
|
163
|
-
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
164
|
-
),
|
|
160
|
+
createdAt: Schema.dateTime().check(
|
|
161
|
+
z.describe('When the universal deposit address was created (ISO 8601).'),
|
|
162
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
163
|
+
),
|
|
165
164
|
destinationChain: Snapshot.shape.destinationChain,
|
|
166
165
|
destinationToken: Snapshot.shape.destinationToken,
|
|
167
166
|
id: z
|
|
@@ -174,12 +173,10 @@ export namespace schema {
|
|
|
174
173
|
recipient: Snapshot.shape.recipient,
|
|
175
174
|
status: DepositAddress.schema.PublicStatus,
|
|
176
175
|
subsidize: Snapshot.shape.subsidize,
|
|
177
|
-
updatedAt:
|
|
178
|
-
.
|
|
179
|
-
.
|
|
180
|
-
|
|
181
|
-
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
182
|
-
),
|
|
176
|
+
updatedAt: Schema.dateTime().check(
|
|
177
|
+
z.describe('When the universal deposit address last materially changed (ISO 8601).'),
|
|
178
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
179
|
+
),
|
|
183
180
|
})
|
|
184
181
|
.check(
|
|
185
182
|
z.describe('Reusable deposit addresses accepting every supported source per chain family.'),
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
import { Address, Hex } from 'ox'
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
|
+
import * as Schema from '../../Schema.js'
|
|
4
5
|
import * as Provider from '../Provider.js'
|
|
5
6
|
import * as Stellar from '../Stellar.js'
|
|
6
7
|
import { ousd, usdce } from 'viem/tokens'
|
|
@@ -32,7 +33,7 @@ export namespace schema {
|
|
|
32
33
|
export const HorizonRoot = z
|
|
33
34
|
.object({
|
|
34
35
|
history_elder_ledger: z.number().check(z.int(), z.gte(1)),
|
|
35
|
-
history_latest_ledger_closed_at:
|
|
36
|
+
history_latest_ledger_closed_at: Schema.dateTime(),
|
|
36
37
|
network_passphrase: z.literal(Stellar.networkPassphrase),
|
|
37
38
|
})
|
|
38
39
|
.check(
|
|
@@ -243,7 +244,7 @@ export function sourceAbsence(options: sourceAbsence.Options) {
|
|
|
243
244
|
const root = schema.HorizonRoot.safeParse(options.root)
|
|
244
245
|
const oldest = z
|
|
245
246
|
.object({
|
|
246
|
-
closed_at:
|
|
247
|
+
closed_at: Schema.dateTime(),
|
|
247
248
|
sequence: z.number().check(z.int(), z.gte(1)),
|
|
248
249
|
})
|
|
249
250
|
.safeParse(options.oldestLedger)
|
|
@@ -2,6 +2,7 @@ import { AbiEvent, AbiFunction, Address, Base58, Bytes, Hash, Hex, Value as core
|
|
|
2
2
|
import { getBlockNumber, getLogs, getTransaction, getTransactionReceipt } from 'viem/actions'
|
|
3
3
|
import * as z from 'zod/mini'
|
|
4
4
|
|
|
5
|
+
import * as Schema from '../../Schema.js'
|
|
5
6
|
import * as Db from '../../../db/Db.js'
|
|
6
7
|
import * as RoutesDepositAddresses from '../../../db/tables/routesDepositAddresses.js'
|
|
7
8
|
import * as RoutesDepositRequestObservations from '../../../db/tables/routesDepositRequestObservations.js'
|
|
@@ -206,7 +207,7 @@ namespace schema {
|
|
|
206
207
|
relay: z.object({
|
|
207
208
|
orderId: z.string().check(z.regex(/^0x[0-9a-fA-F]{64}$/)),
|
|
208
209
|
sourceDepository: z.string().check(z.regex(/^0x[0-9a-fA-F]{40}$/)),
|
|
209
|
-
sourceObservedAt:
|
|
210
|
+
sourceObservedAt: Schema.dateTime(),
|
|
210
211
|
sourceSweepTransactionHash: z.string().check(z.regex(/^0x[0-9a-fA-F]{64}$/)),
|
|
211
212
|
}),
|
|
212
213
|
})
|
|
@@ -233,7 +234,7 @@ namespace schema {
|
|
|
233
234
|
continuation: z.optional(z.string().check(z.minLength(1))),
|
|
234
235
|
requests: z.array(
|
|
235
236
|
z.object({
|
|
236
|
-
createdAt:
|
|
237
|
+
createdAt: Schema.dateTime(),
|
|
237
238
|
data: z.optional(
|
|
238
239
|
z.object({
|
|
239
240
|
feeSponsorship: z.nullish(
|
|
@@ -295,7 +296,7 @@ namespace schema {
|
|
|
295
296
|
),
|
|
296
297
|
),
|
|
297
298
|
status: z.string().check(z.minLength(1)),
|
|
298
|
-
updatedAt:
|
|
299
|
+
updatedAt: Schema.dateTime(),
|
|
299
300
|
}),
|
|
300
301
|
),
|
|
301
302
|
})
|