tapimo 0.7.0 → 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 +151 -95
- 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 +14377 -10165
- 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 +1231 -324
- 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.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 +5 -5
- 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 +265 -265
- 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 +49 -9
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +116 -88
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +198 -91
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +55 -55
- 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 +78 -29
- 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 +10 -10
- 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.map +1 -1
- package/dist/apps/data/routes/verified-tokens.js +34 -9
- package/dist/apps/data/routes/verified-tokens.js.map +1 -1
- package/dist/apps/data/routes/webhooks.d.ts +5 -3
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +175 -65
- 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 +35 -35
- 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 +78 -78
- 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/usage.d.ts +80 -80
- 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 +184 -24
- 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 +16 -7
- 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 +35 -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 +4 -2
- package/dist/db/tables/sponsoredTransactions.d.ts.map +1 -1
- package/dist/db/tables/sponsoredTransactions.js +14 -4
- 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 +9 -2
- package/dist/internal/EdgeCache.d.ts.map +1 -1
- package/dist/internal/EdgeCache.js +36 -9
- 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 +8 -3
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +24 -13
- 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 +189 -95
- 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 +38 -9
- 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.test.ts +15 -0
- package/src/apps/data/routes/tokenlist.ts +88 -22
- package/src/apps/data/routes/tokens.ts +262 -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/verified-tokens.test.ts +51 -0
- package/src/apps/data/routes/verified-tokens.ts +52 -15
- package/src/apps/data/routes/webhooks.test.ts +432 -33
- package/src/apps/data/routes/webhooks.ts +189 -79
- 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 +495 -64
- package/src/apps/relay/App.ts +234 -24
- package/src/apps/relay/Sponsorships.test.ts +51 -0
- package/src/apps/relay/Sponsorships.ts +19 -7
- 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.test.ts +88 -0
- package/src/db/tables/organizations.ts +42 -1
- package/src/db/tables/projects.ts +16 -0
- package/src/db/tables/requestUsage.ts +23 -0
- package/src/db/tables/sponsoredTransactions.test.ts +52 -2
- package/src/db/tables/sponsoredTransactions.ts +18 -6
- 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 +37 -5
- package/src/internal/EdgeCache.ts +39 -7
- 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.test.ts +13 -0
- package/src/internal/Schema.ts +41 -24
- 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,453 @@
|
|
|
1
|
+
import * as z from 'zod/mini'
|
|
2
|
+
|
|
3
|
+
import type * as Db from '../../db/Db.js'
|
|
4
|
+
import * as FundingDepositAddresses from '../../db/tables/fundingDepositAddresses.js'
|
|
5
|
+
import * as FundingDeposits from '../../db/tables/fundingDeposits.js'
|
|
6
|
+
import * as Id from '../Id.js'
|
|
7
|
+
import * as Schema from '../Schema.js'
|
|
8
|
+
import * as Provider from './Provider.js'
|
|
9
|
+
|
|
10
|
+
/**
|
|
11
|
+
* Public funding deposit statuses:
|
|
12
|
+
*
|
|
13
|
+
* - `action-required`: Automatic processing stopped and requires recovery or operator action.
|
|
14
|
+
* - `bridging`: The provider is moving the source funds to Tempo.
|
|
15
|
+
* - `completed`: The full required amount reached the recipient.
|
|
16
|
+
* - `detected`: The provider reported a source transfer that awaits chain verification.
|
|
17
|
+
* - `refunded`: A verified refund reached the configured refund address.
|
|
18
|
+
* - `refunding`: A refund started but is not yet verified.
|
|
19
|
+
* - `settling`: Tempo is completing the required destination amount after provider delivery.
|
|
20
|
+
*/
|
|
21
|
+
export const statuses = [
|
|
22
|
+
'action-required',
|
|
23
|
+
'bridging',
|
|
24
|
+
'completed',
|
|
25
|
+
'detected',
|
|
26
|
+
'refunded',
|
|
27
|
+
'refunding',
|
|
28
|
+
'settling',
|
|
29
|
+
] as const
|
|
30
|
+
|
|
31
|
+
/** Lifecycle status of a detected funding deposit. */
|
|
32
|
+
export type Status = (typeof statuses)[number]
|
|
33
|
+
|
|
34
|
+
/** Statuses that never change after verified chain evidence. */
|
|
35
|
+
export const terminalStatuses = ['completed', 'refunded'] as const satisfies readonly Status[]
|
|
36
|
+
|
|
37
|
+
/**
|
|
38
|
+
* Customer-safe codes explaining a deposit that needs attention:
|
|
39
|
+
*
|
|
40
|
+
* - `delivery_failed`: The provider or Tempo could not complete destination delivery.
|
|
41
|
+
* - `delivery_liquidity_unavailable`: The selected strategy cannot obtain the required destination amount.
|
|
42
|
+
* - `manual_recovery_required`: Automatic processing cannot safely continue.
|
|
43
|
+
* - `refund_failed`: The provider could not refund the source funds.
|
|
44
|
+
* - `source_amount_not_supported`: The source amount is outside the supported limits.
|
|
45
|
+
* - `source_token_mismatch`: The transfer used a token other than the configured source token.
|
|
46
|
+
* - `subsidy_balance_unavailable`: Tempo lacks enough pathUSD for the required subsidy.
|
|
47
|
+
* - `subsidy_failed`: Tempo could not deliver the required subsidy.
|
|
48
|
+
*/
|
|
49
|
+
export const statusReasonCodes = [
|
|
50
|
+
'delivery_failed',
|
|
51
|
+
'delivery_liquidity_unavailable',
|
|
52
|
+
'manual_recovery_required',
|
|
53
|
+
'refund_failed',
|
|
54
|
+
'source_amount_not_supported',
|
|
55
|
+
'source_token_mismatch',
|
|
56
|
+
'subsidy_balance_unavailable',
|
|
57
|
+
'subsidy_failed',
|
|
58
|
+
] as const
|
|
59
|
+
|
|
60
|
+
/** Stable customer-safe deposit status reason code. */
|
|
61
|
+
export type StatusReasonCode = (typeof statusReasonCodes)[number]
|
|
62
|
+
|
|
63
|
+
/** Bounded private state used by deposit reconciliation. */
|
|
64
|
+
export type PrivateState = Record<string, unknown>
|
|
65
|
+
|
|
66
|
+
const transitions: Record<Status, readonly Status[]> = {
|
|
67
|
+
'action-required': ['bridging', 'completed', 'refunded', 'refunding', 'settling'],
|
|
68
|
+
bridging: ['action-required', 'completed', 'refunding', 'settling'],
|
|
69
|
+
completed: [],
|
|
70
|
+
detected: ['action-required', 'bridging', 'completed', 'refunding', 'settling'],
|
|
71
|
+
refunded: [],
|
|
72
|
+
refunding: ['action-required', 'refunded'],
|
|
73
|
+
settling: ['action-required', 'completed', 'refunding'],
|
|
74
|
+
}
|
|
75
|
+
|
|
76
|
+
/** Returns whether a deposit status is terminal. */
|
|
77
|
+
export function isTerminal(status: Status): boolean {
|
|
78
|
+
return (terminalStatuses as readonly Status[]).includes(status)
|
|
79
|
+
}
|
|
80
|
+
|
|
81
|
+
/** Returns whether the lifecycle allows moving between deposit statuses. */
|
|
82
|
+
export function canTransition(from: Status, to: Status): boolean {
|
|
83
|
+
return transitions[from].includes(to)
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
/** Generates a funding deposit id (`fdp_…`, lexically time-ordered). */
|
|
87
|
+
export function generateId(now: Date = new Date()): string {
|
|
88
|
+
return Id.generateSortable('fdp', now)
|
|
89
|
+
}
|
|
90
|
+
|
|
91
|
+
/** Zod schemas owned by the funding deposit resource. */
|
|
92
|
+
export namespace schema {
|
|
93
|
+
const transactionHashes = (description: string) =>
|
|
94
|
+
z
|
|
95
|
+
.readonly(z.array(z.string()))
|
|
96
|
+
.check(z.describe(description), z.meta({ examples: [[`0x${'aa'.repeat(32)}`]] }))
|
|
97
|
+
|
|
98
|
+
/** Funding deposit lifecycle status. */
|
|
99
|
+
export const Status = z
|
|
100
|
+
.enum(statuses)
|
|
101
|
+
.check(
|
|
102
|
+
z.describe('Current delivery status of the deposit.'),
|
|
103
|
+
z.meta({ examples: ['detected'] }),
|
|
104
|
+
)
|
|
105
|
+
|
|
106
|
+
/** Customer-safe explanation of a deposit status. */
|
|
107
|
+
export const StatusReason = z
|
|
108
|
+
.object({
|
|
109
|
+
code: z
|
|
110
|
+
.enum(statusReasonCodes)
|
|
111
|
+
.check(
|
|
112
|
+
z.describe('Stable machine-readable reason code.'),
|
|
113
|
+
z.meta({ examples: ['delivery_liquidity_unavailable'] }),
|
|
114
|
+
),
|
|
115
|
+
message: z
|
|
116
|
+
.string()
|
|
117
|
+
.check(
|
|
118
|
+
z.describe('Human-readable explanation of the current status.'),
|
|
119
|
+
z.meta({ examples: ['The required destination amount is not currently available.'] }),
|
|
120
|
+
),
|
|
121
|
+
})
|
|
122
|
+
.check(z.describe('Why a deposit needs attention or recovery.'))
|
|
123
|
+
|
|
124
|
+
/** Public fields persisted as the deposit snapshot. */
|
|
125
|
+
export const Snapshot = z
|
|
126
|
+
.object({
|
|
127
|
+
depositAddressId: z
|
|
128
|
+
.string()
|
|
129
|
+
.check(
|
|
130
|
+
z.regex(/^fda_[A-Za-z0-9_-]+$/),
|
|
131
|
+
z.describe('Funding deposit address that detected the transfer.'),
|
|
132
|
+
z.meta({ examples: ['fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
|
|
133
|
+
),
|
|
134
|
+
destinationAmount: z.optional(Schema.TokenAmount),
|
|
135
|
+
destinationAmountRequired: z
|
|
136
|
+
.optional(Schema.TokenAmount)
|
|
137
|
+
.check(z.describe('Destination amount required for completion, when known.')),
|
|
138
|
+
destinationChain: Provider.schema.ChainRef,
|
|
139
|
+
destinationToken: Provider.schema.TokenRef,
|
|
140
|
+
destinationTransactionHashes: z.optional(
|
|
141
|
+
transactionHashes('Verified destination transaction references.'),
|
|
142
|
+
),
|
|
143
|
+
provider: Provider.schema.ProviderRef,
|
|
144
|
+
recipient: z
|
|
145
|
+
.string()
|
|
146
|
+
.check(
|
|
147
|
+
z.regex(/^0x[0-9a-fA-F]{40}$/),
|
|
148
|
+
z.describe('Tempo account that receives the completed deposit.'),
|
|
149
|
+
z.meta({ examples: [`0x${'11'.repeat(20)}`] }),
|
|
150
|
+
),
|
|
151
|
+
refundAddress: z
|
|
152
|
+
.string()
|
|
153
|
+
.check(
|
|
154
|
+
z.describe('Source-chain address that receives a refund.'),
|
|
155
|
+
z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
|
|
156
|
+
),
|
|
157
|
+
refundAmount: z.optional(Schema.TokenAmount),
|
|
158
|
+
refundTransactionHashes: z.optional(
|
|
159
|
+
transactionHashes('Verified source-chain refund transaction references.'),
|
|
160
|
+
),
|
|
161
|
+
sender: z
|
|
162
|
+
.optional(z.string())
|
|
163
|
+
.check(
|
|
164
|
+
z.describe('Observed source-chain sender, when available.'),
|
|
165
|
+
z.meta({ examples: ['TJRabPrwbZy45sbavfcjinPJC18kjpRTv8'] }),
|
|
166
|
+
),
|
|
167
|
+
sourceAmount: z
|
|
168
|
+
.optional(Schema.TokenAmount)
|
|
169
|
+
.check(z.describe('Verified source amount, when source evidence is available.')),
|
|
170
|
+
sourceChain: Provider.schema.ChainRef,
|
|
171
|
+
sourceToken: Provider.schema.TokenRef,
|
|
172
|
+
sourceTransactionHashes: transactionHashes(
|
|
173
|
+
'Provider-observed source transaction references.',
|
|
174
|
+
),
|
|
175
|
+
})
|
|
176
|
+
.check(
|
|
177
|
+
z.describe('Public route, provider observations, and verified evidence for one deposit.'),
|
|
178
|
+
)
|
|
179
|
+
|
|
180
|
+
/** One detected funding deposit. */
|
|
181
|
+
export const FundingDeposit = z
|
|
182
|
+
.object({
|
|
183
|
+
createdAt: z
|
|
184
|
+
.string()
|
|
185
|
+
.check(
|
|
186
|
+
z.describe('When the deposit was first detected (ISO 8601).'),
|
|
187
|
+
z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
|
|
188
|
+
),
|
|
189
|
+
depositAddressId: Snapshot.shape.depositAddressId,
|
|
190
|
+
destinationAmount: Snapshot.shape.destinationAmount,
|
|
191
|
+
destinationAmountRequired: Snapshot.shape.destinationAmountRequired,
|
|
192
|
+
destinationChain: Snapshot.shape.destinationChain,
|
|
193
|
+
destinationToken: Snapshot.shape.destinationToken,
|
|
194
|
+
destinationTransactionHashes: Snapshot.shape.destinationTransactionHashes,
|
|
195
|
+
id: z
|
|
196
|
+
.string()
|
|
197
|
+
.check(
|
|
198
|
+
z.regex(/^fdp_[A-Za-z0-9_-]+$/),
|
|
199
|
+
z.describe('Funding deposit id (`fdp_…`).'),
|
|
200
|
+
z.meta({ examples: ['fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
|
|
201
|
+
),
|
|
202
|
+
provider: Snapshot.shape.provider,
|
|
203
|
+
recipient: Snapshot.shape.recipient,
|
|
204
|
+
refundAddress: Snapshot.shape.refundAddress,
|
|
205
|
+
refundAmount: Snapshot.shape.refundAmount,
|
|
206
|
+
refundTransactionHashes: Snapshot.shape.refundTransactionHashes,
|
|
207
|
+
sender: Snapshot.shape.sender,
|
|
208
|
+
sourceAmount: Snapshot.shape.sourceAmount,
|
|
209
|
+
sourceChain: Snapshot.shape.sourceChain,
|
|
210
|
+
sourceToken: Snapshot.shape.sourceToken,
|
|
211
|
+
sourceTransactionHashes: Snapshot.shape.sourceTransactionHashes,
|
|
212
|
+
sourceTransferIndex: z
|
|
213
|
+
.optional(z.number().check(z.int(), z.minimum(0)))
|
|
214
|
+
.check(
|
|
215
|
+
z.describe('Verified transfer position within the source transaction.'),
|
|
216
|
+
z.meta({ examples: [0] }),
|
|
217
|
+
),
|
|
218
|
+
status: Status,
|
|
219
|
+
statusReason: z.optional(StatusReason),
|
|
220
|
+
updatedAt: z
|
|
221
|
+
.string()
|
|
222
|
+
.check(
|
|
223
|
+
z.describe('When the deposit last materially changed (ISO 8601).'),
|
|
224
|
+
z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
|
|
225
|
+
),
|
|
226
|
+
})
|
|
227
|
+
.check(z.describe('One detected deposit and its delivery status.'))
|
|
228
|
+
}
|
|
229
|
+
|
|
230
|
+
/** Stored public snapshot of a funding deposit. */
|
|
231
|
+
export type Snapshot = z.output<typeof schema.Snapshot>
|
|
232
|
+
|
|
233
|
+
/** Customer-safe funding deposit status reason. */
|
|
234
|
+
export type StatusReason = z.output<typeof schema.StatusReason>
|
|
235
|
+
|
|
236
|
+
/** A funding deposit as returned by reads. */
|
|
237
|
+
export type Public = z.output<typeof schema.FundingDeposit>
|
|
238
|
+
|
|
239
|
+
/** Creates a durable record for one provider-observed source transaction. */
|
|
240
|
+
export async function create(db: Db.Db, input: create.Input): Promise<FundingDeposits.Record> {
|
|
241
|
+
const now = input.now ?? new Date()
|
|
242
|
+
const depositAddressId = schema.Snapshot.shape.depositAddressId.parse(
|
|
243
|
+
input.snapshot.depositAddressId,
|
|
244
|
+
)
|
|
245
|
+
const address = await FundingDepositAddresses.get(db, depositAddressId)
|
|
246
|
+
if (!address) throw new DepositAddressNotFoundError(depositAddressId)
|
|
247
|
+
const snapshot = schema.Snapshot.parse({
|
|
248
|
+
...input.snapshot,
|
|
249
|
+
depositAddressId: address.id,
|
|
250
|
+
destinationChain: address.snapshot.destinationChain,
|
|
251
|
+
destinationToken: address.snapshot.destinationToken,
|
|
252
|
+
provider: address.snapshot.provider,
|
|
253
|
+
recipient: address.snapshot.recipient,
|
|
254
|
+
refundAddress: address.snapshot.refundAddress,
|
|
255
|
+
sourceChain: address.snapshot.sourceChain,
|
|
256
|
+
sourceToken: address.snapshot.sourceToken,
|
|
257
|
+
sourceTransactionHashes: [input.sourceTransactionHash],
|
|
258
|
+
})
|
|
259
|
+
return FundingDeposits.insert(db, {
|
|
260
|
+
createdAt: now.toISOString(),
|
|
261
|
+
depositAddressId: snapshot.depositAddressId,
|
|
262
|
+
environment: address.environment,
|
|
263
|
+
id: input.id ?? generateId(now),
|
|
264
|
+
orgId: address.orgId,
|
|
265
|
+
projectId: address.projectId,
|
|
266
|
+
providerOutputAmount: input.providerOutputAmount ?? null,
|
|
267
|
+
providerOutputToken: address.providerOutputToken,
|
|
268
|
+
providerRequestId: input.providerRequestId,
|
|
269
|
+
providerRequestIds: [
|
|
270
|
+
...new Set([input.providerRequestId, ...(input.providerRequestIds ?? [])]),
|
|
271
|
+
],
|
|
272
|
+
providerState: input.providerState ?? null,
|
|
273
|
+
providerTransactionHashes: input.providerTransactionHashes ?? [],
|
|
274
|
+
providerTransferIndex: input.providerTransferIndex ?? 0,
|
|
275
|
+
retryState: input.retryState ?? null,
|
|
276
|
+
settlementTransaction: input.settlementTransaction ?? null,
|
|
277
|
+
settlementTransactionHash: input.settlementTransactionHash ?? null,
|
|
278
|
+
snapshot,
|
|
279
|
+
sourceChainId: snapshot.sourceChain.id,
|
|
280
|
+
sourceTransactionHash: input.sourceTransactionHash,
|
|
281
|
+
sourceTransferIndex: input.sourceTransferIndex ?? null,
|
|
282
|
+
status: 'detected',
|
|
283
|
+
statusReason: null,
|
|
284
|
+
subsidyAmount: input.subsidyAmount ?? null,
|
|
285
|
+
tempoGasPaid: input.tempoGasPaid ?? null,
|
|
286
|
+
updatedAt: now.toISOString(),
|
|
287
|
+
version: 1,
|
|
288
|
+
})
|
|
289
|
+
}
|
|
290
|
+
|
|
291
|
+
export declare namespace create {
|
|
292
|
+
/** Fields required to persist a provider-observed deposit. */
|
|
293
|
+
type Input = {
|
|
294
|
+
/** Deposit id override for deterministic tests. */
|
|
295
|
+
id?: string | undefined
|
|
296
|
+
/** Detection time override for deterministic tests. */
|
|
297
|
+
now?: Date | undefined
|
|
298
|
+
/** Provider output amount confirmed on Tempo. */
|
|
299
|
+
providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
|
|
300
|
+
/** Provider request that reported the source transaction. */
|
|
301
|
+
providerRequestId: string
|
|
302
|
+
/** Private provider request identifiers. */
|
|
303
|
+
providerRequestIds?: readonly string[] | undefined
|
|
304
|
+
/** Bounded private provider state. */
|
|
305
|
+
providerState?: PrivateState | undefined
|
|
306
|
+
/** Provider-leg transaction references. */
|
|
307
|
+
providerTransactionHashes?: readonly string[] | undefined
|
|
308
|
+
/** Deposit position within the provider request. */
|
|
309
|
+
providerTransferIndex?: number | undefined
|
|
310
|
+
/** Bounded private retry state. */
|
|
311
|
+
retryState?: PrivateState | undefined
|
|
312
|
+
/** Persisted settlement transaction bytes for exactly-once rebroadcast. */
|
|
313
|
+
settlementTransaction?: string | undefined
|
|
314
|
+
/** Persisted settlement transaction hash. */
|
|
315
|
+
settlementTransactionHash?: string | undefined
|
|
316
|
+
/** Public deposit snapshot. */
|
|
317
|
+
snapshot: Snapshot
|
|
318
|
+
/** Source transaction containing the deposited transfer. */
|
|
319
|
+
sourceTransactionHash: string
|
|
320
|
+
/** Verified transfer position within the source transaction. */
|
|
321
|
+
sourceTransferIndex?: number | undefined
|
|
322
|
+
/** Destination token amount supplied by Tempo. */
|
|
323
|
+
subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
|
|
324
|
+
/** Tempo gas paid for settlement, in base units. */
|
|
325
|
+
tempoGasPaid?: string | undefined
|
|
326
|
+
}
|
|
327
|
+
}
|
|
328
|
+
|
|
329
|
+
/** Applies a version-guarded material deposit change. */
|
|
330
|
+
export async function transition(
|
|
331
|
+
db: Db.Db,
|
|
332
|
+
options: transition.Options,
|
|
333
|
+
): Promise<transition.Result> {
|
|
334
|
+
const current = await FundingDeposits.get(db, options.id)
|
|
335
|
+
if (!current) return { type: 'not_found' }
|
|
336
|
+
if (current.version !== options.expectedVersion) return { current, type: 'stale' }
|
|
337
|
+
const status = options.status ?? current.status
|
|
338
|
+
if (status !== current.status && !canTransition(current.status, status))
|
|
339
|
+
return { current, type: 'invalid' }
|
|
340
|
+
const snapshot =
|
|
341
|
+
options.snapshot === undefined
|
|
342
|
+
? current.snapshot
|
|
343
|
+
: schema.Snapshot.parse({
|
|
344
|
+
...options.snapshot,
|
|
345
|
+
depositAddressId: current.snapshot.depositAddressId,
|
|
346
|
+
destinationAmountRequired:
|
|
347
|
+
current.snapshot.destinationAmountRequired ??
|
|
348
|
+
options.snapshot.destinationAmountRequired,
|
|
349
|
+
destinationChain: current.snapshot.destinationChain,
|
|
350
|
+
destinationToken: current.snapshot.destinationToken,
|
|
351
|
+
provider: current.snapshot.provider,
|
|
352
|
+
recipient: current.snapshot.recipient,
|
|
353
|
+
refundAddress: current.snapshot.refundAddress,
|
|
354
|
+
sender: current.snapshot.sender ?? options.snapshot.sender,
|
|
355
|
+
sourceAmount: current.snapshot.sourceAmount ?? options.snapshot.sourceAmount,
|
|
356
|
+
sourceChain: current.snapshot.sourceChain,
|
|
357
|
+
sourceToken: current.snapshot.sourceToken,
|
|
358
|
+
sourceTransactionHashes: current.snapshot.sourceTransactionHashes,
|
|
359
|
+
})
|
|
360
|
+
|
|
361
|
+
const updated = await FundingDeposits.update(db, {
|
|
362
|
+
expectedVersion: options.expectedVersion,
|
|
363
|
+
id: options.id,
|
|
364
|
+
providerOutputAmount: options.providerOutputAmount ?? current.providerOutputAmount,
|
|
365
|
+
providerRequestId: current.providerRequestId,
|
|
366
|
+
providerRequestIds: options.providerRequestIds ?? current.providerRequestIds,
|
|
367
|
+
providerState: options.providerState ?? current.providerState,
|
|
368
|
+
providerTransactionHashes:
|
|
369
|
+
options.providerTransactionHashes ?? current.providerTransactionHashes,
|
|
370
|
+
providerTransferIndex: current.providerTransferIndex,
|
|
371
|
+
retryState: options.retryState ?? current.retryState,
|
|
372
|
+
settlementTransaction: options.settlementTransaction ?? current.settlementTransaction,
|
|
373
|
+
settlementTransactionHash:
|
|
374
|
+
options.settlementTransactionHash ?? current.settlementTransactionHash,
|
|
375
|
+
snapshot,
|
|
376
|
+
sourceTransferIndex: current.sourceTransferIndex ?? options.sourceTransferIndex ?? null,
|
|
377
|
+
status,
|
|
378
|
+
statusReason: options.statusReason ?? (status === current.status ? current.statusReason : null),
|
|
379
|
+
subsidyAmount: options.subsidyAmount ?? current.subsidyAmount,
|
|
380
|
+
tempoGasPaid: options.tempoGasPaid ?? current.tempoGasPaid,
|
|
381
|
+
updatedAt: new Date().toISOString(),
|
|
382
|
+
version: current.version + 1,
|
|
383
|
+
})
|
|
384
|
+
if (updated) return { record: updated, type: 'applied' }
|
|
385
|
+
const latest = await FundingDeposits.get(db, options.id)
|
|
386
|
+
return latest ? { current: latest, type: 'stale' } : { type: 'not_found' }
|
|
387
|
+
}
|
|
388
|
+
|
|
389
|
+
export declare namespace transition {
|
|
390
|
+
/** Fields describing a material deposit change. */
|
|
391
|
+
type Options = {
|
|
392
|
+
/** Version that the change was computed against. */
|
|
393
|
+
expectedVersion: number
|
|
394
|
+
/** Funding deposit id (`fdp_…`). */
|
|
395
|
+
id: string
|
|
396
|
+
/** Provider output amount confirmed on Tempo. */
|
|
397
|
+
providerOutputAmount?: z.output<typeof Schema.TokenAmount> | undefined
|
|
398
|
+
/** Private provider request identifiers. */
|
|
399
|
+
providerRequestIds?: readonly string[] | undefined
|
|
400
|
+
/** Bounded private provider state. */
|
|
401
|
+
providerState?: PrivateState | undefined
|
|
402
|
+
/** Provider-leg transaction references. */
|
|
403
|
+
providerTransactionHashes?: readonly string[] | undefined
|
|
404
|
+
/** Bounded private retry state. */
|
|
405
|
+
retryState?: PrivateState | undefined
|
|
406
|
+
/** Persisted settlement transaction bytes for exactly-once rebroadcast. */
|
|
407
|
+
settlementTransaction?: string | undefined
|
|
408
|
+
/** Persisted settlement transaction hash. */
|
|
409
|
+
settlementTransactionHash?: string | undefined
|
|
410
|
+
/** Replacement public snapshot. */
|
|
411
|
+
snapshot?: Snapshot | undefined
|
|
412
|
+
/** Verified transfer position within the source transaction. */
|
|
413
|
+
sourceTransferIndex?: number | undefined
|
|
414
|
+
/** New lifecycle status. */
|
|
415
|
+
status?: Status | undefined
|
|
416
|
+
/** Customer-safe reason attached to the current status. */
|
|
417
|
+
statusReason?: StatusReason | undefined
|
|
418
|
+
/** Destination token amount supplied by Tempo. */
|
|
419
|
+
subsidyAmount?: z.output<typeof Schema.TokenAmount> | undefined
|
|
420
|
+
/** Tempo gas paid for settlement, in base units. */
|
|
421
|
+
tempoGasPaid?: string | undefined
|
|
422
|
+
}
|
|
423
|
+
|
|
424
|
+
/** Outcome of a guarded deposit transition. */
|
|
425
|
+
type Result =
|
|
426
|
+
| { record: FundingDeposits.Record; type: 'applied' }
|
|
427
|
+
| { current: FundingDeposits.Record; type: 'invalid' }
|
|
428
|
+
| { current: FundingDeposits.Record; type: 'stale' }
|
|
429
|
+
| { type: 'not_found' }
|
|
430
|
+
}
|
|
431
|
+
|
|
432
|
+
/** Serializes a stored deposit to the public read shape. */
|
|
433
|
+
export function toPublic(record: FundingDeposits.Record): Public {
|
|
434
|
+
return schema.FundingDeposit.parse({
|
|
435
|
+
...record.snapshot,
|
|
436
|
+
createdAt: record.createdAt,
|
|
437
|
+
id: record.id,
|
|
438
|
+
...(record.sourceTransferIndex === null
|
|
439
|
+
? {}
|
|
440
|
+
: { sourceTransferIndex: record.sourceTransferIndex }),
|
|
441
|
+
status: record.status,
|
|
442
|
+
...(record.statusReason === null ? {} : { statusReason: record.statusReason }),
|
|
443
|
+
updatedAt: record.updatedAt,
|
|
444
|
+
})
|
|
445
|
+
}
|
|
446
|
+
|
|
447
|
+
class DepositAddressNotFoundError extends Error {
|
|
448
|
+
override name = 'FundingDeposit.DepositAddressNotFoundError'
|
|
449
|
+
|
|
450
|
+
constructor(id: string) {
|
|
451
|
+
super(`Funding deposit address ${id} not found`)
|
|
452
|
+
}
|
|
453
|
+
}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import * as DepositAddress from './DepositAddress.js'
|
|
2
|
+
|
|
3
|
+
describe('generateId', () => {
|
|
4
|
+
test('generates a lexically time-ordered funding deposit address id', () => {
|
|
5
|
+
const earlier = DepositAddress.generateId(new Date('2026-01-01T00:00:00.000Z'))
|
|
6
|
+
const later = DepositAddress.generateId(new Date('2026-01-01T00:00:01.000Z'))
|
|
7
|
+
expect(earlier).toMatch(/^fda_\d{15}_[A-Za-z0-9]{24}$/)
|
|
8
|
+
expect(earlier < later).toBe(true)
|
|
9
|
+
})
|
|
10
|
+
})
|
|
11
|
+
|
|
12
|
+
describe('canTransition', () => {
|
|
13
|
+
test('allows disabling and restoring a reusable address', () => {
|
|
14
|
+
expect(DepositAddress.canTransition('active', 'action-required')).toBe(true)
|
|
15
|
+
expect(DepositAddress.canTransition('action-required', 'active')).toBe(true)
|
|
16
|
+
expect(DepositAddress.canTransition('active', 'active')).toBe(false)
|
|
17
|
+
})
|
|
18
|
+
})
|