tapimo 0.7.1 → 0.8.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +10 -7
- package/dist/ApiKey.d.ts +3 -0
- package/dist/ApiKey.d.ts.map +1 -1
- package/dist/ApiKey.js +10 -0
- package/dist/ApiKey.js.map +1 -1
- package/dist/ApiKeys.d.ts +29 -8
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +24 -5
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +20680 -15487
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +250 -129
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +10 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +17 -4
- package/dist/Assets.js.map +1 -1
- package/dist/Scope.d.ts +19 -8
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +25 -9
- package/dist/Scope.js.map +1 -1
- package/dist/Webhooks.d.ts +1 -1
- package/dist/admin/App.d.ts +667 -76
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/App.js +12 -2
- package/dist/admin/App.js.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +107 -11
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +145 -32
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +1069 -0
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -0
- package/dist/admin/apps/earn-vaults.js +409 -0
- package/dist/admin/apps/earn-vaults.js.map +1 -0
- package/dist/admin/apps/organizations.d.ts +2 -0
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +74 -74
- 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 +99 -43
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/analytics/Analytics.d.ts +4 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +21 -2
- package/dist/analytics/Analytics.js.map +1 -1
- package/dist/analytics/tables/requestEvents.d.ts +22 -1
- package/dist/analytics/tables/requestEvents.d.ts.map +1 -1
- package/dist/analytics/tables/requestEvents.js +59 -39
- package/dist/analytics/tables/requestEvents.js.map +1 -1
- package/dist/apps/Zones.d.ts +8335 -0
- package/dist/apps/Zones.d.ts.map +1 -0
- package/dist/apps/Zones.js +38 -0
- package/dist/apps/Zones.js.map +1 -0
- package/dist/apps/data/App.d.ts +5666 -3934
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +90 -22
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/FxOracle.d.ts +1 -1
- package/dist/apps/data/FxOracle.d.ts.map +1 -1
- package/dist/apps/data/index.d.ts +0 -1
- package/dist/apps/data/index.d.ts.map +1 -1
- package/dist/apps/data/index.js +0 -1
- package/dist/apps/data/index.js.map +1 -1
- package/dist/apps/data/routes/activities.d.ts +56 -56
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +130 -65
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +65 -65
- package/dist/apps/data/routes/balances.d.ts +14 -14
- package/dist/apps/data/routes/balances.js +5 -5
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +39 -39
- package/dist/apps/data/routes/coingecko.d.ts +54 -54
- package/dist/apps/data/routes/coingecko.d.ts.map +1 -1
- package/dist/apps/data/routes/coingecko.js +62 -35
- package/dist/apps/data/routes/coingecko.js.map +1 -1
- package/dist/apps/data/routes/earn.d.ts +2574 -0
- package/dist/apps/data/routes/earn.d.ts.map +1 -0
- package/dist/apps/data/routes/earn.js +1574 -0
- package/dist/apps/data/routes/earn.js.map +1 -0
- package/dist/apps/data/routes/exchanges.d.ts +1626 -719
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +656 -193
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +108 -108
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +59 -8
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +35 -35
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +23 -3
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +33 -33
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +11 -11
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.d.ts +6 -6
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +214 -22
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +39 -8
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +115 -87
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +194 -91
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +54 -54
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +78 -39
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +76 -27
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +165 -67
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +42 -42
- package/dist/apps/data/routes/valuation.js +2 -2
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +36 -36
- package/dist/apps/data/routes/webhooks.d.ts +370 -368
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +161 -59
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +281 -0
- package/dist/apps/data/routes/zones.d.ts.map +1 -0
- package/dist/apps/data/routes/zones.js +252 -0
- package/dist/apps/data/routes/zones.js.map +1 -0
- package/dist/apps/docs/reference.js +6 -5
- package/dist/apps/docs/reference.js.map +1 -1
- package/dist/apps/funding/Access.d.ts +16 -0
- package/dist/apps/funding/Access.d.ts.map +1 -0
- package/dist/apps/funding/Access.js +22 -0
- package/dist/apps/funding/Access.js.map +1 -0
- package/dist/apps/funding/App.d.ts +3183 -0
- package/dist/apps/funding/App.d.ts.map +1 -0
- package/dist/apps/funding/App.js +46 -0
- package/dist/apps/funding/App.js.map +1 -0
- package/dist/apps/funding/Inventory.d.ts +5 -0
- package/dist/apps/funding/Inventory.d.ts.map +1 -0
- package/dist/apps/funding/Inventory.js +25 -0
- package/dist/apps/funding/Inventory.js.map +1 -0
- package/dist/apps/funding/ProviderAttempts.d.ts +5 -0
- package/dist/apps/funding/ProviderAttempts.d.ts.map +1 -0
- package/dist/apps/funding/ProviderAttempts.js +24 -0
- package/dist/apps/funding/ProviderAttempts.js.map +1 -0
- package/dist/apps/funding/index.d.ts +2 -0
- package/dist/apps/funding/index.d.ts.map +1 -0
- package/dist/apps/funding/index.js +2 -0
- package/dist/apps/funding/index.js.map +1 -0
- package/dist/apps/funding/routes/chains.d.ts +169 -0
- package/dist/apps/funding/routes/chains.d.ts.map +1 -0
- package/dist/apps/funding/routes/chains.js +80 -0
- package/dist/apps/funding/routes/chains.js.map +1 -0
- package/dist/apps/funding/routes/deposit-addresses.d.ts +2388 -0
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -0
- package/dist/apps/funding/routes/deposit-addresses.js +860 -0
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -0
- package/dist/apps/funding/routes/providers.d.ts +91 -0
- package/dist/apps/funding/routes/providers.d.ts.map +1 -0
- package/dist/apps/funding/routes/providers.js +56 -0
- package/dist/apps/funding/routes/providers.js.map +1 -0
- package/dist/apps/{data/routes/funding.d.ts → funding/routes/quotes.d.ts} +26 -396
- package/dist/apps/funding/routes/quotes.d.ts.map +1 -0
- package/dist/apps/funding/routes/quotes.js +188 -0
- package/dist/apps/funding/routes/quotes.js.map +1 -0
- package/dist/apps/funding/routes/transfers.d.ts +1999 -0
- package/dist/apps/funding/routes/transfers.d.ts.map +1 -0
- package/dist/apps/funding/routes/transfers.js +614 -0
- package/dist/apps/funding/routes/transfers.js.map +1 -0
- package/dist/apps/index.d.ts +3 -1
- package/dist/apps/index.d.ts.map +1 -1
- package/dist/apps/index.js +3 -1
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/management/App.d.ts +839 -574
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts +8 -0
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +12 -0
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/Error.d.ts +12 -0
- package/dist/apps/management/Error.d.ts.map +1 -0
- package/dist/apps/management/Error.js +10 -0
- package/dist/apps/management/Error.js.map +1 -0
- package/dist/apps/management/routes/api-keys.d.ts +296 -19
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +77 -9
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +119 -119
- package/dist/apps/management/routes/faucet.d.ts +35 -35
- package/dist/apps/management/routes/invitations.d.ts +17 -17
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +4 -10
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +38 -38
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +69 -69
- package/dist/apps/management/routes/orgs.d.ts +16 -16
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +2 -8
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +19 -19
- package/dist/apps/management/routes/scopes.d.ts +1 -1
- package/dist/apps/management/routes/scopes.js +2 -2
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +72 -72
- package/dist/apps/management/routes/verified-token-requests.d.ts +18 -18
- package/dist/apps/management/routes/webhooks.d.ts +122 -122
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +15 -3
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mcp.d.ts +2 -3
- package/dist/apps/mcp.d.ts.map +1 -1
- package/dist/apps/mcp.js +16 -14
- package/dist/apps/mcp.js.map +1 -1
- package/dist/apps/metadata.d.ts +4 -0
- package/dist/apps/metadata.d.ts.map +1 -1
- package/dist/apps/metadata.js +10 -0
- package/dist/apps/metadata.js.map +1 -1
- package/dist/apps/mpp/App.d.ts +57 -58
- package/dist/apps/mpp/App.d.ts.map +1 -1
- package/dist/apps/mpp/App.js +192 -27
- package/dist/apps/mpp/App.js.map +1 -1
- package/dist/apps/mpp/Mpp.d.ts +0 -20
- package/dist/apps/mpp/Mpp.d.ts.map +1 -1
- package/dist/apps/mpp/Mpp.js +0 -24
- package/dist/apps/mpp/Mpp.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +40 -0
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Adapter.js +66 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -0
- package/dist/apps/mpp/internal/Error.d.ts +4 -0
- package/dist/apps/mpp/internal/Error.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Error.js +41 -0
- package/dist/apps/mpp/internal/Error.js.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts +33 -0
- package/dist/apps/mpp/internal/Idempotency.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Idempotency.js +28 -0
- package/dist/apps/mpp/internal/Idempotency.js.map +1 -0
- package/dist/apps/mpp/internal/Policy.d.ts +46 -0
- package/dist/apps/mpp/internal/Policy.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Policy.js +57 -0
- package/dist/apps/mpp/internal/Policy.js.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts +27 -0
- package/dist/apps/mpp/internal/ScreenManager.d.ts.map +1 -0
- package/dist/apps/mpp/internal/ScreenManager.js +18 -0
- package/dist/apps/mpp/internal/ScreenManager.js.map +1 -0
- package/dist/apps/mpp/internal/Screening.d.ts +35 -0
- package/dist/apps/mpp/internal/Screening.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Screening.js +20 -0
- package/dist/apps/mpp/internal/Screening.js.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts +36 -0
- package/dist/apps/mpp/internal/Sponsorship.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Sponsorship.js +103 -0
- package/dist/apps/mpp/internal/Sponsorship.js.map +1 -0
- package/dist/apps/mpp/internal/Utils.d.ts +7 -0
- package/dist/apps/mpp/internal/Utils.d.ts.map +1 -0
- package/dist/apps/mpp/internal/Utils.js +24 -0
- package/dist/apps/mpp/internal/Utils.js.map +1 -0
- package/dist/apps/relay/App.js +183 -23
- package/dist/apps/relay/App.js.map +1 -1
- package/dist/apps/relay/Sponsorships.d.ts +4 -0
- package/dist/apps/relay/Sponsorships.d.ts.map +1 -1
- package/dist/apps/relay/Sponsorships.js +15 -6
- package/dist/apps/relay/Sponsorships.js.map +1 -1
- package/dist/cloudflare.d.ts +50 -0
- package/dist/cloudflare.d.ts.map +1 -1
- package/dist/cloudflare.js +178 -0
- package/dist/cloudflare.js.map +1 -1
- package/dist/db/Db.d.ts +22 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +379 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +933 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +289 -1
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +68 -0
- package/dist/db/tables/earnVaults.d.ts.map +1 -0
- package/dist/db/tables/earnVaults.js +72 -0
- package/dist/db/tables/earnVaults.js.map +1 -0
- package/dist/db/tables/fundingCatalog.d.ts +56 -0
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -0
- package/dist/db/tables/fundingCatalog.js +85 -0
- package/dist/db/tables/fundingCatalog.js.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts +172 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.js +218 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
- package/dist/db/tables/fundingDepositRequestObservations.d.ts +45 -0
- package/dist/db/tables/fundingDepositRequestObservations.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositRequestObservations.js +46 -0
- package/dist/db/tables/fundingDepositRequestObservations.js.map +1 -0
- package/dist/db/tables/fundingDeposits.d.ts +171 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
- package/dist/db/tables/fundingDeposits.js +182 -0
- package/dist/db/tables/fundingDeposits.js.map +1 -0
- package/dist/db/tables/fundingIdempotency.d.ts +91 -0
- package/dist/db/tables/fundingIdempotency.d.ts.map +1 -0
- package/dist/db/tables/fundingIdempotency.js +103 -0
- package/dist/db/tables/fundingIdempotency.js.map +1 -0
- package/dist/db/tables/fundingTransferEvents.d.ts +12 -0
- package/dist/db/tables/fundingTransferEvents.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferEvents.js +18 -0
- package/dist/db/tables/fundingTransferEvents.js.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts +15 -0
- package/dist/db/tables/fundingTransferTransactions.d.ts.map +1 -0
- package/dist/db/tables/fundingTransferTransactions.js +27 -0
- package/dist/db/tables/fundingTransferTransactions.js.map +1 -0
- package/dist/db/tables/fundingTransfers.d.ts +82 -0
- package/dist/db/tables/fundingTransfers.d.ts.map +1 -0
- package/dist/db/tables/fundingTransfers.js +89 -0
- package/dist/db/tables/fundingTransfers.js.map +1 -0
- package/dist/db/tables/organizations.d.ts +8 -0
- package/dist/db/tables/organizations.d.ts.map +1 -1
- package/dist/db/tables/organizations.js +16 -0
- package/dist/db/tables/organizations.js.map +1 -1
- package/dist/db/tables/projects.d.ts +8 -0
- package/dist/db/tables/projects.d.ts.map +1 -1
- package/dist/db/tables/projects.js +16 -0
- package/dist/db/tables/projects.js.map +1 -1
- package/dist/db/tables/requestUsage.d.ts +13 -0
- package/dist/db/tables/requestUsage.d.ts.map +1 -1
- package/dist/db/tables/requestUsage.js +16 -0
- package/dist/db/tables/requestUsage.js.map +1 -1
- package/dist/db/tables/sponsoredTransactions.d.ts +2 -2
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +1 -1
- package/dist/db/tables/sponsoredTransactions.js.map +1 -1
- package/dist/db/tables/users.d.ts +8 -0
- package/dist/db/tables/users.d.ts.map +1 -1
- package/dist/db/tables/users.js +16 -0
- package/dist/db/tables/users.js.map +1 -1
- package/dist/db/tables/verifiedTokens.d.ts +14 -7
- package/dist/db/tables/verifiedTokens.d.ts.map +1 -1
- package/dist/db/tables/verifiedTokens.js +9 -7
- package/dist/db/tables/verifiedTokens.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +31 -1
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +24 -3
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/handlers/relay.js +108 -108
- package/dist/handlers/relay.js.map +1 -1
- package/dist/internal/Auth.d.ts +37 -11
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +75 -16
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +17 -11
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/Cursor.js +1 -1
- package/dist/internal/Cursor.js.map +1 -1
- package/dist/internal/EarnRates.d.ts +89 -0
- package/dist/internal/EarnRates.d.ts.map +1 -0
- package/dist/internal/EarnRates.js +266 -0
- package/dist/internal/EarnRates.js.map +1 -0
- package/dist/internal/EarnVaults.d.ts +171 -0
- package/dist/internal/EarnVaults.d.ts.map +1 -0
- package/dist/internal/EarnVaults.js +547 -0
- package/dist/internal/EarnVaults.js.map +1 -0
- package/dist/internal/EdgeCache.d.ts +10 -3
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +43 -11
- package/dist/internal/EdgeCache.js.map +1 -1
- package/dist/internal/Id.d.ts +11 -0
- package/dist/internal/Id.d.ts.map +1 -1
- package/dist/internal/Id.js +13 -0
- package/dist/internal/Id.js.map +1 -1
- package/dist/internal/Idempotency.d.ts +83 -0
- package/dist/internal/Idempotency.d.ts.map +1 -0
- package/dist/internal/Idempotency.js +113 -0
- package/dist/internal/Idempotency.js.map +1 -0
- package/dist/internal/IpAllowlist.d.ts +15 -0
- package/dist/internal/IpAllowlist.d.ts.map +1 -0
- package/dist/internal/IpAllowlist.js +27 -0
- package/dist/internal/IpAllowlist.js.map +1 -0
- package/dist/internal/Log.d.ts +64 -9
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +29 -7
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/MetricSink.d.ts.map +1 -1
- package/dist/internal/MetricSink.js +47 -1
- package/dist/internal/MetricSink.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +2 -2
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +4 -1
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Provider.d.ts +14 -0
- package/dist/internal/Provider.d.ts.map +1 -0
- package/dist/internal/Provider.js +5 -0
- package/dist/internal/Provider.js.map +1 -0
- package/dist/internal/Schema.d.ts +6 -1
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +20 -11
- package/dist/internal/Schema.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 +35 -0
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +49 -24
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +90 -12
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +90 -65
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +90 -12
- package/dist/internal/Viem.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +34 -28
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +9 -0
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +15 -10
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/exchange/Provider.d.ts +219 -0
- package/dist/internal/exchange/Provider.d.ts.map +1 -0
- package/dist/internal/exchange/Provider.js +117 -0
- package/dist/internal/exchange/Provider.js.map +1 -0
- package/dist/internal/exchange/index.d.ts +2 -0
- package/dist/internal/exchange/index.d.ts.map +1 -0
- package/dist/internal/exchange/index.js +2 -0
- package/dist/internal/exchange/index.js.map +1 -0
- package/dist/internal/exchange/providers/uniswap.d.ts +57 -0
- package/dist/internal/exchange/providers/uniswap.d.ts.map +1 -0
- package/dist/internal/exchange/providers/uniswap.js +553 -0
- package/dist/internal/exchange/providers/uniswap.js.map +1 -0
- package/dist/internal/funding/Action.d.ts +55 -0
- package/dist/internal/funding/Action.d.ts.map +1 -0
- package/dist/internal/funding/Action.js +74 -0
- package/dist/internal/funding/Action.js.map +1 -0
- package/dist/internal/funding/Catalog.d.ts +107 -0
- package/dist/internal/funding/Catalog.d.ts.map +1 -0
- package/dist/internal/funding/Catalog.js +270 -0
- package/dist/internal/funding/Catalog.js.map +1 -0
- package/dist/internal/funding/Chain.d.ts +76 -0
- package/dist/internal/funding/Chain.d.ts.map +1 -0
- package/dist/internal/funding/Chain.js +38 -0
- package/dist/internal/funding/Chain.js.map +1 -0
- package/dist/internal/funding/Deposit.d.ts +408 -0
- package/dist/internal/funding/Deposit.d.ts.map +1 -0
- package/dist/internal/funding/Deposit.js +318 -0
- package/dist/internal/funding/Deposit.js.map +1 -0
- package/dist/internal/funding/DepositAddress.d.ts +345 -0
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -0
- package/dist/internal/funding/DepositAddress.js +189 -0
- package/dist/internal/funding/DepositAddress.js.map +1 -0
- package/dist/internal/funding/Evidence.d.ts +48 -0
- package/dist/internal/funding/Evidence.d.ts.map +1 -0
- package/dist/internal/funding/Evidence.js +315 -0
- package/dist/internal/funding/Evidence.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts +1288 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -0
- package/dist/internal/funding/Provider.js +1086 -0
- package/dist/internal/funding/Provider.js.map +1 -0
- package/dist/internal/funding/Reconciliation.d.ts +127 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
- package/dist/internal/funding/Reconciliation.js +885 -0
- package/dist/internal/funding/Reconciliation.js.map +1 -0
- package/dist/internal/funding/Route.d.ts +21 -0
- package/dist/internal/funding/Route.d.ts.map +1 -0
- package/dist/internal/funding/Route.js +5 -0
- package/dist/internal/funding/Route.js.map +1 -0
- package/dist/internal/funding/SourceObservation.d.ts +108 -0
- package/dist/internal/funding/SourceObservation.d.ts.map +1 -0
- package/dist/internal/funding/SourceObservation.js +143 -0
- package/dist/internal/funding/SourceObservation.js.map +1 -0
- package/dist/internal/funding/Subsidy.d.ts +113 -0
- package/dist/internal/funding/Subsidy.d.ts.map +1 -0
- package/dist/internal/funding/Subsidy.js +138 -0
- package/dist/internal/funding/Subsidy.js.map +1 -0
- package/dist/internal/funding/Token.d.ts +41 -0
- package/dist/internal/funding/Token.d.ts.map +1 -0
- package/dist/internal/funding/Token.js +22 -0
- package/dist/internal/funding/Token.js.map +1 -0
- package/dist/internal/funding/Transfer.d.ts +643 -0
- package/dist/internal/funding/Transfer.d.ts.map +1 -0
- package/dist/internal/funding/Transfer.js +332 -0
- package/dist/internal/funding/Transfer.js.map +1 -0
- package/dist/internal/funding/index.d.ts +14 -0
- package/dist/internal/funding/index.d.ts.map +1 -0
- package/dist/internal/funding/index.js +14 -0
- package/dist/internal/funding/index.js.map +1 -0
- package/dist/internal/funding/providers/across.d.ts +21 -0
- package/dist/internal/funding/providers/across.d.ts.map +1 -0
- package/dist/internal/funding/providers/across.js +117 -0
- package/dist/internal/funding/providers/across.js.map +1 -0
- package/dist/internal/funding/providers/relay.d.ts +88 -0
- package/dist/internal/funding/providers/relay.d.ts.map +1 -0
- package/dist/internal/funding/providers/relay.js +871 -0
- package/dist/internal/funding/providers/relay.js.map +1 -0
- package/dist/internal/funding/providers/rhino.d.ts +15 -0
- package/dist/internal/funding/providers/rhino.d.ts.map +1 -0
- package/dist/internal/funding/providers/rhino.js +116 -0
- package/dist/internal/funding/providers/rhino.js.map +1 -0
- package/dist/internal/funding/providers/squid.d.ts +19 -0
- package/dist/internal/funding/providers/squid.d.ts.map +1 -0
- package/dist/internal/funding/providers/squid.js +120 -0
- package/dist/internal/funding/providers/squid.js.map +1 -0
- package/dist/internal/funding/providers/symbiosis.d.ts +20 -0
- package/dist/internal/funding/providers/symbiosis.d.ts.map +1 -0
- package/dist/internal/funding/providers/symbiosis.js +176 -0
- package/dist/internal/funding/providers/symbiosis.js.map +1 -0
- package/dist/internal/index.d.ts +5 -1
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +5 -1
- package/dist/internal/index.js.map +1 -1
- package/dist/internal/webhookDestinations/url.js +61 -57
- package/dist/internal/webhookDestinations/url.js.map +1 -1
- package/dist/providers/index.d.ts +43 -0
- package/dist/providers/index.d.ts.map +1 -0
- package/dist/providers/index.js +19 -0
- package/dist/providers/index.js.map +1 -0
- package/package.json +10 -5
- package/src/ApiKey.test.ts +35 -0
- package/src/ApiKey.ts +27 -0
- package/src/ApiKeys.test.ts +40 -7
- package/src/ApiKeys.ts +46 -10
- package/src/App.test.ts +108 -15
- package/src/App.ts +296 -138
- package/src/Assets.ts +29 -4
- package/src/Client.test-d.ts +809 -37
- package/src/Scope.test.ts +19 -0
- package/src/Scope.ts +28 -11
- package/src/Webhooks.test.ts +25 -0
- package/src/Webhooks.ts +1 -1
- package/src/admin/App.test.ts +9 -2
- package/src/admin/App.ts +32 -9
- package/src/admin/apps/api-keys.test.ts +190 -22
- package/src/admin/apps/api-keys.ts +170 -28
- package/src/admin/apps/earn-vaults.test.ts +338 -0
- package/src/admin/apps/earn-vaults.ts +572 -0
- package/src/admin/apps/scopes.test.ts +16 -1
- package/src/admin/ui/plugin.ts +2 -2
- package/src/admin/ui/src/components/EarnVaultForm.tsx +137 -0
- package/src/admin/ui/src/components/MobileProfile.tsx +2 -2
- package/src/admin/ui/src/components/Page.tsx +1 -1
- package/src/admin/ui/src/components/ThemeToggle.tsx +1 -1
- package/src/admin/ui/src/lib/api-keys.ts +37 -7
- package/src/admin/ui/src/lib/client.ts +1 -1
- package/src/admin/ui/src/lib/config.ts +1 -1
- package/src/admin/ui/src/lib/early-access.ts +8 -9
- package/src/admin/ui/src/lib/earn-vaults.ts +207 -0
- package/src/admin/ui/src/lib/format.ts +13 -0
- package/src/admin/ui/src/lib/organizations.test.ts +14 -4
- package/src/admin/ui/src/lib/organizations.ts +7 -1
- package/src/admin/ui/src/lib/response.ts +22 -0
- package/src/admin/ui/src/lib/scopes.test.ts +19 -11
- package/src/admin/ui/src/lib/scopes.ts +28 -7
- package/src/admin/ui/src/lib/verified-tokens.ts +10 -9
- package/src/admin/ui/src/routeTree.gen.ts +70 -7
- package/src/admin/ui/src/router.tsx +2 -2
- package/src/admin/ui/src/routes/__root.tsx +9 -8
- package/src/admin/ui/src/routes/api-keys.tsx +475 -64
- package/src/admin/ui/src/routes/early-access.tsx +5 -12
- package/src/admin/ui/src/routes/earn.vaults.tsx +348 -0
- package/src/admin/ui/src/routes/earn.vaults_.$vaultId.edit.tsx +154 -0
- package/src/admin/ui/src/routes/earn.vaults_.new.tsx +190 -0
- package/src/admin/ui/src/routes/organizations.tsx +4 -7
- package/src/admin/ui/src/routes/organizations_.$orgId.tsx +56 -54
- package/src/admin/ui/src/routes/verified-tokens.tsx +4 -4
- package/src/admin/ui/vite.config.ts +4 -1
- package/src/admin/ui.generated.ts +113 -43
- package/src/analytics/Analytics.test.ts +69 -10
- package/src/analytics/Analytics.ts +24 -1
- package/src/analytics/tables/requestEvents.ts +79 -37
- package/src/apps/Zones.test.ts +33 -0
- package/src/apps/Zones.ts +40 -0
- package/src/apps/composition.test.ts +184 -3
- package/src/apps/data/App.test.ts +28 -23
- package/src/apps/data/App.ts +95 -36
- package/src/apps/data/FxOracle.ts +1 -1
- package/src/apps/data/index.ts +0 -1
- package/src/apps/data/routes/activities.test.ts +82 -6
- package/src/apps/data/routes/activities.ts +131 -71
- package/src/apps/data/routes/balances.test.ts +50 -37
- package/src/apps/data/routes/balances.ts +5 -5
- package/src/apps/data/routes/blocks.test.ts +2 -0
- package/src/apps/data/routes/coingecko.test.ts +22 -0
- package/src/apps/data/routes/coingecko.ts +84 -48
- package/src/apps/data/routes/earn.test.ts +1391 -0
- package/src/apps/data/routes/earn.ts +2188 -0
- package/src/apps/data/routes/exchanges.test.ts +82 -33
- package/src/apps/data/routes/exchanges.ts +842 -227
- package/src/apps/data/routes/fee-amm.test.ts +4 -6
- package/src/apps/data/routes/fee-amm.ts +69 -12
- package/src/apps/data/routes/indexer.test.ts +43 -34
- package/src/apps/data/routes/indexer.ts +21 -3
- package/src/apps/data/routes/receipts.test.ts +5 -3
- package/src/apps/data/routes/receipts.ts +13 -11
- package/src/apps/data/routes/rpc.test.ts +446 -28
- package/src/apps/data/routes/rpc.ts +245 -25
- package/src/apps/data/routes/tokenlist.ts +72 -19
- package/src/apps/data/routes/tokens.test.ts +6 -8
- package/src/apps/data/routes/tokens.ts +258 -86
- package/src/apps/data/routes/transactions.test.ts +2 -0
- package/src/apps/data/routes/transactions.ts +77 -42
- package/src/apps/data/routes/transfers.test.ts +166 -4
- package/src/apps/data/routes/transfers.ts +216 -78
- package/src/apps/data/routes/valuation.test.ts +62 -9
- package/src/apps/data/routes/valuation.ts +2 -2
- package/src/apps/data/routes/webhooks.test.ts +386 -43
- package/src/apps/data/routes/webhooks.ts +172 -71
- package/src/apps/data/routes/zones.test.ts +473 -0
- package/src/apps/data/routes/zones.ts +338 -0
- package/src/apps/docs/reference.ts +8 -6
- package/src/apps/funding/Access.ts +26 -0
- package/src/apps/funding/App.test.ts +78 -0
- package/src/apps/funding/App.ts +63 -0
- package/src/apps/funding/Inventory.ts +30 -0
- package/src/apps/funding/ProviderAttempts.ts +26 -0
- package/src/apps/funding/index.ts +1 -0
- package/src/apps/funding/routes/chains.test.ts +78 -0
- package/src/apps/funding/routes/chains.ts +101 -0
- package/src/apps/funding/routes/deposit-addresses.test.ts +1628 -0
- package/src/apps/funding/routes/deposit-addresses.ts +1015 -0
- package/src/apps/funding/routes/providers.test.ts +165 -0
- package/src/apps/funding/routes/providers.ts +73 -0
- package/src/apps/funding/routes/quotes.test.ts +511 -0
- package/src/apps/funding/routes/quotes.ts +205 -0
- package/src/apps/funding/routes/transfers.test.ts +1255 -0
- package/src/apps/funding/routes/transfers.ts +704 -0
- package/src/apps/index.ts +3 -1
- package/src/apps/management/Billing.test.ts +29 -0
- package/src/apps/management/Billing.ts +23 -0
- package/src/apps/management/Error.ts +12 -0
- package/src/apps/management/routes/api-keys.test.ts +103 -3
- package/src/apps/management/routes/api-keys.ts +98 -10
- package/src/apps/management/routes/invitations.ts +4 -11
- package/src/apps/management/routes/orgs.ts +2 -9
- package/src/apps/management/routes/scopes.test.ts +7 -2
- package/src/apps/management/routes/scopes.ts +2 -2
- package/src/apps/management/routes/webhooks.test.ts +6 -1
- package/src/apps/management/routes/webhooks.ts +15 -3
- package/src/apps/mcp.test.ts +17 -2
- package/src/apps/mcp.ts +18 -13
- package/src/apps/metadata.ts +12 -0
- package/src/apps/mpp/App.ts +276 -29
- package/src/apps/mpp/Mpp.test.ts +631 -26
- package/src/apps/mpp/Mpp.ts +0 -42
- package/src/apps/mpp/internal/Adapter.ts +108 -3
- package/src/apps/mpp/internal/Error.test.ts +33 -0
- package/src/apps/mpp/internal/Error.ts +44 -6
- package/src/apps/mpp/internal/Idempotency.test.ts +213 -0
- package/src/apps/mpp/internal/Idempotency.ts +59 -5
- package/src/apps/mpp/internal/Policy.test.ts +128 -0
- package/src/apps/mpp/internal/Policy.ts +98 -0
- package/src/apps/mpp/internal/ScreenManager.test.ts +68 -0
- package/src/apps/mpp/internal/ScreenManager.ts +41 -0
- package/src/apps/mpp/internal/Screening.ts +40 -3
- package/src/apps/mpp/internal/Sponsorship.ts +144 -0
- package/src/apps/mpp/internal/Utils.ts +30 -0
- package/src/apps/relay/App.test.ts +493 -62
- package/src/apps/relay/App.ts +233 -23
- package/src/apps/relay/Sponsorships.test.ts +49 -0
- package/src/apps/relay/Sponsorships.ts +18 -6
- package/src/cloudflare.ts +279 -0
- package/src/db/Db.ts +501 -0
- package/src/db/Schema.ts +349 -2
- package/src/db/tables/earnVaults.test.ts +185 -0
- package/src/db/tables/earnVaults.ts +151 -0
- package/src/db/tables/fundingCatalog.test.ts +108 -0
- package/src/db/tables/fundingCatalog.ts +157 -0
- package/src/db/tables/fundingDepositAddresses.test.ts +580 -0
- package/src/db/tables/fundingDepositAddresses.ts +404 -0
- package/src/db/tables/fundingDepositRequestObservations.test.ts +106 -0
- package/src/db/tables/fundingDepositRequestObservations.ts +99 -0
- package/src/db/tables/fundingDeposits.test.ts +399 -0
- package/src/db/tables/fundingDeposits.ts +373 -0
- package/src/db/tables/fundingIdempotency.test.ts +182 -0
- package/src/db/tables/fundingIdempotency.ts +180 -0
- package/src/db/tables/fundingTransferEvents.ts +28 -0
- package/src/db/tables/fundingTransferTransactions.test.ts +69 -0
- package/src/db/tables/fundingTransferTransactions.ts +37 -0
- package/src/db/tables/fundingTransfers.test.ts +89 -0
- package/src/db/tables/fundingTransfers.ts +153 -0
- package/src/db/tables/organizations.ts +16 -0
- package/src/db/tables/projects.ts +16 -0
- package/src/db/tables/requestUsage.ts +23 -0
- package/src/db/tables/sponsoredTransactions.test.ts +11 -0
- package/src/db/tables/sponsoredTransactions.ts +3 -3
- package/src/db/tables/users.ts +16 -0
- package/src/db/tables/verifiedTokens.ts +19 -14
- package/src/db/tables/webhookSubscriptions.ts +58 -3
- package/src/handlers/relay.test.ts +2 -0
- package/src/handlers/relay.ts +95 -99
- package/src/internal/Auth.test.ts +225 -5
- package/src/internal/Auth.ts +109 -20
- package/src/internal/Cache.test.ts +37 -3
- package/src/internal/Cache.ts +14 -10
- package/src/internal/Cursor.test.ts +2 -2
- package/src/internal/Cursor.ts +1 -1
- package/src/internal/EarnRates.test.ts +125 -0
- package/src/internal/EarnRates.ts +409 -0
- package/src/internal/EarnVaults.test.ts +195 -0
- package/src/internal/EarnVaults.ts +876 -0
- package/src/internal/EdgeCache.test.ts +26 -7
- package/src/internal/EdgeCache.ts +48 -9
- package/src/internal/Id.ts +14 -0
- package/src/internal/Idempotency.test.ts +109 -0
- package/src/internal/Idempotency.ts +237 -0
- package/src/internal/IpAllowlist.test.ts +52 -0
- package/src/internal/IpAllowlist.ts +39 -0
- package/src/internal/Log.test-d.ts +41 -8
- package/src/internal/Log.test.ts +196 -9
- package/src/internal/Log.ts +124 -17
- package/src/internal/MetricSink.test.ts +244 -4
- package/src/internal/MetricSink.ts +51 -1
- package/src/internal/OpenApi.ts +4 -1
- package/src/internal/Provider.test.ts +17 -0
- package/src/internal/Provider.ts +17 -0
- package/src/internal/Schema.ts +27 -17
- package/src/internal/Store.test.ts +25 -0
- package/src/internal/Store.ts +46 -0
- package/src/internal/Tidx.local.test.ts +78 -3
- package/src/internal/Tidx.test.ts +240 -18
- package/src/internal/Tidx.ts +129 -33
- package/src/internal/VerifiedTokens.test.ts +15 -0
- package/src/internal/Viem.test.ts +198 -17
- package/src/internal/Viem.ts +127 -28
- package/src/internal/WebhookDestination.ts +25 -23
- package/src/internal/Webhooks.test.ts +59 -0
- package/src/internal/Webhooks.ts +34 -10
- package/src/internal/exchange/Provider.test.ts +216 -0
- package/src/internal/exchange/Provider.ts +326 -0
- package/src/internal/exchange/index.test.ts +6 -0
- package/src/internal/exchange/index.ts +1 -0
- package/src/internal/exchange/providers/uniswap.test.ts +122 -0
- package/src/internal/exchange/providers/uniswap.ts +682 -0
- package/src/internal/funding/Action.test.ts +138 -0
- package/src/internal/funding/Action.ts +117 -0
- package/src/internal/funding/Catalog.test.ts +311 -0
- package/src/internal/funding/Catalog.ts +347 -0
- package/src/internal/funding/Chain.test.ts +79 -0
- package/src/internal/funding/Chain.ts +120 -0
- package/src/internal/funding/Deposit.test.ts +26 -0
- package/src/internal/funding/Deposit.ts +522 -0
- package/src/internal/funding/DepositAddress.test.ts +18 -0
- package/src/internal/funding/DepositAddress.ts +312 -0
- package/src/internal/funding/Evidence.test.ts +297 -0
- package/src/internal/funding/Evidence.ts +425 -0
- package/src/internal/funding/Provider.test.ts +1328 -0
- package/src/internal/funding/Provider.ts +1911 -0
- package/src/internal/funding/Reconciliation.local.test.ts +511 -0
- package/src/internal/funding/Reconciliation.test.ts +3037 -0
- package/src/internal/funding/Reconciliation.ts +1202 -0
- package/src/internal/funding/Route.test.ts +66 -0
- package/src/internal/funding/Route.ts +29 -0
- package/src/internal/funding/SourceObservation.test.ts +301 -0
- package/src/internal/funding/SourceObservation.ts +267 -0
- package/src/internal/funding/Subsidy.local.test.ts +152 -0
- package/src/internal/funding/Subsidy.test.ts +75 -0
- package/src/internal/funding/Subsidy.ts +260 -0
- package/src/internal/funding/Token.test.ts +47 -0
- package/src/internal/funding/Token.ts +59 -0
- package/src/internal/funding/Transfer.test.ts +369 -0
- package/src/internal/funding/Transfer.ts +522 -0
- package/src/internal/funding/index.test.ts +21 -0
- package/src/internal/funding/index.ts +13 -0
- package/src/internal/funding/providers/across.ts +149 -0
- package/src/{apps/data/FundingQuoteProviders.test.ts → internal/funding/providers/index.test.ts} +178 -157
- package/src/internal/funding/providers/relay.test.ts +564 -0
- package/src/internal/funding/providers/relay.ts +1060 -0
- package/src/internal/funding/providers/rhino.ts +139 -0
- package/src/internal/funding/providers/squid.ts +151 -0
- package/src/internal/funding/providers/symbiosis.ts +221 -0
- package/src/internal/index.test.ts +5 -1
- package/src/internal/index.ts +5 -1
- package/src/internal/webhookDestinations/url.ts +49 -45
- package/src/providers/index.test.ts +14 -0
- package/src/providers/index.ts +54 -0
- package/dist/apps/data/FundingQuoteProviders.d.ts +0 -174
- package/dist/apps/data/FundingQuoteProviders.d.ts.map +0 -1
- package/dist/apps/data/FundingQuoteProviders.js +0 -775
- package/dist/apps/data/FundingQuoteProviders.js.map +0 -1
- package/dist/apps/data/routes/funding.d.ts.map +0 -1
- package/dist/apps/data/routes/funding.js +0 -410
- package/dist/apps/data/routes/funding.js.map +0 -1
- package/dist/internal/FundingQuotes.d.ts +0 -864
- package/dist/internal/FundingQuotes.d.ts.map +0 -1
- package/dist/internal/FundingQuotes.js +0 -672
- package/dist/internal/FundingQuotes.js.map +0 -1
- package/src/apps/data/FundingQuoteProviders.ts +0 -1043
- package/src/apps/data/routes/funding.test.ts +0 -503
- package/src/apps/data/routes/funding.ts +0 -604
- package/src/internal/FundingQuotes.test.ts +0 -456
- package/src/internal/FundingQuotes.ts +0 -944
package/src/apps/data/App.ts
CHANGED
|
@@ -11,18 +11,20 @@ import * as Path from '../../internal/Path.js'
|
|
|
11
11
|
import * as Response from '../../internal/Response.js'
|
|
12
12
|
import * as Schema from '../../internal/Schema.js'
|
|
13
13
|
import * as Tidx from '../../internal/Tidx.js'
|
|
14
|
+
import * as Timing from '../../internal/Timing.js'
|
|
14
15
|
import * as Viem from '../../internal/Viem.js'
|
|
15
16
|
import * as Scope from '../../Scope.js'
|
|
16
17
|
import * as Metadata from '../metadata.js'
|
|
18
|
+
|
|
17
19
|
import type * as FxOracle from './FxOracle.js'
|
|
18
20
|
|
|
19
21
|
import { transactions as transactionActivities } from './routes/activities.js'
|
|
20
22
|
import { addresses } from './routes/addresses.js'
|
|
21
23
|
import { blocks, blocksByTimestampCompat } from './routes/blocks.js'
|
|
22
24
|
import { coingecko } from './routes/coingecko.js'
|
|
25
|
+
import { earn } from './routes/earn.js'
|
|
23
26
|
import { exchanges } from './routes/exchanges.js'
|
|
24
27
|
import { feeAmm } from './routes/fee-amm.js'
|
|
25
|
-
import { funding } from './routes/funding.js'
|
|
26
28
|
import { indexer } from './routes/indexer.js'
|
|
27
29
|
import { receipts } from './routes/receipts.js'
|
|
28
30
|
import { rpc } from './routes/rpc.js'
|
|
@@ -32,10 +34,11 @@ import { transactions } from './routes/transactions.js'
|
|
|
32
34
|
import { transfers } from './routes/transfers.js'
|
|
33
35
|
import { verifiedTokens } from './routes/verified-tokens.js'
|
|
34
36
|
import { schema as webhookSchema, webhooks } from './routes/webhooks.js'
|
|
37
|
+
import { zones } from './routes/zones.js'
|
|
35
38
|
|
|
36
39
|
/**
|
|
37
|
-
* The chain-data route group extends app context with TIDX, assets,
|
|
38
|
-
*
|
|
40
|
+
* The chain-data route group extends app context with TIDX, assets, verified
|
|
41
|
+
* tokens, and webhooks, and exposes indexed and RPC-backed reads.
|
|
39
42
|
*
|
|
40
43
|
* ```ts
|
|
41
44
|
* App.create(options).route('/', data())
|
|
@@ -43,6 +46,8 @@ import { schema as webhookSchema, webhooks } from './routes/webhooks.js'
|
|
|
43
46
|
*/
|
|
44
47
|
export function data(options: data.Options = {}) {
|
|
45
48
|
const { assets, tidx } = options
|
|
49
|
+
const configuredChainIds =
|
|
50
|
+
typeof tidx === 'function' ? [] : Viem.configuredChainIds(tidx?.baseUrl)
|
|
46
51
|
const webhook =
|
|
47
52
|
options.webhook === false
|
|
48
53
|
? undefined
|
|
@@ -50,11 +55,17 @@ export function data(options: data.Options = {}) {
|
|
|
50
55
|
supportedChainIds: [Viem.chainId.mainnet, Viem.chainId.testnet],
|
|
51
56
|
})
|
|
52
57
|
|
|
53
|
-
// Zone endpoints are explicit trust boundaries; the API never derives them.
|
|
54
|
-
const zones = new Map((options.zones ?? []).map((zone) => [zone.chainId, zone]))
|
|
55
58
|
const dataRouteHandlers = new Set<unknown>()
|
|
56
59
|
|
|
57
60
|
const getTidx = Tidx.createGetClient({ tidx })
|
|
61
|
+
const earn_routes = earn({ fx: options.fx })
|
|
62
|
+
const indexer_routes = indexer()
|
|
63
|
+
const indexerRouteHandlers = new Set(indexer_routes.routes.map((route) => route.handler))
|
|
64
|
+
const rpcOnlyRouteHandlers = new Set(
|
|
65
|
+
earn_routes.routes
|
|
66
|
+
.filter((route) => route.path === '/v1/earn/vaults/:vaultId/positions/:address')
|
|
67
|
+
.map((route) => route.handler),
|
|
68
|
+
)
|
|
58
69
|
|
|
59
70
|
const app = new Hono<App.Environment>()
|
|
60
71
|
// Publish the chain-data context vars for this group's handlers. Runs after
|
|
@@ -65,16 +76,26 @@ export function data(options: data.Options = {}) {
|
|
|
65
76
|
const supportedChainIds = new Set<number>([
|
|
66
77
|
...c.get('supportedChainIds'),
|
|
67
78
|
...Object.keys(Tidx.url).map(Number),
|
|
68
|
-
...
|
|
79
|
+
...configuredChainIds,
|
|
69
80
|
])
|
|
70
81
|
c.set('getAsset', createGetAsset({ assets, basePath: c.get('basePath'), origin: new URL(c.req.url).origin })) // prettier-ignore
|
|
71
82
|
c.set('getClient', (chainId) => getClient(chainId ?? c.get('chainId')))
|
|
72
|
-
c.set('getTidx', (chainId) =>
|
|
83
|
+
c.set('getTidx', (chainId) => {
|
|
84
|
+
const resolved = chainId ?? c.get('chainId')
|
|
85
|
+
const client = getTidx(resolved, {
|
|
86
|
+
principal: Auth.getPrincipal(c),
|
|
87
|
+
zone: c.get('zones').get(resolved),
|
|
88
|
+
})
|
|
89
|
+
return Tidx.observe(client, {
|
|
90
|
+
record: (failure) =>
|
|
91
|
+
c.set('providerFailure', failure ? { ...failure, chainId: resolved } : undefined),
|
|
92
|
+
time: (fn) => Timing.time(c, 'tidx', fn),
|
|
93
|
+
})
|
|
94
|
+
})
|
|
73
95
|
c.set('supportedChainIds', supportedChainIds)
|
|
74
96
|
c.set('tidx', tidx)
|
|
75
97
|
c.set('verifiedTokens', options.verifiedTokens === false ? undefined : (options.verifiedTokens ?? {})) // prettier-ignore
|
|
76
98
|
c.set('webhook', webhook)
|
|
77
|
-
c.set('zones', zones)
|
|
78
99
|
await next()
|
|
79
100
|
})
|
|
80
101
|
// Resolve one chain for every data route before auth and handlers use it.
|
|
@@ -85,6 +106,8 @@ export function data(options: data.Options = {}) {
|
|
|
85
106
|
c,
|
|
86
107
|
defaultChainId,
|
|
87
108
|
handlers: dataRouteHandlers,
|
|
109
|
+
indexerHandlers: indexerRouteHandlers,
|
|
110
|
+
rpcOnlyHandlers: rpcOnlyRouteHandlers,
|
|
88
111
|
})
|
|
89
112
|
if (!selection.matched) return next()
|
|
90
113
|
if (selection.conflict || selection.invalid)
|
|
@@ -93,19 +116,39 @@ export function data(options: data.Options = {}) {
|
|
|
93
116
|
message: selection.conflict ? 'Conflicting chain ids' : 'Invalid chain id',
|
|
94
117
|
status: 400,
|
|
95
118
|
})
|
|
96
|
-
|
|
97
|
-
|
|
119
|
+
const principal = Auth.getPrincipal(c)
|
|
120
|
+
const rpc_config = c.get('rpc')
|
|
121
|
+
const tidx_config = c.get('tidx')
|
|
122
|
+
const zones = c.get('zones')
|
|
123
|
+
// Raw passthroughs and RPC-only reads need only RPC; composed data routes
|
|
124
|
+
// require both upstreams to avoid falling through to unrelated defaults.
|
|
125
|
+
const narrowedChainIds = new Set(
|
|
126
|
+
[...supportedChainIds].filter((chainId) => {
|
|
127
|
+
const context = { chainId, principal, zone: zones.get(chainId) }
|
|
128
|
+
const hasRpc = Viem.resolveRpc(rpc_config, context).url !== undefined
|
|
129
|
+
const hasTidx = Tidx.resolve(tidx_config, context).baseUrl !== undefined
|
|
130
|
+
if (selection.rpc || selection.rpcOnly) return hasRpc
|
|
131
|
+
if (selection.indexer) return hasTidx
|
|
132
|
+
return hasRpc && hasTidx
|
|
133
|
+
}),
|
|
134
|
+
)
|
|
135
|
+
c.set('supportedChainIds', narrowedChainIds)
|
|
136
|
+
if (!narrowedChainIds.has(selection.chainId))
|
|
137
|
+
return Response.unsupportedChainId(c, selection.chainId, narrowedChainIds)
|
|
98
138
|
c.set('chainId', selection.chainId)
|
|
99
139
|
return next()
|
|
100
140
|
})
|
|
101
141
|
// Zone data requires an issued scope. Raw RPC may instead forward the
|
|
102
142
|
// caller's Zone token to the node that enforces account scoping.
|
|
103
143
|
.use('*', async (c, next) => {
|
|
144
|
+
const zones = c.get('zones')
|
|
104
145
|
if (zones.size === 0) return next()
|
|
105
146
|
const selection = resolveChainSelector({
|
|
106
147
|
c,
|
|
107
148
|
defaultChainId: c.get('chainId'),
|
|
108
149
|
handlers: dataRouteHandlers,
|
|
150
|
+
indexerHandlers: indexerRouteHandlers,
|
|
151
|
+
rpcOnlyHandlers: rpcOnlyRouteHandlers,
|
|
109
152
|
})
|
|
110
153
|
if (!selection.matched) return next()
|
|
111
154
|
const chainId = c.get('chainId')
|
|
@@ -116,13 +159,14 @@ export function data(options: data.Options = {}) {
|
|
|
116
159
|
const allowed =
|
|
117
160
|
scopes?.includes(Scope.wildcard) ||
|
|
118
161
|
scopes?.includes(`zone:${chainId}:read`) ||
|
|
162
|
+
scopes?.includes(`zone:${chainId}:write`) ||
|
|
119
163
|
(selection.rpc && Boolean(c.req.header(ZoneRpcAuthentication.headerName)?.trim()))
|
|
120
164
|
if (!allowed)
|
|
121
165
|
return Response.error(c, {
|
|
122
166
|
code: 'api_key_forbidden',
|
|
123
167
|
message: selection.rpc
|
|
124
|
-
? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\`, or pass a Zone token via \`X-Authorization-Token\`.`
|
|
125
|
-
: `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\`.`,
|
|
168
|
+
? `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`, or pass a Zone token via \`X-Authorization-Token\`.`
|
|
169
|
+
: `Chain id ${chainId} is a zone. Use an API key granting \`zone:${chainId}:read\` or \`zone:${chainId}:write\`.`,
|
|
126
170
|
status: 403,
|
|
127
171
|
})
|
|
128
172
|
|
|
@@ -143,6 +187,8 @@ export function data(options: data.Options = {}) {
|
|
|
143
187
|
c,
|
|
144
188
|
defaultChainId: c.get('chainId'),
|
|
145
189
|
handlers: dataRouteHandlers,
|
|
190
|
+
indexerHandlers: indexerRouteHandlers,
|
|
191
|
+
rpcOnlyHandlers: rpcOnlyRouteHandlers,
|
|
146
192
|
})
|
|
147
193
|
if (!selection.matched || !Viem.isMainnet(c.get('chainId'))) return next()
|
|
148
194
|
|
|
@@ -167,10 +213,10 @@ export function data(options: data.Options = {}) {
|
|
|
167
213
|
})
|
|
168
214
|
.route('/', addresses({ fx: options.fx }))
|
|
169
215
|
.route('/', blocks())
|
|
216
|
+
.route('/', earn_routes)
|
|
170
217
|
.route('/', exchanges({ fx: options.fx }))
|
|
171
218
|
.route('/', feeAmm())
|
|
172
|
-
.route('/',
|
|
173
|
-
.route('/', indexer())
|
|
219
|
+
.route('/', indexer_routes)
|
|
174
220
|
.route('/', receipts({ fx: options.fx }))
|
|
175
221
|
.route('/', tokenlist())
|
|
176
222
|
.route('/', tokens())
|
|
@@ -179,6 +225,7 @@ export function data(options: data.Options = {}) {
|
|
|
179
225
|
.route('/', transfers({ fx: options.fx }))
|
|
180
226
|
.route('/', verifiedTokens())
|
|
181
227
|
.route('/', webhooks({ enabled: options.webhook !== false }))
|
|
228
|
+
.route('/', zones())
|
|
182
229
|
.route('/', rpc())
|
|
183
230
|
.route('/', coingecko())
|
|
184
231
|
.route('/', blocksByTimestampCompat())
|
|
@@ -187,22 +234,24 @@ export function data(options: data.Options = {}) {
|
|
|
187
234
|
c,
|
|
188
235
|
defaultChainId: c.get('chainId'),
|
|
189
236
|
handlers: dataRouteHandlers,
|
|
237
|
+
indexerHandlers: indexerRouteHandlers,
|
|
238
|
+
rpcOnlyHandlers: rpcOnlyRouteHandlers,
|
|
190
239
|
})
|
|
191
240
|
return (
|
|
192
241
|
selection.matched &&
|
|
193
242
|
!selection.conflict &&
|
|
194
243
|
!selection.invalid &&
|
|
195
|
-
!zones.has(selection.chainId)
|
|
244
|
+
!c.get('zones').has(selection.chainId)
|
|
196
245
|
)
|
|
197
246
|
}
|
|
198
247
|
for (const route of app.routes) {
|
|
199
248
|
if (route.method === 'ALL') continue
|
|
200
249
|
dataRouteHandlers.add(route.handler)
|
|
201
|
-
|
|
250
|
+
EdgeCache.setEligibility(route.handler, edgeCacheEligible)
|
|
202
251
|
}
|
|
203
252
|
return Metadata.attach(app, {
|
|
204
253
|
...openapi,
|
|
205
|
-
supportedChainIds: [...Object.keys(Tidx.url).map(Number), ...
|
|
254
|
+
supportedChainIds: [...Object.keys(Tidx.url).map(Number), ...configuredChainIds],
|
|
206
255
|
})
|
|
207
256
|
}
|
|
208
257
|
|
|
@@ -211,8 +260,6 @@ export declare namespace data {
|
|
|
211
260
|
type Options = {
|
|
212
261
|
/** Static API asset store for the current runtime (e.g. `Assets.cloudflareR2(...)`). Omit to skip static assets — token logo URIs go unresolved. */
|
|
213
262
|
assets?: Assets.Assets | undefined
|
|
214
|
-
/** Funding quote provider configuration. */
|
|
215
|
-
funding?: funding.Options | undefined
|
|
216
263
|
/** FX configuration for the valuation endpoint. */
|
|
217
264
|
fx?: Fx | undefined
|
|
218
265
|
/** TIDX query client options. */
|
|
@@ -221,11 +268,6 @@ export declare namespace data {
|
|
|
221
268
|
verifiedTokens?: VerifiedTokens | false | undefined
|
|
222
269
|
/** Webhook feature configuration. Enabled by default (rows live in `db`); pass `false` to disable, leaving `/webhooks` mounted but returning `404` and hidden from the OpenAPI document. */
|
|
223
270
|
webhook?: Webhook | false | undefined
|
|
224
|
-
/**
|
|
225
|
-
* Zone chains served by this deployment. REST and TIDX require a
|
|
226
|
-
* `zone:<chainId>:read` scope; raw RPC may forward a Zone token instead.
|
|
227
|
-
*/
|
|
228
|
-
zones?: readonly Zone[] | undefined
|
|
229
271
|
}
|
|
230
272
|
|
|
231
273
|
/** FX configuration for the valuation endpoint. */
|
|
@@ -234,14 +276,6 @@ export declare namespace data {
|
|
|
234
276
|
oracle?: FxOracle.Oracle | undefined
|
|
235
277
|
}
|
|
236
278
|
|
|
237
|
-
/** One zone chain served by this deployment. */
|
|
238
|
-
type Zone = {
|
|
239
|
-
/** Zone chain id. Consumer-supplied literal; the API never derives zone chain ids. */
|
|
240
|
-
chainId: number
|
|
241
|
-
/** Zone RPC used when forwarding a caller-supplied Zone token. */
|
|
242
|
-
forwardRpcUrl: string
|
|
243
|
-
}
|
|
244
|
-
|
|
245
279
|
/** Verified-token feature configuration. */
|
|
246
280
|
type VerifiedTokens = {
|
|
247
281
|
/**
|
|
@@ -260,13 +294,19 @@ function resolveChainSelector(options: {
|
|
|
260
294
|
c: Context<App.Environment>
|
|
261
295
|
defaultChainId: Viem.ChainId
|
|
262
296
|
handlers: ReadonlySet<unknown>
|
|
297
|
+
indexerHandlers: ReadonlySet<unknown>
|
|
298
|
+
rpcOnlyHandlers: ReadonlySet<unknown>
|
|
263
299
|
}) {
|
|
264
300
|
let matched = false
|
|
265
301
|
let path: string | undefined
|
|
266
302
|
let rpc = false
|
|
303
|
+
let rpcOnly = false
|
|
304
|
+
let indexer = false
|
|
267
305
|
for (const route of matchedRoutes(options.c)) {
|
|
268
306
|
if (!options.handlers.has(route.handler)) continue
|
|
269
307
|
matched = true
|
|
308
|
+
if (options.indexerHandlers.has(route.handler)) indexer = true
|
|
309
|
+
if (options.rpcOnlyHandlers.has(route.handler)) rpcOnly = true
|
|
270
310
|
const selector = pathChainSelector(route.path, options.c.req.path)
|
|
271
311
|
if (selector.name === undefined) continue
|
|
272
312
|
path = selector.value
|
|
@@ -278,9 +318,11 @@ function resolveChainSelector(options: {
|
|
|
278
318
|
return {
|
|
279
319
|
chainId: options.defaultChainId,
|
|
280
320
|
conflict: false,
|
|
321
|
+
indexer: false,
|
|
281
322
|
invalid: false,
|
|
282
323
|
matched: false,
|
|
283
324
|
rpc: false,
|
|
325
|
+
rpcOnly: false,
|
|
284
326
|
}
|
|
285
327
|
|
|
286
328
|
const search = new URL(options.c.req.url).searchParams
|
|
@@ -294,9 +336,11 @@ function resolveChainSelector(options: {
|
|
|
294
336
|
return {
|
|
295
337
|
chainId: chainIds[0] ?? options.defaultChainId,
|
|
296
338
|
conflict: chainIds.length > 1,
|
|
339
|
+
indexer,
|
|
297
340
|
invalid: parsed.some((result) => !result.success),
|
|
298
341
|
matched: true,
|
|
299
342
|
rpc,
|
|
343
|
+
rpcOnly,
|
|
300
344
|
}
|
|
301
345
|
}
|
|
302
346
|
|
|
@@ -326,14 +370,18 @@ const openapi = {
|
|
|
326
370
|
{ name: 'Activities', description: 'A readable feed of what an account did onchain.' },
|
|
327
371
|
{ name: 'Balances', description: 'How much of each token an account holds.' },
|
|
328
372
|
{ name: 'Blocks', description: 'The ordered batches of transactions making up the chain.' },
|
|
373
|
+
{ name: 'Earn', description: 'Vaults that earn yield from assets deposited on Tempo.' },
|
|
329
374
|
{ name: 'Exchange', description: "Tempo's built-in stablecoin exchange: pairs, swaps, orders, prices." }, // prettier-ignore
|
|
330
375
|
{ name: 'Fee AMM', description: 'Pools that convert stablecoins to pay fees.' },
|
|
331
|
-
{ name: 'Funding', description: 'Live quotes and supported inputs for funding Tempo.' },
|
|
332
376
|
{ name: 'Tokens', description: 'TIP-20 token details, supply, and holders.' },
|
|
333
377
|
{ name: 'Transactions', description: 'Transactions submitted to Tempo, and their receipts.' },
|
|
334
|
-
{
|
|
378
|
+
{
|
|
379
|
+
name: 'Transfers',
|
|
380
|
+
description: 'Token movements from executing transactions.',
|
|
381
|
+
},
|
|
335
382
|
{ name: 'Verified Tokens', description: 'A curated, trusted list of TIP-20 tokens.' },
|
|
336
383
|
{ name: 'Webhooks', description: 'Get signed callbacks when onchain events happen.' },
|
|
384
|
+
{ name: 'Zones', description: 'Private chain operations anchored to Tempo.' },
|
|
337
385
|
{ name: 'Indexer', description: "Run read-only SQL queries against Tempo's indexed data." },
|
|
338
386
|
{ name: 'RPC', description: 'Direct access to the chain over Ethereum JSON-RPC. Not part of the stable API contract; best-effort support only. No compatibility, latency, availability, or data-freshness guarantees. Breaking changes may happen with limited notice.' }, // prettier-ignore
|
|
339
387
|
{ name: 'CoinGecko', description: "Exchange data in CoinGecko's GeckoTerminal format." },
|
|
@@ -345,14 +393,15 @@ const openapi = {
|
|
|
345
393
|
'Activities',
|
|
346
394
|
'Balances',
|
|
347
395
|
'Blocks',
|
|
396
|
+
'Earn',
|
|
348
397
|
'Exchange',
|
|
349
398
|
'Fee AMM',
|
|
350
|
-
'Funding',
|
|
351
399
|
'Tokens',
|
|
352
400
|
'Transactions',
|
|
353
401
|
'Transfers',
|
|
354
402
|
'Verified Tokens',
|
|
355
403
|
'Webhooks',
|
|
404
|
+
'Zones',
|
|
356
405
|
'Indexer',
|
|
357
406
|
'RPC',
|
|
358
407
|
'MCP',
|
|
@@ -415,7 +464,7 @@ function webhooksBlock() {
|
|
|
415
464
|
function createGetAsset(options: createGetAsset.Options): App.GetAsset {
|
|
416
465
|
const { assets, basePath, origin } = options
|
|
417
466
|
if (!assets) return () => undefined
|
|
418
|
-
|
|
467
|
+
const getAsset: App.GetAsset = async (chainId, path) => {
|
|
419
468
|
const pathname = Path.join(basePath, 'assets', String(chainId), path)
|
|
420
469
|
// `path` may be absolute (`Path.join` returns a leading slash); strip it so
|
|
421
470
|
// the key is `:chainId/:path`, not `:chainId//:path`.
|
|
@@ -429,6 +478,16 @@ function createGetAsset(options: createGetAsset.Options): App.GetAsset {
|
|
|
429
478
|
uri: new URL(pathname, origin).toString(),
|
|
430
479
|
}
|
|
431
480
|
}
|
|
481
|
+
const list = assets.list
|
|
482
|
+
if (list)
|
|
483
|
+
getAsset.list = async (chainId, path) => {
|
|
484
|
+
const prefix = `${chainId}/${path.replace(/^\/+/, '')}`
|
|
485
|
+
return (await list(prefix)).map((key) => ({
|
|
486
|
+
key,
|
|
487
|
+
uri: new URL(Path.join(basePath, 'assets', key), origin).toString(),
|
|
488
|
+
}))
|
|
489
|
+
}
|
|
490
|
+
return getAsset
|
|
432
491
|
}
|
|
433
492
|
|
|
434
493
|
declare namespace createGetAsset {
|
|
@@ -4,7 +4,7 @@ import * as Ttl from '../../internal/Ttl.js'
|
|
|
4
4
|
|
|
5
5
|
/** A pluggable fiat FX rate oracle consumed by the valuation endpoint. */
|
|
6
6
|
export type Oracle = {
|
|
7
|
-
/** Oracle identifier, surfaced as
|
|
7
|
+
/** Oracle identifier, surfaced as valuation rate provenance (e.g. `ecb`). */
|
|
8
8
|
name: string
|
|
9
9
|
/** Fetches the oracle's current rate set. */
|
|
10
10
|
rates: () => Promise<RateSet>
|
package/src/apps/data/index.ts
CHANGED
|
@@ -1,13 +1,18 @@
|
|
|
1
|
+
/** @module-tag localnet */
|
|
2
|
+
|
|
1
3
|
import { Address, Hex, Value as core_Value } from 'ox'
|
|
2
4
|
import { FxOracle } from 'tapimo/apps'
|
|
3
|
-
import { encodeAbiParameters, encodeEventTopics } from 'viem'
|
|
4
|
-
import {
|
|
5
|
+
import { createClient, encodeAbiParameters, encodeEventTopics, http } from 'viem'
|
|
6
|
+
import { sendTransactionSync } from 'viem/actions'
|
|
7
|
+
import { Abis, Actions, Addresses } from 'viem/tempo'
|
|
5
8
|
|
|
6
9
|
import * as TestApp from '../../../../test/App.js'
|
|
7
10
|
import * as Runtime from '../../../../test/runtime.js'
|
|
11
|
+
import * as Tempo from '../../../../test/Tempo.js'
|
|
8
12
|
import * as Cursor from '../../../internal/Cursor.js'
|
|
9
13
|
import * as Store from '../../../internal/Store.js'
|
|
10
14
|
import * as Activities from './activities.js'
|
|
15
|
+
import * as Transactions from './transactions.js'
|
|
11
16
|
|
|
12
17
|
// Deterministic EUR-based rate set so conversion math is exact in assertions.
|
|
13
18
|
const fixed = FxOracle.from({
|
|
@@ -297,7 +302,7 @@ describe('GET /addresses/:address/activities', () => {
|
|
|
297
302
|
const hash = runtime.fixtures!.faucetTransactionHashes[0]!
|
|
298
303
|
|
|
299
304
|
const response = await client.v1.transactions[':transactionHash'].activities.$get(
|
|
300
|
-
{ param: { transactionHash: hash }, query: {
|
|
305
|
+
{ param: { transactionHash: hash }, query: { 'valuation.currency': 'AUD' } },
|
|
301
306
|
TestApp.auth,
|
|
302
307
|
)
|
|
303
308
|
const body = await TestApp.json(response, Activities.schema.getTransactionActivities.Response)
|
|
@@ -314,7 +319,7 @@ describe('GET /addresses/:address/activities', () => {
|
|
|
314
319
|
amount: core_Value.format((BigInt(amount.baseUnits) * 16n) / 10n, 6),
|
|
315
320
|
currency: 'AUD',
|
|
316
321
|
})
|
|
317
|
-
expect(body.meta?.
|
|
322
|
+
expect(body.meta?.valuation).toMatchInlineSnapshot(`
|
|
318
323
|
{
|
|
319
324
|
"asOf": "2026-01-01T00:00:00.000Z",
|
|
320
325
|
"basis": "nominal",
|
|
@@ -330,15 +335,86 @@ describe('GET /addresses/:address/activities', () => {
|
|
|
330
335
|
|
|
331
336
|
test('paginates with an opaque cursor', async () => {
|
|
332
337
|
const first = await activities(accounts.keychain, { limit: '5' })
|
|
338
|
+
expect(first.nextCursor).toBeTypeOf('string')
|
|
333
339
|
if (!first.nextCursor) return
|
|
334
340
|
const response = await request(accounts.keychain, { limit: '5', cursor: first.nextCursor })
|
|
335
341
|
expect(response.headers.get('cache-control')).toMatchInlineSnapshot(
|
|
336
342
|
`"private, max-age=60, stale-while-revalidate=300"`,
|
|
337
343
|
)
|
|
338
344
|
const second = await TestApp.json(response, Activities.schema.getAddressActivities.Response)
|
|
339
|
-
|
|
345
|
+
const firstHashes = new Set(
|
|
346
|
+
first.data.flatMap((entry) =>
|
|
347
|
+
entry.type === 'group'
|
|
348
|
+
? entry.data.items.map((item) => item.transactionHash)
|
|
349
|
+
: [entry.transactionHash],
|
|
350
|
+
),
|
|
351
|
+
)
|
|
352
|
+
const secondHashes = second.data.flatMap((entry) =>
|
|
353
|
+
entry.type === 'group'
|
|
354
|
+
? entry.data.items.map((item) => item.transactionHash)
|
|
355
|
+
: [entry.transactionHash],
|
|
356
|
+
)
|
|
357
|
+
expect(secondHashes.every((hash) => !firstHashes.has(hash))).toBe(true)
|
|
340
358
|
})
|
|
341
359
|
|
|
360
|
+
test.skipIf(runtime.mode !== 'localnet')(
|
|
361
|
+
'keeps older activity behind a high-log transaction',
|
|
362
|
+
async () => {
|
|
363
|
+
const account = Tempo.accounts[3]
|
|
364
|
+
const wallet = createClient({
|
|
365
|
+
account,
|
|
366
|
+
chain: Tempo.chain,
|
|
367
|
+
transport: http(Tempo.rpcUrl),
|
|
368
|
+
})
|
|
369
|
+
await Actions.faucet.fundSync(Tempo.client, { account, timeout: 60_000 })
|
|
370
|
+
const approval_result = await Actions.token.approveSync(wallet, {
|
|
371
|
+
amount: 1n,
|
|
372
|
+
spender: Addresses.stablecoinDex,
|
|
373
|
+
token: Addresses.pathUsd,
|
|
374
|
+
})
|
|
375
|
+
const approval = 'receipt' in approval_result ? approval_result.receipt : approval_result
|
|
376
|
+
const highLog = await sendTransactionSync(wallet, {
|
|
377
|
+
account,
|
|
378
|
+
calls: Array.from({ length: 25 }, (_, index) =>
|
|
379
|
+
Actions.token.approve.call(wallet, {
|
|
380
|
+
amount: BigInt(index + 2),
|
|
381
|
+
spender: Addresses.stablecoinDex,
|
|
382
|
+
token: Addresses.pathUsd,
|
|
383
|
+
}),
|
|
384
|
+
),
|
|
385
|
+
})
|
|
386
|
+
// The legacy `limit * 4` joined-row window stopped inside this transaction
|
|
387
|
+
// and never exposed the older approval to the activity paginator.
|
|
388
|
+
expect(highLog.logs.length).toBeGreaterThan(20)
|
|
389
|
+
|
|
390
|
+
const pending = new Set(
|
|
391
|
+
[approval.transactionHash, highLog.transactionHash].map((hash) => hash.toLowerCase()),
|
|
392
|
+
)
|
|
393
|
+
const deadline = Date.now() + 60_000
|
|
394
|
+
while (Date.now() < deadline && pending.size > 0) {
|
|
395
|
+
const response = await client.v1.transactions.$get(
|
|
396
|
+
{ query: { limit: '200', sender: account.address } },
|
|
397
|
+
{ headers: { 'cache-control': 'no-store', ...TestApp.auth.headers } },
|
|
398
|
+
)
|
|
399
|
+
if (response.status === 200) {
|
|
400
|
+
const body = await TestApp.json(response, Transactions.schema.getTransactions.Response)
|
|
401
|
+
for (const transaction of body.data) pending.delete(transaction.hash.toLowerCase())
|
|
402
|
+
}
|
|
403
|
+
if (pending.size > 0) await new Promise((resolve) => setTimeout(resolve, 250))
|
|
404
|
+
}
|
|
405
|
+
expect(pending).toEqual(new Set())
|
|
406
|
+
|
|
407
|
+
const body = await activities(account.address, { limit: '5' })
|
|
408
|
+
expect(
|
|
409
|
+
body.data.some(
|
|
410
|
+
(entry) =>
|
|
411
|
+
entry.type === 'approval' && entry.transactionHash === approval.transactionHash,
|
|
412
|
+
),
|
|
413
|
+
).toBe(true)
|
|
414
|
+
},
|
|
415
|
+
120_000,
|
|
416
|
+
)
|
|
417
|
+
|
|
342
418
|
test('validates denominations on empty feeds', async () => {
|
|
343
419
|
const client = TestApp.client({ fx: { oracle: fixed } })
|
|
344
420
|
const cursor = Cursor.encode([0, 0])
|
|
@@ -353,7 +429,7 @@ describe('GET /addresses/:address/activities', () => {
|
|
|
353
429
|
const response = await client.v1.addresses[':address'].activities.$get(
|
|
354
430
|
{
|
|
355
431
|
param: { address: accounts.keychain },
|
|
356
|
-
query: { cursor,
|
|
432
|
+
query: { cursor, limit: '5', 'valuation.currency': 'JPY' },
|
|
357
433
|
},
|
|
358
434
|
TestApp.auth,
|
|
359
435
|
)
|