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/mcp.ts
CHANGED
|
@@ -7,15 +7,18 @@ import * as Auth from '../internal/Auth.js'
|
|
|
7
7
|
import * as OpenApi from '../internal/OpenApi.js'
|
|
8
8
|
import * as Metadata from './metadata.js'
|
|
9
9
|
|
|
10
|
-
/**
|
|
11
|
-
const
|
|
10
|
+
/** Required document tag group whose operations surface as MCP tools. */
|
|
11
|
+
const dataTagGroup = 'Data API'
|
|
12
|
+
|
|
13
|
+
/** Optional document tag group added when the funding app is mounted. */
|
|
14
|
+
const fundingTagGroup = 'Funding & Bridge API'
|
|
12
15
|
|
|
13
16
|
/** Tags inside the group hidden from MCP: partner-shaped CoinGecko mirrors and the MCP endpoint itself. */
|
|
14
17
|
const excludedTags = ['CoinGecko', 'MCP']
|
|
15
18
|
|
|
16
19
|
/** Usage guidance surfaced to MCP clients on initialize. */
|
|
17
20
|
const instructions =
|
|
18
|
-
"Tempo MCP provides access to the Tempo API's data
|
|
21
|
+
"Tempo MCP provides access to the Tempo API's data and inbound funding domains, plus documentation. Authenticated tools accept a Tempo API key sent as an `Authorization: Bearer` header on the HTTP request. List endpoints paginate via `cursor`/`nextCursor`. `docs_*` tools search the Tempo documentation."
|
|
19
22
|
|
|
20
23
|
/** Zod schemas owned by the MCP endpoint's OpenAPI description. */
|
|
21
24
|
export namespace schema {
|
|
@@ -56,9 +59,8 @@ export namespace schema {
|
|
|
56
59
|
|
|
57
60
|
/**
|
|
58
61
|
* The MCP route group: a stateless streamable-HTTP MCP server at `/mcp` whose
|
|
59
|
-
* tools mirror the API's data domain
|
|
60
|
-
*
|
|
61
|
-
* the other route groups:
|
|
62
|
+
* tools mirror the API's data domain and its optional inbound funding domain,
|
|
63
|
+
* plus the remote Tempo docs tools. Mount alongside the other route groups:
|
|
62
64
|
*
|
|
63
65
|
* ```ts
|
|
64
66
|
* const app = App.create(options)
|
|
@@ -208,7 +210,7 @@ const openapi = {
|
|
|
208
210
|
'A hosted Model Context Protocol server: the data domain and Tempo docs exposed as tools.',
|
|
209
211
|
},
|
|
210
212
|
],
|
|
211
|
-
'x-tagGroups': [{ name:
|
|
213
|
+
'x-tagGroups': [{ name: dataTagGroup, tags: ['MCP'] }],
|
|
212
214
|
} satisfies App.create.Metadata
|
|
213
215
|
|
|
214
216
|
/** The slice of the OpenAPI document the domain filter reads. */
|
|
@@ -221,14 +223,17 @@ type Document = Openapi.OpenAPISpec & {
|
|
|
221
223
|
const methods: readonly string[] = ['delete', 'get', 'head', 'options', 'patch', 'post', 'put', 'trace'] // prettier-ignore
|
|
222
224
|
|
|
223
225
|
/**
|
|
224
|
-
* Narrows the document to the data
|
|
225
|
-
*
|
|
226
|
-
* operations never surface as tools.
|
|
226
|
+
* Narrows the document to the data and optional inbound funding domains.
|
|
227
|
+
* Management, relay, and session operations never surface as tools.
|
|
227
228
|
*/
|
|
228
229
|
function scope(document: Document): Openapi.OpenAPISpec {
|
|
229
|
-
const
|
|
230
|
-
|
|
231
|
-
|
|
230
|
+
const groups = document['x-tagGroups'] ?? []
|
|
231
|
+
const dataGroup = groups.find((entry) => entry.name === dataTagGroup)
|
|
232
|
+
if (!dataGroup) throw new Error(`openapi.json is missing the "${dataTagGroup}" tag group`)
|
|
233
|
+
const fundingGroup = groups.find((entry) => entry.name === fundingTagGroup)
|
|
234
|
+
const tags = new Set(
|
|
235
|
+
[...dataGroup.tags, ...(fundingGroup?.tags ?? [])].filter((tag) => !excludedTags.includes(tag)),
|
|
236
|
+
)
|
|
232
237
|
const paths: Document['paths'] = {}
|
|
233
238
|
for (const [path, item] of Object.entries(document.paths)) {
|
|
234
239
|
// Keep in-domain operations; non-method keys (parameters, summary) ride along.
|
package/src/apps/metadata.ts
CHANGED
|
@@ -7,6 +7,7 @@ import type * as App from '../App.js'
|
|
|
7
7
|
// `App.create` reads it back on mount. The `WeakMap` keeps the association off
|
|
8
8
|
// the app's type, so `testClient`/`hc` inference is untouched.
|
|
9
9
|
const registry = new WeakMap<Hono<any, any>, App.create.Metadata>()
|
|
10
|
+
const defaultChainRegistry = new WeakSet<Hono<any, any>>()
|
|
10
11
|
|
|
11
12
|
/** Attaches a group's OpenAPI metadata to its app instance for `create` to collect on mount. */
|
|
12
13
|
export function attach<const app extends Hono<any, any>>(
|
|
@@ -21,3 +22,14 @@ export function attach<const app extends Hono<any, any>>(
|
|
|
21
22
|
export function read(app: Hono<any, any>): App.create.Metadata | undefined {
|
|
22
23
|
return registry.get(app)
|
|
23
24
|
}
|
|
25
|
+
|
|
26
|
+
/** Marks a group whose routes use the root app's default chain access policy. */
|
|
27
|
+
export function defaultChain<const app extends Hono<any, any>>(app: app): app {
|
|
28
|
+
defaultChainRegistry.add(app)
|
|
29
|
+
return app
|
|
30
|
+
}
|
|
31
|
+
|
|
32
|
+
/** Returns whether a group uses the root app's default chain access policy. */
|
|
33
|
+
export function usesDefaultChain(app: Hono<any, any>): boolean {
|
|
34
|
+
return defaultChainRegistry.has(app)
|
|
35
|
+
}
|
package/src/apps/mpp/App.ts
CHANGED
|
@@ -1,32 +1,49 @@
|
|
|
1
|
-
import { Hono } from 'hono'
|
|
1
|
+
import { Hono, type Context } from 'hono'
|
|
2
2
|
import type * as z from 'zod/mini'
|
|
3
3
|
|
|
4
4
|
import type * as App from '../../App.js'
|
|
5
|
+
import * as Db from '../../db/Db.js'
|
|
5
6
|
import * as Auth from '../../internal/Auth.js'
|
|
6
7
|
import * as OpenApi from '../../internal/OpenApi.js'
|
|
8
|
+
import * as Response from '../../internal/Response.js'
|
|
9
|
+
import * as Timing from '../../internal/Timing.js'
|
|
7
10
|
import * as Metadata from '../metadata.js'
|
|
11
|
+
import * as Billing from '../management/Billing.js'
|
|
8
12
|
import * as Mpp from './Mpp.js'
|
|
13
|
+
import * as Adapter from './internal/Adapter.js'
|
|
14
|
+
import * as Idempotency from './internal/Idempotency.js'
|
|
15
|
+
import * as MppError from './internal/Error.js'
|
|
16
|
+
import * as Policy from './internal/Policy.js'
|
|
17
|
+
import * as Sponsorship from './internal/Sponsorship.js'
|
|
9
18
|
|
|
10
|
-
/** Mounts MPP credential
|
|
11
|
-
export function mpp() {
|
|
19
|
+
/** Mounts MPP credential validation and broadcast routes. */
|
|
20
|
+
export function mpp(options: mpp.Options) {
|
|
12
21
|
const app = new Hono<App.Environment>()
|
|
13
22
|
.post(
|
|
14
|
-
'/v1/mpp/
|
|
23
|
+
'/v1/mpp/validate',
|
|
15
24
|
Auth.policy({ apiKey: { scopes: ['mpp:write'] }, mpp: false, public: false }),
|
|
16
25
|
OpenApi.validate('json', Mpp.schema.RelayInput, bodyValidation),
|
|
17
26
|
OpenApi.describeRoute({
|
|
18
|
-
|
|
27
|
+
description:
|
|
28
|
+
'Checks whether a completed MPP credential can be processed without submitting payment.\n\nTempo validates the challenge and credential, confirms the chain is supported, and screens the payment parties. It does not settle, broadcast, reserve funds, or consume the credential.\n\nRequires `mpp:write`. Well-formed requests return HTTP `200`; inspect `success`. Invalid bodies return `400`; missing or unauthorized API keys return `401` or `403`.',
|
|
29
|
+
operationId: 'validateMppCredential',
|
|
19
30
|
responses: responses({
|
|
20
31
|
description: 'The MPP credential validation result.',
|
|
21
32
|
schema: Mpp.schema.VerifyResponse,
|
|
22
33
|
}),
|
|
23
|
-
summary: '
|
|
24
|
-
tags: ['MPP
|
|
34
|
+
summary: 'Validate MPP credential',
|
|
35
|
+
tags: ['MPP'],
|
|
25
36
|
}),
|
|
26
|
-
(c) => {
|
|
37
|
+
async (c) => {
|
|
27
38
|
if (Auth.narrowAccess) return Auth.accessError(c)
|
|
28
39
|
if (OpenApi.narrowValidation) return OpenApi.validationError(c, bodyValidation)
|
|
29
|
-
|
|
40
|
+
const input = c.req.valid('json')
|
|
41
|
+
const chainId = Policy.chainId(input) ?? c.get('chainId')
|
|
42
|
+
const response = await Timing.time(c, 'mpp_verify', () =>
|
|
43
|
+
createAdapter(c, { chainId, options }).verify(input),
|
|
44
|
+
)
|
|
45
|
+
c.set('mpp', observability(c, { chainId, feePayer: false, operation: 'verify', response }))
|
|
46
|
+
return c.json(Response.validated(Mpp.schema.VerifyResponse, response), 200)
|
|
30
47
|
},
|
|
31
48
|
)
|
|
32
49
|
.post(
|
|
@@ -34,53 +51,283 @@ export function mpp() {
|
|
|
34
51
|
Auth.policy({ apiKey: { scopes: ['mpp:write'] }, mpp: false, public: false }),
|
|
35
52
|
OpenApi.validate('json', Mpp.schema.RelayInput, bodyValidation),
|
|
36
53
|
OpenApi.describeRoute({
|
|
54
|
+
description:
|
|
55
|
+
'Validates, screens, and submits a completed MPP credential to Tempo.\n\nRequires `mpp:write`. Well-formed requests return HTTP `200`; inspect `success`.\n\nUse `Idempotency-Key` on retries to replay a successful receipt. Reusing a key for a different credential returns `invalid_payment`, and in-flight duplicates return `temporarily_unavailable`.',
|
|
37
56
|
operationId: 'broadcastMppCredential',
|
|
57
|
+
parameters: [
|
|
58
|
+
{
|
|
59
|
+
description:
|
|
60
|
+
'Optional opaque retry key, scoped to the API key and credential. Reusing it after a successful broadcast returns the original receipt without another submission. Reusing it with a different credential returns `invalid_payment`. While the first request is running, duplicates return `temporarily_unavailable`. Failed attempts are not retained and may be retried with the same key.',
|
|
61
|
+
in: 'header',
|
|
62
|
+
name: 'Idempotency-Key',
|
|
63
|
+
required: false,
|
|
64
|
+
schema: { example: 'mpp_broadcast_01j3j1k2l3m4n5p6q7r8s9t0u', type: 'string' },
|
|
65
|
+
},
|
|
66
|
+
],
|
|
38
67
|
responses: responses({
|
|
39
68
|
description: 'The MPP credential broadcast result.',
|
|
40
69
|
schema: Mpp.schema.BroadcastResponse,
|
|
41
70
|
}),
|
|
42
71
|
summary: 'Broadcast MPP credential',
|
|
43
|
-
tags: ['MPP
|
|
72
|
+
tags: ['MPP'],
|
|
44
73
|
}),
|
|
45
|
-
(c) => {
|
|
74
|
+
async (c) => {
|
|
46
75
|
if (Auth.narrowAccess) return Auth.accessError(c)
|
|
47
76
|
if (OpenApi.narrowValidation) return OpenApi.validationError(c, bodyValidation)
|
|
48
|
-
|
|
77
|
+
const input = c.req.valid('json')
|
|
78
|
+
const authorization = await authorizeBroadcast(c, { input, options })
|
|
79
|
+
if (authorization.type === 'error') {
|
|
80
|
+
const response = {
|
|
81
|
+
error: authorization.error,
|
|
82
|
+
success: false,
|
|
83
|
+
} satisfies Mpp.BroadcastResponse
|
|
84
|
+
c.set(
|
|
85
|
+
'mpp',
|
|
86
|
+
observability(c, {
|
|
87
|
+
chainId: authorization.chainId,
|
|
88
|
+
feePayer: false,
|
|
89
|
+
operation: 'broadcast',
|
|
90
|
+
response,
|
|
91
|
+
}),
|
|
92
|
+
)
|
|
93
|
+
return c.json(Response.validated(Mpp.schema.BroadcastResponse, response), 200)
|
|
94
|
+
}
|
|
95
|
+
const result = await broadcast(c, {
|
|
96
|
+
chainId: authorization.chainId,
|
|
97
|
+
feePayer: authorization.feePayer,
|
|
98
|
+
input,
|
|
99
|
+
options,
|
|
100
|
+
})
|
|
101
|
+
c.set(
|
|
102
|
+
'mpp',
|
|
103
|
+
observability(c, {
|
|
104
|
+
chainId: authorization.chainId,
|
|
105
|
+
feePayer: Boolean(authorization.feePayer),
|
|
106
|
+
...(result.idempotency === undefined ? {} : { idempotency: result.idempotency }),
|
|
107
|
+
operation: 'broadcast',
|
|
108
|
+
response: result.response,
|
|
109
|
+
}),
|
|
110
|
+
)
|
|
111
|
+
return c.json(Response.validated(Mpp.schema.BroadcastResponse, result.response), 200)
|
|
49
112
|
},
|
|
50
113
|
)
|
|
51
114
|
return Metadata.attach(app, openapi)
|
|
52
115
|
}
|
|
53
116
|
|
|
117
|
+
export declare namespace mpp {
|
|
118
|
+
/** MPP relay capabilities. */
|
|
119
|
+
type Options = {
|
|
120
|
+
/** Account used to sponsor Tempo pull transactions. */
|
|
121
|
+
feePayer?: Adapter.create.Options['feePayer'] | undefined
|
|
122
|
+
/** Reports an unexpected relay failure without exposing credential data. */
|
|
123
|
+
reportUnknown?: Adapter.create.Options['reportUnknown'] | undefined
|
|
124
|
+
/** Atomic durable state for MPPX replay protection and idempotent broadcast responses. */
|
|
125
|
+
state: Idempotency.claim.Options['state']
|
|
126
|
+
/** Screening-cache duration. @default `Ttl.days(1)` */
|
|
127
|
+
screeningTtl?: number | undefined
|
|
128
|
+
/** Per-transaction fee cap (decimal USD string). @default '1.00' */
|
|
129
|
+
txFeeLimit?: string | undefined
|
|
130
|
+
}
|
|
131
|
+
}
|
|
132
|
+
|
|
54
133
|
const bodyValidation = {
|
|
55
134
|
code: 'body_invalid',
|
|
56
135
|
message: 'Check the MPP credential and challenge, then try again.',
|
|
57
136
|
} as const
|
|
58
137
|
|
|
59
138
|
function responses<schema extends z.ZodMiniType>(options: { description: string; schema: schema }) {
|
|
60
|
-
return {
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
139
|
+
return OpenApi.responses({
|
|
140
|
+
errors: { 403: 'The API key does not grant MPP relay access.' },
|
|
141
|
+
success: options,
|
|
142
|
+
})
|
|
143
|
+
}
|
|
144
|
+
|
|
145
|
+
/** Resolves whether the caller may broadcast and sponsor one MPP credential. */
|
|
146
|
+
async function authorizeBroadcast(
|
|
147
|
+
c: Context<App.Environment>,
|
|
148
|
+
options: authorizeBroadcast.Options,
|
|
149
|
+
) {
|
|
150
|
+
const { input, options: options_mpp } = options
|
|
151
|
+
const chainId = Policy.chainId(input) ?? c.get('chainId')
|
|
152
|
+
try {
|
|
153
|
+
Policy.assertSupportedChain({ chainId, supportedChainIds: c.get('supportedChainIds') })
|
|
154
|
+
return {
|
|
155
|
+
chainId,
|
|
156
|
+
feePayer: await Timing.time(c, 'mpp_fee_payer', () =>
|
|
157
|
+
Policy.authorizeFeePayer({
|
|
158
|
+
chainId,
|
|
159
|
+
db: Db.get(c.get('db')),
|
|
160
|
+
feePayer: options_mpp.feePayer,
|
|
161
|
+
input,
|
|
162
|
+
principal: Auth.getPrincipal(c) ?? undefined,
|
|
163
|
+
}),
|
|
164
|
+
),
|
|
165
|
+
type: 'authorized' as const,
|
|
166
|
+
}
|
|
167
|
+
} catch (cause) {
|
|
168
|
+
return { chainId, error: MppError.map(cause), type: 'error' as const }
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
|
|
172
|
+
declare namespace authorizeBroadcast {
|
|
173
|
+
/** Dependencies used to authorize one MPP credential broadcast. */
|
|
174
|
+
type Options = {
|
|
175
|
+
/** Credential to authorize. */
|
|
176
|
+
input: Mpp.RelayInput
|
|
177
|
+
/** MPP relay configuration. */
|
|
178
|
+
options: mpp.Options
|
|
179
|
+
}
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/** Broadcasts an MPP credential, replaying a successful request when asked. */
|
|
183
|
+
async function broadcast(c: Context<App.Environment>, options: broadcast.Options) {
|
|
184
|
+
const { chainId, feePayer, input, options: options_mpp } = options
|
|
185
|
+
const create = () => createAdapter(c, { chainId, options: { ...options_mpp, feePayer } })
|
|
186
|
+
const idempotencyKey = c.req.header('idempotency-key') || undefined
|
|
187
|
+
if (!idempotencyKey) return { response: await create().broadcast(input) }
|
|
188
|
+
|
|
189
|
+
const principal = Auth.getPrincipal(c)
|
|
190
|
+
if (!principal || principal.type !== 'api_key') throw new Error('MPP relay requires an API key.')
|
|
191
|
+
|
|
192
|
+
const identity = {
|
|
193
|
+
apiKeyId: principal.id,
|
|
194
|
+
idempotencyKey,
|
|
195
|
+
inputHash: Idempotency.inputHash(input),
|
|
196
|
+
}
|
|
197
|
+
const claim = await Timing.time(c, 'mpp_idempotency_claim', () =>
|
|
198
|
+
Idempotency.claim({ identity, state: options_mpp.state }),
|
|
199
|
+
)
|
|
200
|
+
switch (claim.type) {
|
|
201
|
+
case 'replay':
|
|
202
|
+
return { idempotency: 'replay' as const, response: claim.response }
|
|
203
|
+
case 'pending':
|
|
204
|
+
return {
|
|
205
|
+
idempotency: 'pending' as const,
|
|
206
|
+
response: {
|
|
207
|
+
error: {
|
|
208
|
+
code: Mpp.relayErrorCode.temporarilyUnavailable,
|
|
209
|
+
message: 'MPP credential broadcast is already in progress.',
|
|
210
|
+
},
|
|
211
|
+
success: false,
|
|
212
|
+
} satisfies Mpp.BroadcastResponse,
|
|
213
|
+
}
|
|
214
|
+
case 'mismatch':
|
|
215
|
+
return {
|
|
216
|
+
response: {
|
|
217
|
+
error: {
|
|
218
|
+
code: Mpp.relayErrorCode.invalidPayment,
|
|
219
|
+
message: 'Idempotency-Key was already used for a different credential.',
|
|
220
|
+
},
|
|
221
|
+
success: false,
|
|
222
|
+
} satisfies Mpp.BroadcastResponse,
|
|
223
|
+
}
|
|
224
|
+
case 'claimed': {
|
|
225
|
+
const response = await create().broadcast(input)
|
|
226
|
+
// Only a successful settlement is replayable. MPPX remains responsible
|
|
227
|
+
// for payment-proof replay safety when a failed request is retried.
|
|
228
|
+
if (response.success)
|
|
229
|
+
await Idempotency.complete({
|
|
230
|
+
identity,
|
|
231
|
+
response,
|
|
232
|
+
state: options_mpp.state,
|
|
233
|
+
token: claim.token,
|
|
234
|
+
})
|
|
235
|
+
else await Idempotency.release({ identity, state: options_mpp.state, token: claim.token })
|
|
236
|
+
return { idempotency: 'claimed' as const, response }
|
|
237
|
+
}
|
|
238
|
+
}
|
|
239
|
+
}
|
|
240
|
+
|
|
241
|
+
declare namespace broadcast {
|
|
242
|
+
/** Dependencies used to broadcast one MPP credential. */
|
|
243
|
+
type Options = {
|
|
244
|
+
/** Chain selected by the MPP challenge. */
|
|
245
|
+
chainId: number
|
|
246
|
+
/** Fee payer authorized for this credential. */
|
|
247
|
+
feePayer: Adapter.create.Options['feePayer']
|
|
248
|
+
/** Credential to broadcast. */
|
|
249
|
+
input: Mpp.RelayInput
|
|
250
|
+
/** MPP relay configuration. */
|
|
251
|
+
options: mpp.Options
|
|
252
|
+
}
|
|
253
|
+
}
|
|
254
|
+
|
|
255
|
+
function createAdapter(c: Context<App.Environment>, options: createAdapter.Options) {
|
|
256
|
+
const { chainId, options: options_mpp } = options
|
|
257
|
+
const principal = Auth.getPrincipal(c)
|
|
258
|
+
const feePayer =
|
|
259
|
+
options_mpp.feePayer && principal?.type === 'api_key'
|
|
260
|
+
? Sponsorship.decorate({
|
|
261
|
+
account: options_mpp.feePayer,
|
|
262
|
+
onSigned: ({ serializedTransaction }) =>
|
|
263
|
+
Sponsorship.record({
|
|
264
|
+
db: Db.get(c.get('db')),
|
|
265
|
+
dbCached: Db.get(c.get('dbCached')),
|
|
266
|
+
principal,
|
|
267
|
+
serializedTransaction,
|
|
268
|
+
txFeeLimit: Billing.toBaseUnits(options_mpp.txFeeLimit ?? '1.00'),
|
|
269
|
+
}),
|
|
270
|
+
})
|
|
271
|
+
: undefined
|
|
272
|
+
return Adapter.create({
|
|
273
|
+
chainId,
|
|
274
|
+
...(feePayer ? { feePayer } : {}),
|
|
275
|
+
getClient: (chainId) => {
|
|
276
|
+
const resolved = chainId ?? c.get('chainId')
|
|
277
|
+
Policy.assertSupportedChain({
|
|
278
|
+
chainId: resolved,
|
|
279
|
+
supportedChainIds: c.get('supportedChainIds'),
|
|
280
|
+
})
|
|
281
|
+
return c.get('getClient')(resolved)
|
|
74
282
|
},
|
|
283
|
+
screeningStore: c.get('store'),
|
|
284
|
+
...(options_mpp.screeningTtl === undefined ? {} : { screeningTtl: options_mpp.screeningTtl }),
|
|
285
|
+
...(options_mpp.reportUnknown === undefined
|
|
286
|
+
? {}
|
|
287
|
+
: { reportUnknown: options_mpp.reportUnknown }),
|
|
288
|
+
state: options_mpp.state,
|
|
289
|
+
time: (name, fn) => Timing.time(c, name, fn),
|
|
290
|
+
})
|
|
291
|
+
}
|
|
292
|
+
|
|
293
|
+
declare namespace createAdapter {
|
|
294
|
+
/** Dependencies used to create a credential-specific relay adapter. */
|
|
295
|
+
type Options = {
|
|
296
|
+
/** Chain selected by the MPP challenge. */
|
|
297
|
+
chainId: number
|
|
298
|
+
/** MPP relay configuration. */
|
|
299
|
+
options: mpp.Options
|
|
75
300
|
}
|
|
76
301
|
}
|
|
77
302
|
|
|
303
|
+
function observability(
|
|
304
|
+
c: Context<App.Environment>,
|
|
305
|
+
options: {
|
|
306
|
+
chainId: number
|
|
307
|
+
feePayer: boolean
|
|
308
|
+
idempotency?: 'claimed' | 'pending' | 'replay' | undefined
|
|
309
|
+
operation: 'broadcast' | 'verify'
|
|
310
|
+
response: Mpp.BroadcastResponse | Mpp.VerifyResponse
|
|
311
|
+
},
|
|
312
|
+
) {
|
|
313
|
+
return {
|
|
314
|
+
// Challenge-provided chain ids are untrusted. Keep metrics and analytics
|
|
315
|
+
// cardinality bounded to the deployment's configured chain set.
|
|
316
|
+
chainId: c.get('supportedChainIds').has(options.chainId) ? options.chainId : c.get('chainId'),
|
|
317
|
+
...(options.response.success ? {} : { errorCode: options.response.error.code }),
|
|
318
|
+
feePayer: options.feePayer,
|
|
319
|
+
...(options.idempotency === undefined ? {} : { idempotency: options.idempotency }),
|
|
320
|
+
operation: options.operation,
|
|
321
|
+
outcome: options.response.success ? 'success' : 'failure',
|
|
322
|
+
} as const
|
|
323
|
+
}
|
|
324
|
+
|
|
78
325
|
const openapi = {
|
|
79
326
|
tags: [
|
|
80
327
|
{
|
|
81
|
-
name: 'MPP
|
|
82
|
-
description:
|
|
328
|
+
name: 'MPP',
|
|
329
|
+
description:
|
|
330
|
+
'Submit completed MPP credentials to Tempo. Validate checks a credential without settling it; Broadcast validates, screens, and submits it. Both require `mpp:write`.',
|
|
83
331
|
},
|
|
84
332
|
],
|
|
85
|
-
'x-tagGroups': [{ name: 'Payments', tags: ['MPP Relay'] }],
|
|
86
333
|
} satisfies App.create.Metadata
|