tapimo 0.7.1 → 0.7.2
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/dist/ApiKeys.d.ts +24 -7
- package/dist/ApiKeys.d.ts.map +1 -1
- package/dist/ApiKeys.js +17 -5
- package/dist/ApiKeys.js.map +1 -1
- package/dist/App.d.ts +12104 -7861
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +191 -128
- 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 +601 -20
- 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 +94 -11
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +141 -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/verified-tokens.d.ts +166 -166
- 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 +2 -0
- package/dist/analytics/Analytics.d.ts.map +1 -1
- package/dist/analytics/Analytics.js +18 -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 +12125 -7913
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +91 -19
- 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 +32 -32
- 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 +312 -312
- package/dist/apps/data/routes/balances.d.ts +18 -18
- package/dist/apps/data/routes/balances.js +5 -5
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +176 -176
- 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 +2144 -0
- package/dist/apps/data/routes/earn.d.ts.map +1 -0
- package/dist/apps/data/routes/earn.js +947 -0
- package/dist/apps/data/routes/earn.js.map +1 -0
- package/dist/apps/data/routes/exchanges.d.ts +1625 -718
- 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/funding.d.ts +4092 -387
- package/dist/apps/data/routes/funding.d.ts.map +1 -1
- package/dist/apps/data/routes/funding.js +1403 -256
- package/dist/apps/data/routes/funding.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +30 -30
- package/dist/apps/data/routes/indexer.d.ts.map +1 -1
- package/dist/apps/data/routes/indexer.js +19 -2
- package/dist/apps/data/routes/indexer.js.map +1 -1
- package/dist/apps/data/routes/receipts.d.ts +263 -263
- 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 +5 -5
- package/dist/apps/data/routes/rpc.d.ts.map +1 -1
- package/dist/apps/data/routes/rpc.js +211 -22
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +36 -36
- 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 +114 -86
- 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 +53 -53
- 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/webhooks.d.ts +369 -367
- 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/index.d.ts +2 -1
- package/dist/apps/index.d.ts.map +1 -1
- package/dist/apps/index.js +2 -1
- package/dist/apps/index.js.map +1 -1
- package/dist/apps/management/App.d.ts +670 -670
- 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 +5 -5
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +2 -8
- 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 +2 -2
- package/dist/apps/management/routes/invitations.d.ts +62 -62
- 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 +30 -30
- package/dist/apps/management/routes/me.d.ts +6 -6
- package/dist/apps/management/routes/members.d.ts +2 -2
- package/dist/apps/management/routes/orgs.d.ts +48 -48
- 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 +9 -9
- package/dist/apps/management/routes/scopes.js +2 -2
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +36 -36
- package/dist/apps/management/routes/webhooks.d.ts +50 -50
- 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/mpp/App.d.ts +55 -56
- 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/db/Db.d.ts +20 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +342 -0
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +921 -1
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +269 -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 +159 -0
- package/dist/db/tables/fundingDepositAddresses.d.ts.map +1 -0
- package/dist/db/tables/fundingDepositAddresses.js +206 -0
- package/dist/db/tables/fundingDepositAddresses.js.map +1 -0
- package/dist/db/tables/fundingDeposits.d.ts +115 -0
- package/dist/db/tables/fundingDeposits.d.ts.map +1 -0
- package/dist/db/tables/fundingDeposits.js +100 -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 +26 -0
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +35 -2
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +16 -10
- 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 +8 -1
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +33 -7
- 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/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 +1 -1
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +3 -0
- 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 +43 -24
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +79 -11
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Viem.d.ts +82 -65
- package/dist/internal/Viem.d.ts.map +1 -1
- package/dist/internal/Viem.js +83 -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 +366 -0
- package/dist/internal/funding/Deposit.d.ts.map +1 -0
- package/dist/internal/funding/Deposit.js +286 -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 +52 -0
- package/dist/internal/funding/Evidence.d.ts.map +1 -0
- package/dist/internal/funding/Evidence.js +314 -0
- package/dist/internal/funding/Evidence.js.map +1 -0
- package/dist/internal/funding/Provider.d.ts +1186 -0
- package/dist/internal/funding/Provider.d.ts.map +1 -0
- package/dist/internal/funding/Provider.js +1081 -0
- package/dist/internal/funding/Provider.js.map +1 -0
- package/dist/internal/funding/Reconciliation.d.ts +113 -0
- package/dist/internal/funding/Reconciliation.d.ts.map +1 -0
- package/dist/internal/funding/Reconciliation.js +676 -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/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 +13 -0
- package/dist/internal/funding/index.d.ts.map +1 -0
- package/dist/internal/funding/index.js +13 -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 +46 -0
- package/dist/internal/funding/providers/relay.d.ts.map +1 -0
- package/dist/internal/funding/providers/relay.js +464 -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 +9 -4
- package/src/ApiKeys.test.ts +11 -7
- package/src/ApiKeys.ts +37 -9
- package/src/App.test.ts +85 -10
- package/src/App.ts +224 -137
- package/src/Assets.ts +29 -4
- package/src/Client.test-d.ts +650 -30
- 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 +167 -23
- package/src/admin/apps/api-keys.ts +166 -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 +20 -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 +84 -1
- package/src/apps/data/App.test.ts +28 -11
- package/src/apps/data/App.ts +96 -33
- 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 +1108 -0
- package/src/apps/data/routes/earn.ts +1391 -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/funding.test.ts +2712 -221
- package/src/apps/data/routes/funding.ts +1604 -387
- package/src/apps/data/routes/indexer.test.ts +43 -34
- package/src/apps/data/routes/indexer.ts +19 -2
- 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 +243 -25
- package/src/apps/data/routes/tokenlist.ts +72 -19
- 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/index.ts +2 -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 +5 -3
- package/src/apps/management/routes/api-keys.ts +2 -9
- 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/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 +122 -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/db/Db.ts +439 -0
- package/src/db/Schema.ts +325 -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 +376 -0
- package/src/db/tables/fundingDeposits.test.ts +261 -0
- package/src/db/tables/fundingDeposits.ts +229 -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 +48 -0
- package/src/internal/Auth.ts +61 -2
- package/src/internal/Cache.ts +13 -9
- 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 +19 -0
- package/src/internal/EdgeCache.ts +35 -5
- 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/Log.test-d.ts +41 -8
- package/src/internal/Log.test.ts +189 -8
- 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 +3 -0
- 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 +212 -18
- package/src/internal/Tidx.ts +112 -32
- package/src/internal/VerifiedTokens.test.ts +15 -0
- package/src/internal/Viem.test.ts +170 -17
- package/src/internal/Viem.ts +111 -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 +453 -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 +430 -0
- package/src/internal/funding/Provider.test.ts +1328 -0
- package/src/internal/funding/Provider.ts +1796 -0
- package/src/internal/funding/Reconciliation.local.test.ts +504 -0
- package/src/internal/funding/Reconciliation.test.ts +2020 -0
- package/src/internal/funding/Reconciliation.ts +930 -0
- package/src/internal/funding/Route.test.ts +66 -0
- package/src/internal/funding/Route.ts +29 -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 +20 -0
- package/src/internal/funding/index.ts +12 -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 +474 -0
- package/src/internal/funding/providers/relay.ts +559 -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/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/internal/FundingQuotes.test.ts +0 -456
- package/src/internal/FundingQuotes.ts +0 -944
|
@@ -0,0 +1,572 @@
|
|
|
1
|
+
import { type Context, Hono } from 'hono'
|
|
2
|
+
import * as z from 'zod/mini'
|
|
3
|
+
|
|
4
|
+
import * as Earn from '../../apps/data/routes/earn.js'
|
|
5
|
+
import * as Db from '../../db/Db.js'
|
|
6
|
+
import * as core_EarnVaults from '../../db/tables/earnVaults.js'
|
|
7
|
+
import * as Cursor from '../../internal/Cursor.js'
|
|
8
|
+
import * as EarnVaults from '../../internal/EarnVaults.js'
|
|
9
|
+
import * as OpenApi from '../../internal/OpenApi.js'
|
|
10
|
+
import * as Path from '../../internal/Path.js'
|
|
11
|
+
import * as Response from '../../internal/Response.js'
|
|
12
|
+
import * as Schema from '../../internal/Schema.js'
|
|
13
|
+
import * as VerifiedTokens from '../../internal/VerifiedTokens.js'
|
|
14
|
+
import * as Viem from '../../internal/Viem.js'
|
|
15
|
+
import type * as App from '../App.js'
|
|
16
|
+
|
|
17
|
+
/** Zod schemas owned by the admin verified-vault handler. */
|
|
18
|
+
export namespace schema {
|
|
19
|
+
/** One Earn vault, shared with the public detail API. */
|
|
20
|
+
export const Vault = Earn.schema.Vault
|
|
21
|
+
|
|
22
|
+
/** One registry-curated Earn vault, shared with the public verified list. */
|
|
23
|
+
export const VerifiedVault = Earn.schema.VerifiedVault
|
|
24
|
+
|
|
25
|
+
/** Schemas for the listVerifiedEarnVaults operation. */
|
|
26
|
+
export namespace listVerifiedEarnVaults {
|
|
27
|
+
/** Query parameters for verified Earn vaults, without the public rate window. */
|
|
28
|
+
export const Query = Earn.schema.getVerifiedEarnVaults.BaseQuery
|
|
29
|
+
|
|
30
|
+
/** Paginated verified Earn vaults. */
|
|
31
|
+
export const Response = Earn.schema.getVerifiedEarnVaults.Response
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
/** Schemas for the getVerifiedEarnVault operation. */
|
|
35
|
+
export namespace getVerifiedEarnVault {
|
|
36
|
+
/** Path parameters identifying one verified vault. */
|
|
37
|
+
export const Params = Earn.schema.getEarnVault.Params
|
|
38
|
+
|
|
39
|
+
/** Query parameters selecting the vault chain and included fields. */
|
|
40
|
+
export const Query = Earn.schema.getEarnVault.BaseQuery
|
|
41
|
+
|
|
42
|
+
/** One Earn vault resolved for registry management. */
|
|
43
|
+
export const Response = Vault
|
|
44
|
+
}
|
|
45
|
+
|
|
46
|
+
/** Schemas for the putVerifiedEarnVault operation. */
|
|
47
|
+
export namespace putVerifiedEarnVault {
|
|
48
|
+
/** Curated fields used to verify and store one Earn vault. */
|
|
49
|
+
export const Body = z
|
|
50
|
+
.strictObject({
|
|
51
|
+
chainId: Schema.ChainId,
|
|
52
|
+
description: z
|
|
53
|
+
.optional(
|
|
54
|
+
z.nullable(
|
|
55
|
+
z.string().check(
|
|
56
|
+
z.describe('Curated vault description.'),
|
|
57
|
+
z.meta({
|
|
58
|
+
examples: [
|
|
59
|
+
'Bridge test PATHUSD deposited into the canonical synchronous Earn stack.',
|
|
60
|
+
],
|
|
61
|
+
}),
|
|
62
|
+
),
|
|
63
|
+
),
|
|
64
|
+
)
|
|
65
|
+
.check(z.describe('Curated vault description, or null when absent.')),
|
|
66
|
+
label: z
|
|
67
|
+
.optional(
|
|
68
|
+
z
|
|
69
|
+
.string()
|
|
70
|
+
.check(
|
|
71
|
+
z.minLength(1),
|
|
72
|
+
z.describe('Curated vault label.'),
|
|
73
|
+
z.meta({ examples: ['btPATHUSD Earn'] }),
|
|
74
|
+
),
|
|
75
|
+
)
|
|
76
|
+
.check(z.describe('Curated vault label, defaulting to the share-token name.')),
|
|
77
|
+
privateInputTokens: z
|
|
78
|
+
.optional(z.array(Schema.Address))
|
|
79
|
+
.check(z.describe('Tokens accepted for private deposits.')),
|
|
80
|
+
privateOutputTokens: z
|
|
81
|
+
.optional(z.array(Schema.Address))
|
|
82
|
+
.check(z.describe('Tokens supported for private redemptions.')),
|
|
83
|
+
slug: z
|
|
84
|
+
.optional(
|
|
85
|
+
z
|
|
86
|
+
.string()
|
|
87
|
+
.check(
|
|
88
|
+
z.minLength(1),
|
|
89
|
+
z.regex(/^[a-z0-9]+(?:-[a-z0-9]+)*$/),
|
|
90
|
+
z.describe('Stable curated vault slug.'),
|
|
91
|
+
z.meta({ examples: ['btpathusd-earn'] }),
|
|
92
|
+
),
|
|
93
|
+
)
|
|
94
|
+
.check(z.describe('Custom vault slug, generated from the label when omitted.')),
|
|
95
|
+
vaultAddress: Schema.Address.check(
|
|
96
|
+
z.describe('Earn vault contract address.'),
|
|
97
|
+
z.meta({ examples: ['0xf4ae63687d6753a78e7f551d2eda1d0d31a5ea3a'] }),
|
|
98
|
+
),
|
|
99
|
+
})
|
|
100
|
+
.check(z.describe('Curated fields used to verify and store one Earn vault.'))
|
|
101
|
+
|
|
102
|
+
/** The verified vault after the write. */
|
|
103
|
+
export const Response = VerifiedVault
|
|
104
|
+
}
|
|
105
|
+
|
|
106
|
+
/** Schemas for the deleteVerifiedEarnVault operation. */
|
|
107
|
+
export namespace deleteVerifiedEarnVault {
|
|
108
|
+
/** Path parameters identifying one verified vault. */
|
|
109
|
+
export const Params = Earn.schema.getEarnVault.Params
|
|
110
|
+
|
|
111
|
+
/** Query parameters selecting the vault chain. */
|
|
112
|
+
export const Query = z
|
|
113
|
+
.strictObject({ chainId: Schema.ChainId })
|
|
114
|
+
.check(z.describe('Query parameters selecting one verified Earn vault.'))
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
|
|
118
|
+
/** Admin routes for reading and managing verified Earn vaults. */
|
|
119
|
+
export function earnVaults() {
|
|
120
|
+
return new Hono<App.Environment>()
|
|
121
|
+
.get(
|
|
122
|
+
'/',
|
|
123
|
+
OpenApi.validate('query', schema.listVerifiedEarnVaults.Query, {
|
|
124
|
+
code: 'query_invalid',
|
|
125
|
+
message: 'Invalid query parameters',
|
|
126
|
+
}),
|
|
127
|
+
OpenApi.describeRoute({
|
|
128
|
+
operationId: 'listVerifiedEarnVaults',
|
|
129
|
+
responses: OpenApi.responses({
|
|
130
|
+
success: {
|
|
131
|
+
description: 'A page of verified Earn vaults.',
|
|
132
|
+
schema: schema.listVerifiedEarnVaults.Response,
|
|
133
|
+
},
|
|
134
|
+
}),
|
|
135
|
+
summary: 'List verified vaults',
|
|
136
|
+
tags: ['Earn Vaults'],
|
|
137
|
+
}),
|
|
138
|
+
async (c) => {
|
|
139
|
+
const query = c.req.valid('query')
|
|
140
|
+
try {
|
|
141
|
+
const chainId = query.chainId ?? Viem.defaultChainId
|
|
142
|
+
const data = await listVerifiedVaults(c, { ...query, chainId })
|
|
143
|
+
return c.json(Response.validated(schema.listVerifiedEarnVaults.Response, data), 200)
|
|
144
|
+
} catch (cause) {
|
|
145
|
+
return Response.upstream(c, cause)
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
)
|
|
149
|
+
.get(
|
|
150
|
+
'/:vaultId',
|
|
151
|
+
OpenApi.validate('param', schema.getVerifiedEarnVault.Params, {
|
|
152
|
+
code: 'vault_id_invalid',
|
|
153
|
+
message: 'Invalid vault id',
|
|
154
|
+
}),
|
|
155
|
+
OpenApi.validate('query', schema.getVerifiedEarnVault.Query, {
|
|
156
|
+
code: 'query_invalid',
|
|
157
|
+
message: 'Invalid query parameters',
|
|
158
|
+
}),
|
|
159
|
+
OpenApi.describeRoute({
|
|
160
|
+
operationId: 'getVerifiedEarnVault',
|
|
161
|
+
responses: OpenApi.responses({
|
|
162
|
+
errors: {
|
|
163
|
+
404: {
|
|
164
|
+
codes: ['earn_vault_not_found'],
|
|
165
|
+
description: 'The verified vault was not found.',
|
|
166
|
+
},
|
|
167
|
+
},
|
|
168
|
+
success: {
|
|
169
|
+
description: 'One verified Earn vault.',
|
|
170
|
+
schema: schema.getVerifiedEarnVault.Response,
|
|
171
|
+
},
|
|
172
|
+
}),
|
|
173
|
+
summary: 'Get verified vault',
|
|
174
|
+
tags: ['Earn Vaults'],
|
|
175
|
+
}),
|
|
176
|
+
async (c) => {
|
|
177
|
+
const { vaultId } = c.req.valid('param')
|
|
178
|
+
const query = c.req.valid('query')
|
|
179
|
+
const chainId = query.chainId ?? Viem.defaultChainId
|
|
180
|
+
try {
|
|
181
|
+
const data = await getVault(c, {
|
|
182
|
+
chainId,
|
|
183
|
+
include: query.include,
|
|
184
|
+
vaultAddress: vaultId,
|
|
185
|
+
})
|
|
186
|
+
return c.json(Response.validated(schema.getVerifiedEarnVault.Response, data), 200)
|
|
187
|
+
} catch (cause) {
|
|
188
|
+
if (cause instanceof Earn.NotFoundError || Earn.isIncompatible(cause)) return notFound(c)
|
|
189
|
+
return Response.upstream(c, cause)
|
|
190
|
+
}
|
|
191
|
+
},
|
|
192
|
+
)
|
|
193
|
+
.put(
|
|
194
|
+
'/',
|
|
195
|
+
OpenApi.validate('json', schema.putVerifiedEarnVault.Body, {
|
|
196
|
+
code: 'body_invalid',
|
|
197
|
+
message: 'Invalid request body',
|
|
198
|
+
}),
|
|
199
|
+
OpenApi.describeRoute({
|
|
200
|
+
operationId: 'putVerifiedEarnVault',
|
|
201
|
+
responses: OpenApi.responses({
|
|
202
|
+
errors: {
|
|
203
|
+
404: {
|
|
204
|
+
codes: ['earn_vault_not_found'],
|
|
205
|
+
description: 'The vault was not found on the selected chain.',
|
|
206
|
+
},
|
|
207
|
+
409: {
|
|
208
|
+
codes: ['earn_vault_verification_failed'],
|
|
209
|
+
description: 'The contracts do not form a supported Earn vault.',
|
|
210
|
+
},
|
|
211
|
+
},
|
|
212
|
+
success: {
|
|
213
|
+
description: 'The verified Earn vault.',
|
|
214
|
+
schema: schema.putVerifiedEarnVault.Response,
|
|
215
|
+
},
|
|
216
|
+
}),
|
|
217
|
+
summary: 'Put verified vault',
|
|
218
|
+
tags: ['Earn Vaults'],
|
|
219
|
+
}),
|
|
220
|
+
async (c) => {
|
|
221
|
+
const input = c.req.valid('json')
|
|
222
|
+
const db = Db.get(c.get('db'))
|
|
223
|
+
const existing = await core_EarnVaults.get(db, {
|
|
224
|
+
chainId: input.chainId,
|
|
225
|
+
vaultAddress: input.vaultAddress,
|
|
226
|
+
})
|
|
227
|
+
|
|
228
|
+
try {
|
|
229
|
+
const discovery = await EarnVaults.resolve({
|
|
230
|
+
getClient: c.get('getClient'),
|
|
231
|
+
input: {
|
|
232
|
+
chainId: input.chainId,
|
|
233
|
+
vaultAddress: input.vaultAddress,
|
|
234
|
+
},
|
|
235
|
+
zones: c.get('zones'),
|
|
236
|
+
})
|
|
237
|
+
if (!discovery.engine.type)
|
|
238
|
+
return verificationFailed(c, 'The vault uses an unsupported engine type.')
|
|
239
|
+
|
|
240
|
+
const privateInputTokens = input.privateInputTokens ?? existing?.privateInputTokens ?? []
|
|
241
|
+
const privateOutputTokens =
|
|
242
|
+
input.privateOutputTokens ?? existing?.privateOutputTokens ?? []
|
|
243
|
+
const hasPrivateInputs = privateInputTokens.length > 0
|
|
244
|
+
const hasPrivateOutputs = privateOutputTokens.length > 0
|
|
245
|
+
if (hasPrivateInputs !== hasPrivateOutputs)
|
|
246
|
+
return verificationFailed(c, 'Private input and output tokens must both be configured.')
|
|
247
|
+
if (hasPrivateInputs && !discovery.capabilities.privateRouting)
|
|
248
|
+
return verificationFailed(c, 'The chain does not support private Earn routing.')
|
|
249
|
+
|
|
250
|
+
await core_EarnVaults.upsert(db, {
|
|
251
|
+
chainId: input.chainId,
|
|
252
|
+
description:
|
|
253
|
+
input.description === undefined ? (existing?.description ?? null) : input.description,
|
|
254
|
+
label: input.label ?? existing?.label ?? discovery.shareToken.name,
|
|
255
|
+
privateInputTokens,
|
|
256
|
+
privateOutputTokens,
|
|
257
|
+
...(input.slug !== undefined ? { slug: input.slug } : {}),
|
|
258
|
+
vaultAddress: input.vaultAddress,
|
|
259
|
+
})
|
|
260
|
+
const data = await getVault(c, {
|
|
261
|
+
chainId: input.chainId,
|
|
262
|
+
include: ['access', 'capabilities', 'zone'],
|
|
263
|
+
vaultAddress: input.vaultAddress,
|
|
264
|
+
})
|
|
265
|
+
return c.json(Response.validated(schema.putVerifiedEarnVault.Response, data), 200)
|
|
266
|
+
} catch (cause) {
|
|
267
|
+
return mutationError(c, cause)
|
|
268
|
+
}
|
|
269
|
+
},
|
|
270
|
+
)
|
|
271
|
+
.delete(
|
|
272
|
+
'/:vaultId',
|
|
273
|
+
OpenApi.validate('param', schema.deleteVerifiedEarnVault.Params, {
|
|
274
|
+
code: 'vault_id_invalid',
|
|
275
|
+
message: 'Invalid vault id',
|
|
276
|
+
}),
|
|
277
|
+
OpenApi.validate('query', schema.deleteVerifiedEarnVault.Query, {
|
|
278
|
+
code: 'query_invalid',
|
|
279
|
+
message: 'Invalid query parameters',
|
|
280
|
+
}),
|
|
281
|
+
OpenApi.describeRoute({
|
|
282
|
+
operationId: 'deleteVerifiedEarnVault',
|
|
283
|
+
responses: {
|
|
284
|
+
204: { description: 'The vault was removed from the verified registry.' },
|
|
285
|
+
400: OpenApi.standardError(400, 'Invalid request.', [
|
|
286
|
+
'query_invalid',
|
|
287
|
+
'vault_id_invalid',
|
|
288
|
+
]),
|
|
289
|
+
401: OpenApi.standardError(401, 'Admin authentication required.'),
|
|
290
|
+
404: OpenApi.standardError(404, 'Verified Earn vault not found.', [
|
|
291
|
+
'earn_vault_not_found',
|
|
292
|
+
]),
|
|
293
|
+
429: OpenApi.standardError(429, 'Rate limited.'),
|
|
294
|
+
500: OpenApi.standardError(500, 'Internal server error.'),
|
|
295
|
+
},
|
|
296
|
+
summary: 'Remove verified vault',
|
|
297
|
+
tags: ['Earn Vaults'],
|
|
298
|
+
}),
|
|
299
|
+
async (c) => {
|
|
300
|
+
const { vaultId } = c.req.valid('param')
|
|
301
|
+
const { chainId } = c.req.valid('query')
|
|
302
|
+
const record = await core_EarnVaults.remove(Db.get(c.get('db')), {
|
|
303
|
+
chainId,
|
|
304
|
+
vaultAddress: vaultId,
|
|
305
|
+
})
|
|
306
|
+
if (!record) return notFound(c)
|
|
307
|
+
return c.body(null, 204)
|
|
308
|
+
},
|
|
309
|
+
)
|
|
310
|
+
}
|
|
311
|
+
|
|
312
|
+
async function listVerifiedVaults(
|
|
313
|
+
c: Context<App.Environment>,
|
|
314
|
+
options: listVerifiedVaults.Options,
|
|
315
|
+
) {
|
|
316
|
+
const db = Db.get(c.get('db'))
|
|
317
|
+
const [records, snapshot] = await Promise.all([
|
|
318
|
+
core_EarnVaults.list(db, { chainId: options.chainId }),
|
|
319
|
+
VerifiedTokens.read(db, options.chainId),
|
|
320
|
+
])
|
|
321
|
+
const decoded = options.cursor ? Cursor.decode(options.cursor, ['address']) : undefined
|
|
322
|
+
const cursor = decoded?.[0]?.toString().toLowerCase()
|
|
323
|
+
const candidates = records.filter(
|
|
324
|
+
(record) => !cursor || record.vaultAddress.toLowerCase() > cursor,
|
|
325
|
+
)
|
|
326
|
+
const matches: listVerifiedVaults.Match[] = []
|
|
327
|
+
|
|
328
|
+
for (const record of candidates) {
|
|
329
|
+
const discovery = await resolveVault(c, {
|
|
330
|
+
chainId: options.chainId,
|
|
331
|
+
include: discoveryInclude(options),
|
|
332
|
+
vaultAddress: record.vaultAddress,
|
|
333
|
+
})
|
|
334
|
+
if (!Earn.matchesVaultFilters(discovery, options)) continue
|
|
335
|
+
matches.push({ discovery, record })
|
|
336
|
+
if (matches.length > options.limit) break
|
|
337
|
+
}
|
|
338
|
+
|
|
339
|
+
const page = matches.slice(0, options.limit)
|
|
340
|
+
const data = await Promise.all(
|
|
341
|
+
page.map((match) =>
|
|
342
|
+
serializeVault(c, {
|
|
343
|
+
...match,
|
|
344
|
+
chainId: options.chainId,
|
|
345
|
+
include: options.include,
|
|
346
|
+
snapshot,
|
|
347
|
+
}),
|
|
348
|
+
),
|
|
349
|
+
)
|
|
350
|
+
const last = matches[options.limit - 1]
|
|
351
|
+
return {
|
|
352
|
+
data,
|
|
353
|
+
nextCursor:
|
|
354
|
+
matches.length > options.limit && last ? Cursor.encode([last.record.vaultAddress]) : null,
|
|
355
|
+
}
|
|
356
|
+
}
|
|
357
|
+
|
|
358
|
+
declare namespace listVerifiedVaults {
|
|
359
|
+
type Match = {
|
|
360
|
+
/** Live onchain vault state. */
|
|
361
|
+
discovery: EarnVaults.Discovery
|
|
362
|
+
/** Curated registry row. */
|
|
363
|
+
record: core_EarnVaults.Record
|
|
364
|
+
}
|
|
365
|
+
|
|
366
|
+
type Options = z.output<typeof schema.listVerifiedEarnVaults.Query> & {
|
|
367
|
+
/** Parent chain containing the vaults. */
|
|
368
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
369
|
+
}
|
|
370
|
+
}
|
|
371
|
+
|
|
372
|
+
async function getVault(c: Context<App.Environment>, options: getVault.Options) {
|
|
373
|
+
const db = Db.get(c.get('db'))
|
|
374
|
+
const record = await core_EarnVaults.get(db, options)
|
|
375
|
+
try {
|
|
376
|
+
const [discovery, snapshot] = await Promise.all([
|
|
377
|
+
resolveVault(c, {
|
|
378
|
+
...options,
|
|
379
|
+
include: discoveryInclude({ capability: [], include: options.include }),
|
|
380
|
+
}),
|
|
381
|
+
VerifiedTokens.read(db, options.chainId),
|
|
382
|
+
])
|
|
383
|
+
return serializeVault(c, { ...options, discovery, record, snapshot })
|
|
384
|
+
} catch (cause) {
|
|
385
|
+
if (Earn.isIncompatible(cause)) throw new Earn.NotFoundError()
|
|
386
|
+
throw cause
|
|
387
|
+
}
|
|
388
|
+
}
|
|
389
|
+
|
|
390
|
+
declare namespace getVault {
|
|
391
|
+
type Options = {
|
|
392
|
+
/** Parent chain containing the vault. */
|
|
393
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
394
|
+
/** Optional embedded token fields. */
|
|
395
|
+
include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
|
|
396
|
+
/** Earn vault address. */
|
|
397
|
+
vaultAddress: z.output<typeof Schema.Address>
|
|
398
|
+
}
|
|
399
|
+
}
|
|
400
|
+
|
|
401
|
+
function resolveVault(c: Context<App.Environment>, options: resolveVault.Options) {
|
|
402
|
+
return EarnVaults.resolve({
|
|
403
|
+
getClient: c.get('getClient'),
|
|
404
|
+
include: options.include,
|
|
405
|
+
input: {
|
|
406
|
+
chainId: options.chainId,
|
|
407
|
+
vaultAddress: options.vaultAddress,
|
|
408
|
+
},
|
|
409
|
+
zones: c.get('zones'),
|
|
410
|
+
})
|
|
411
|
+
}
|
|
412
|
+
|
|
413
|
+
declare namespace resolveVault {
|
|
414
|
+
type Options = {
|
|
415
|
+
/** Parent chain containing the vault. */
|
|
416
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
417
|
+
/** Onchain vault fields required by the request. */
|
|
418
|
+
include: readonly EarnVaults.resolve.Include[]
|
|
419
|
+
/** Earn vault address. */
|
|
420
|
+
vaultAddress: z.output<typeof Schema.Address>
|
|
421
|
+
}
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
async function serializeVault(
|
|
425
|
+
c: Context<App.Environment>,
|
|
426
|
+
options: serializeVault.Options,
|
|
427
|
+
): Promise<z.output<typeof Earn.schema.Vault>> {
|
|
428
|
+
const [assetToken, shareToken] = await Promise.all([
|
|
429
|
+
serializeToken(c, { ...options, metadata: options.discovery.assetToken }),
|
|
430
|
+
serializeToken(c, { ...options, metadata: options.discovery.shareToken }),
|
|
431
|
+
])
|
|
432
|
+
return Earn.serializeVault({
|
|
433
|
+
// Rate and valuation enrichment need indexer and FX access the admin app
|
|
434
|
+
// does not carry, so its query schema cannot select either field.
|
|
435
|
+
apy: null,
|
|
436
|
+
assetToken,
|
|
437
|
+
discovery: options.discovery,
|
|
438
|
+
include: options.include,
|
|
439
|
+
record: options.record,
|
|
440
|
+
shareToken,
|
|
441
|
+
tvl: null,
|
|
442
|
+
zones: c.get('zones'),
|
|
443
|
+
})
|
|
444
|
+
}
|
|
445
|
+
|
|
446
|
+
declare namespace serializeVault {
|
|
447
|
+
type Options = {
|
|
448
|
+
/** Parent chain containing the vault. */
|
|
449
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
450
|
+
/** Live onchain vault state. */
|
|
451
|
+
discovery: EarnVaults.Discovery
|
|
452
|
+
/** Optional embedded token fields. */
|
|
453
|
+
include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
|
|
454
|
+
/** Curated registry row, when verified. */
|
|
455
|
+
record?: core_EarnVaults.Record | undefined
|
|
456
|
+
/** Verified-token snapshot, when configured. */
|
|
457
|
+
snapshot: VerifiedTokens.Snapshot | null
|
|
458
|
+
}
|
|
459
|
+
}
|
|
460
|
+
|
|
461
|
+
function discoveryInclude(
|
|
462
|
+
options: discoveryInclude.Options,
|
|
463
|
+
): readonly EarnVaults.resolve.Include[] {
|
|
464
|
+
const includeCapabilities =
|
|
465
|
+
options.include.includes('capabilities') ||
|
|
466
|
+
options.include.includes('zone') ||
|
|
467
|
+
options.capability.length > 0
|
|
468
|
+
return [
|
|
469
|
+
...(options.include.includes('access') ? (['access'] as const) : []),
|
|
470
|
+
...(includeCapabilities ? (['capabilities'] as const) : []),
|
|
471
|
+
]
|
|
472
|
+
}
|
|
473
|
+
|
|
474
|
+
declare namespace discoveryInclude {
|
|
475
|
+
type Options = Pick<
|
|
476
|
+
z.output<typeof schema.listVerifiedEarnVaults.Query>,
|
|
477
|
+
'capability' | 'include'
|
|
478
|
+
>
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
async function serializeToken(
|
|
482
|
+
c: Context<App.Environment>,
|
|
483
|
+
options: serializeToken.Options,
|
|
484
|
+
): Promise<z.output<typeof Earn.schema.Vault.shape.assetToken>> {
|
|
485
|
+
const address = Schema.Address.parse(options.metadata.address.toLowerCase())
|
|
486
|
+
const logoUri = options.include.includes('token.logoUri')
|
|
487
|
+
? await resolveLogoUri(c, { address, chainId: options.chainId })
|
|
488
|
+
: undefined
|
|
489
|
+
return Response.validated(Earn.schema.Vault.shape.assetToken, {
|
|
490
|
+
address,
|
|
491
|
+
currency: options.metadata.currency,
|
|
492
|
+
decimals: options.metadata.decimals,
|
|
493
|
+
id: address,
|
|
494
|
+
logoUri,
|
|
495
|
+
name: options.metadata.name,
|
|
496
|
+
symbol: options.metadata.symbol,
|
|
497
|
+
verified: options.snapshot?.byAddress.has(address) ?? false,
|
|
498
|
+
})
|
|
499
|
+
}
|
|
500
|
+
|
|
501
|
+
declare namespace serializeToken {
|
|
502
|
+
type Options = {
|
|
503
|
+
/** Parent chain containing the token. */
|
|
504
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
505
|
+
/** Optional embedded token fields. */
|
|
506
|
+
include: z.output<typeof schema.getVerifiedEarnVault.Query>['include']
|
|
507
|
+
/** Onchain token metadata. */
|
|
508
|
+
metadata: EarnVaults.Discovery['assetToken']
|
|
509
|
+
/** Verified-token snapshot, when configured. */
|
|
510
|
+
snapshot: VerifiedTokens.Snapshot | null
|
|
511
|
+
}
|
|
512
|
+
}
|
|
513
|
+
|
|
514
|
+
async function resolveLogoUri(
|
|
515
|
+
c: Context<App.Environment>,
|
|
516
|
+
options: resolveLogoUri.Options,
|
|
517
|
+
): Promise<string | undefined> {
|
|
518
|
+
const asset = await c.get('assets')?.get(`${options.chainId}/icons/${options.address}`)
|
|
519
|
+
if (!asset) return undefined
|
|
520
|
+
const uri = new URL(
|
|
521
|
+
Path.join(c.get('basePath'), 'verified-tokens', options.address, 'logo'),
|
|
522
|
+
c.req.url,
|
|
523
|
+
)
|
|
524
|
+
uri.searchParams.set('chainId', String(options.chainId))
|
|
525
|
+
return uri.toString()
|
|
526
|
+
}
|
|
527
|
+
|
|
528
|
+
declare namespace resolveLogoUri {
|
|
529
|
+
type Options = {
|
|
530
|
+
/** Token address. */
|
|
531
|
+
address: z.output<typeof Schema.Address>
|
|
532
|
+
/** Parent chain containing the token. */
|
|
533
|
+
chainId: z.output<typeof Schema.ChainId>
|
|
534
|
+
}
|
|
535
|
+
}
|
|
536
|
+
|
|
537
|
+
function mutationError(c: Context<App.Environment>, cause: unknown) {
|
|
538
|
+
if (cause instanceof EarnVaults.InvalidRegistryError)
|
|
539
|
+
return Response.error(c, {
|
|
540
|
+
code: 'body_invalid',
|
|
541
|
+
details: [{ message: cause.message }],
|
|
542
|
+
message: 'Invalid verified Earn vault',
|
|
543
|
+
status: 400,
|
|
544
|
+
})
|
|
545
|
+
if (cause instanceof EarnVaults.VerificationError && cause.result.status === 'mismatch')
|
|
546
|
+
return Response.error(c, {
|
|
547
|
+
code: 'earn_vault_verification_failed',
|
|
548
|
+
details: cause.result.issues.map((issue) => ({ message: issue.message })),
|
|
549
|
+
message: 'Earn vault verification failed',
|
|
550
|
+
status: 409,
|
|
551
|
+
})
|
|
552
|
+
if (cause instanceof Earn.NotFoundError) return notFound(c)
|
|
553
|
+
if (cause instanceof EarnVaults.NotFoundError) return notFound(c, cause.message)
|
|
554
|
+
return Response.upstream(c, cause)
|
|
555
|
+
}
|
|
556
|
+
|
|
557
|
+
function notFound(c: Context<App.Environment>, message = 'Verified Earn vault not found') {
|
|
558
|
+
return Response.error(c, {
|
|
559
|
+
code: 'earn_vault_not_found',
|
|
560
|
+
message,
|
|
561
|
+
status: 404,
|
|
562
|
+
})
|
|
563
|
+
}
|
|
564
|
+
|
|
565
|
+
function verificationFailed(c: Context<App.Environment>, message: string) {
|
|
566
|
+
return Response.error(c, {
|
|
567
|
+
code: 'earn_vault_verification_failed',
|
|
568
|
+
details: [{ message }],
|
|
569
|
+
message: 'Earn vault verification failed',
|
|
570
|
+
status: 409,
|
|
571
|
+
})
|
|
572
|
+
}
|
|
@@ -19,6 +19,16 @@ describe('GET /scopes', () => {
|
|
|
19
19
|
"scope": "data:read",
|
|
20
20
|
"selfServe": true,
|
|
21
21
|
},
|
|
22
|
+
{
|
|
23
|
+
"description": "Read organization funding transfers, deposit addresses, and deposits.",
|
|
24
|
+
"scope": "funding:read",
|
|
25
|
+
"selfServe": false,
|
|
26
|
+
},
|
|
27
|
+
{
|
|
28
|
+
"description": "Create funding transfers and register their source transactions.",
|
|
29
|
+
"scope": "funding:write",
|
|
30
|
+
"selfServe": false,
|
|
31
|
+
},
|
|
22
32
|
{
|
|
23
33
|
"description": "Run ad-hoc queries against the raw indexer passthrough.",
|
|
24
34
|
"scope": "indexer:query",
|
|
@@ -35,7 +45,7 @@ describe('GET /scopes', () => {
|
|
|
35
45
|
"selfServe": true,
|
|
36
46
|
},
|
|
37
47
|
{
|
|
38
|
-
"description": "Validate and broadcast MPP
|
|
48
|
+
"description": "Validate and broadcast MPP credentials through Tempo.",
|
|
39
49
|
"scope": "mpp:write",
|
|
40
50
|
"selfServe": true,
|
|
41
51
|
},
|
|
@@ -64,6 +74,11 @@ describe('GET /scopes', () => {
|
|
|
64
74
|
"scope": "zone:<chainId>:read",
|
|
65
75
|
"selfServe": false,
|
|
66
76
|
},
|
|
77
|
+
{
|
|
78
|
+
"description": "Broadcast signed transactions to one zone chain id.",
|
|
79
|
+
"scope": "zone:<chainId>:write",
|
|
80
|
+
"selfServe": false,
|
|
81
|
+
},
|
|
67
82
|
],
|
|
68
83
|
}
|
|
69
84
|
`)
|
package/src/admin/ui/plugin.ts
CHANGED
|
@@ -23,8 +23,8 @@ const outFile = path.join(here, '..', 'ui.generated.ts')
|
|
|
23
23
|
// Total gzipped budget for the whole UI; the React + TanStack + Regen baseline
|
|
24
24
|
// is heavier than a hand-rolled SPA, so fail loudly before it bloats the
|
|
25
25
|
// package. Raise deliberately (and revisit code-splitting) if it trips.
|
|
26
|
-
// Raised from
|
|
27
|
-
const maxGzipBytes =
|
|
26
|
+
// Raised from 415 KB for the structured Earn-vault editor.
|
|
27
|
+
const maxGzipBytes = 430_000
|
|
28
28
|
|
|
29
29
|
const contentTypes: Record<string, string> = {
|
|
30
30
|
'.css': 'text/css; charset=utf-8',
|