tapimo 0.11.0 → 0.13.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/dist/App.d.ts +6396 -4575
- package/dist/App.d.ts.map +1 -1
- package/dist/App.js +39 -4
- package/dist/App.js.map +1 -1
- package/dist/Assets.d.ts +15 -0
- package/dist/Assets.d.ts.map +1 -1
- package/dist/Assets.js +7 -0
- package/dist/Assets.js.map +1 -1
- package/dist/Scope.d.ts +2 -0
- package/dist/Scope.d.ts.map +1 -1
- package/dist/Scope.js +17 -0
- package/dist/Scope.js.map +1 -1
- package/dist/admin/App.d.ts +176 -78
- package/dist/admin/App.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.d.ts +84 -4
- package/dist/admin/apps/api-keys.d.ts.map +1 -1
- package/dist/admin/apps/api-keys.js +54 -0
- package/dist/admin/apps/api-keys.js.map +1 -1
- package/dist/admin/apps/earn-vaults.d.ts +123 -9
- package/dist/admin/apps/earn-vaults.d.ts.map +1 -1
- package/dist/admin/apps/earn-vaults.js +60 -7
- package/dist/admin/apps/earn-vaults.js.map +1 -1
- package/dist/admin/apps/organizations.d.ts.map +1 -1
- package/dist/admin/apps/organizations.js +4 -2
- package/dist/admin/apps/organizations.js.map +1 -1
- package/dist/admin/apps/verified-tokens.d.ts +90 -90
- package/dist/admin/ui.generated.d.ts +1 -1
- package/dist/admin/ui.generated.js +71 -71
- package/dist/admin/ui.generated.js.map +1 -1
- package/dist/apps/Zones.d.ts +16 -16
- package/dist/apps/Zones.js +4 -4
- package/dist/apps/data/App.d.ts +1699 -749
- package/dist/apps/data/App.d.ts.map +1 -1
- package/dist/apps/data/App.js +58 -9
- package/dist/apps/data/App.js.map +1 -1
- package/dist/apps/data/ZoneSelection.d.ts +62 -0
- package/dist/apps/data/ZoneSelection.d.ts.map +1 -0
- package/dist/apps/data/ZoneSelection.js +44 -0
- package/dist/apps/data/ZoneSelection.js.map +1 -0
- package/dist/apps/data/routes/activities.d.ts +2417 -50
- package/dist/apps/data/routes/activities.d.ts.map +1 -1
- package/dist/apps/data/routes/activities.js +1896 -1293
- package/dist/apps/data/routes/activities.js.map +1 -1
- package/dist/apps/data/routes/addresses.d.ts +471 -340
- package/dist/apps/data/routes/addresses.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.d.ts +12 -12
- package/dist/apps/data/routes/balances.d.ts.map +1 -1
- package/dist/apps/data/routes/balances.js +44 -17
- package/dist/apps/data/routes/balances.js.map +1 -1
- package/dist/apps/data/routes/blocks.d.ts +42 -42
- package/dist/apps/data/routes/blocks.d.ts.map +1 -1
- package/dist/apps/data/routes/blocks.js +22 -12
- package/dist/apps/data/routes/blocks.js.map +1 -1
- package/dist/apps/data/routes/coingecko.d.ts +179 -179
- package/dist/apps/data/routes/earn.d.ts +144 -19
- package/dist/apps/data/routes/earn.d.ts.map +1 -1
- package/dist/apps/data/routes/earn.js +160 -28
- package/dist/apps/data/routes/earn.js.map +1 -1
- package/dist/apps/data/routes/exchanges.d.ts +719 -13
- package/dist/apps/data/routes/exchanges.d.ts.map +1 -1
- package/dist/apps/data/routes/exchanges.js +16 -13
- package/dist/apps/data/routes/exchanges.js.map +1 -1
- package/dist/apps/data/routes/fee-amm.d.ts +2 -2
- package/dist/apps/data/routes/fee-amm.d.ts.map +1 -1
- package/dist/apps/data/routes/fee-amm.js +9 -11
- package/dist/apps/data/routes/fee-amm.js.map +1 -1
- package/dist/apps/data/routes/indexer.d.ts +34 -34
- package/dist/apps/data/routes/receipts.d.ts +363 -263
- package/dist/apps/data/routes/receipts.d.ts.map +1 -1
- package/dist/apps/data/routes/receipts.js +29 -11
- package/dist/apps/data/routes/receipts.js.map +1 -1
- package/dist/apps/data/routes/rpc.js +24 -10
- package/dist/apps/data/routes/rpc.js.map +1 -1
- package/dist/apps/data/routes/tokenlist.d.ts +13 -13
- package/dist/apps/data/routes/tokenlist.d.ts.map +1 -1
- package/dist/apps/data/routes/tokenlist.js +16 -15
- package/dist/apps/data/routes/tokenlist.js.map +1 -1
- package/dist/apps/data/routes/tokens.d.ts +112 -98
- package/dist/apps/data/routes/tokens.d.ts.map +1 -1
- package/dist/apps/data/routes/tokens.js +85 -35
- package/dist/apps/data/routes/tokens.js.map +1 -1
- package/dist/apps/data/routes/transactions.d.ts +7 -2
- package/dist/apps/data/routes/transactions.d.ts.map +1 -1
- package/dist/apps/data/routes/transactions.js +38 -18
- package/dist/apps/data/routes/transactions.js.map +1 -1
- package/dist/apps/data/routes/transfers.d.ts +1 -1
- package/dist/apps/data/routes/transfers.d.ts.map +1 -1
- package/dist/apps/data/routes/transfers.js +25 -21
- package/dist/apps/data/routes/transfers.js.map +1 -1
- package/dist/apps/data/routes/valuation.d.ts +1 -1
- package/dist/apps/data/routes/valuation.d.ts.map +1 -1
- package/dist/apps/data/routes/valuation.js +12 -7
- package/dist/apps/data/routes/valuation.js.map +1 -1
- package/dist/apps/data/routes/verified-tokens.d.ts +3 -3
- package/dist/apps/data/routes/webhooks.d.ts +15 -15
- package/dist/apps/data/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/data/routes/webhooks.js +2 -2
- package/dist/apps/data/routes/webhooks.js.map +1 -1
- package/dist/apps/data/routes/zones.d.ts +32 -32
- package/dist/apps/data/routes/zones.js +1 -1
- package/dist/apps/funding/App.d.ts +38 -27
- package/dist/apps/funding/App.d.ts.map +1 -1
- package/dist/apps/funding/routes/chains.d.ts.map +1 -1
- package/dist/apps/funding/routes/chains.js +5 -4
- package/dist/apps/funding/routes/chains.js.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.d.ts +16 -16
- package/dist/apps/funding/routes/deposit-addresses.d.ts.map +1 -1
- package/dist/apps/funding/routes/deposit-addresses.js +24 -19
- package/dist/apps/funding/routes/deposit-addresses.js.map +1 -1
- package/dist/apps/funding/routes/providers.d.ts +13 -13
- package/dist/apps/funding/routes/providers.d.ts.map +1 -1
- package/dist/apps/funding/routes/providers.js +3 -2
- package/dist/apps/funding/routes/providers.js.map +1 -1
- package/dist/apps/funding/routes/quotes.d.ts.map +1 -1
- package/dist/apps/funding/routes/quotes.js +2 -2
- package/dist/apps/funding/routes/quotes.js.map +1 -1
- package/dist/apps/funding/routes/transfers.d.ts +60 -48
- package/dist/apps/funding/routes/transfers.d.ts.map +1 -1
- package/dist/apps/funding/routes/transfers.js +27 -19
- package/dist/apps/funding/routes/transfers.js.map +1 -1
- package/dist/apps/management/App.d.ts +4558 -3700
- package/dist/apps/management/App.d.ts.map +1 -1
- package/dist/apps/management/Billing.d.ts.map +1 -1
- package/dist/apps/management/Billing.js +19 -6
- package/dist/apps/management/Billing.js.map +1 -1
- package/dist/apps/management/routes/api-keys.d.ts +786 -175
- package/dist/apps/management/routes/api-keys.d.ts.map +1 -1
- package/dist/apps/management/routes/api-keys.js +312 -34
- package/dist/apps/management/routes/api-keys.js.map +1 -1
- package/dist/apps/management/routes/billing.d.ts +103 -30
- package/dist/apps/management/routes/billing.d.ts.map +1 -1
- package/dist/apps/management/routes/billing.js +91 -32
- package/dist/apps/management/routes/billing.js.map +1 -1
- package/dist/apps/management/routes/faucet.d.ts +35 -35
- package/dist/apps/management/routes/faucet.d.ts.map +1 -1
- package/dist/apps/management/routes/faucet.js +23 -12
- package/dist/apps/management/routes/faucet.js.map +1 -1
- package/dist/apps/management/routes/invitations.d.ts +46 -13
- package/dist/apps/management/routes/invitations.d.ts.map +1 -1
- package/dist/apps/management/routes/invitations.js +79 -29
- package/dist/apps/management/routes/invitations.js.map +1 -1
- package/dist/apps/management/routes/invite-links.d.ts +120 -75
- package/dist/apps/management/routes/invite-links.d.ts.map +1 -1
- package/dist/apps/management/routes/invite-links.js +100 -41
- package/dist/apps/management/routes/invite-links.js.map +1 -1
- package/dist/apps/management/routes/me.d.ts +5 -5
- package/dist/apps/management/routes/me.d.ts.map +1 -1
- package/dist/apps/management/routes/me.js +14 -10
- package/dist/apps/management/routes/me.js.map +1 -1
- package/dist/apps/management/routes/members.d.ts +99 -78
- package/dist/apps/management/routes/members.d.ts.map +1 -1
- package/dist/apps/management/routes/members.js +37 -18
- package/dist/apps/management/routes/members.js.map +1 -1
- package/dist/apps/management/routes/orgs.d.ts +48 -8
- package/dist/apps/management/routes/orgs.d.ts.map +1 -1
- package/dist/apps/management/routes/orgs.js +48 -19
- package/dist/apps/management/routes/orgs.js.map +1 -1
- package/dist/apps/management/routes/projects.d.ts +108 -46
- package/dist/apps/management/routes/projects.d.ts.map +1 -1
- package/dist/apps/management/routes/projects.js +72 -21
- package/dist/apps/management/routes/projects.js.map +1 -1
- package/dist/apps/management/routes/scopes.d.ts.map +1 -1
- package/dist/apps/management/routes/scopes.js +8 -5
- package/dist/apps/management/routes/scopes.js.map +1 -1
- package/dist/apps/management/routes/usage.d.ts +82 -82
- package/dist/apps/management/routes/usage.d.ts.map +1 -1
- package/dist/apps/management/routes/usage.js +41 -31
- package/dist/apps/management/routes/usage.js.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.d.ts +35 -7
- package/dist/apps/management/routes/verified-token-requests.d.ts.map +1 -1
- package/dist/apps/management/routes/verified-token-requests.js +36 -17
- package/dist/apps/management/routes/verified-token-requests.js.map +1 -1
- package/dist/apps/management/routes/webhooks.d.ts +200 -183
- package/dist/apps/management/routes/webhooks.d.ts.map +1 -1
- package/dist/apps/management/routes/webhooks.js +80 -35
- package/dist/apps/management/routes/webhooks.js.map +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts +1 -1
- package/dist/apps/mpp/internal/Adapter.d.ts.map +1 -1
- package/dist/apps/mpp/internal/Adapter.js +12 -0
- package/dist/apps/mpp/internal/Adapter.js.map +1 -1
- package/dist/db/Db.d.ts +2 -0
- package/dist/db/Db.d.ts.map +1 -1
- package/dist/db/Db.js +52 -1
- package/dist/db/Db.js.map +1 -1
- package/dist/db/Schema.d.ts +26 -3
- package/dist/db/Schema.d.ts.map +1 -1
- package/dist/db/Schema.js +24 -5
- package/dist/db/Schema.js.map +1 -1
- package/dist/db/tables/earnVaults.d.ts +5 -1
- package/dist/db/tables/earnVaults.d.ts.map +1 -1
- package/dist/db/tables/earnVaults.js +5 -0
- package/dist/db/tables/earnVaults.js.map +1 -1
- package/dist/db/tables/fundingCatalog.d.ts +4 -2
- package/dist/db/tables/fundingCatalog.d.ts.map +1 -1
- package/dist/db/tables/fundingCatalog.js +5 -1
- package/dist/db/tables/fundingCatalog.js.map +1 -1
- package/dist/db/tables/webhookDeliveries.d.ts.map +1 -1
- package/dist/db/tables/webhookDeliveries.js +10 -0
- package/dist/db/tables/webhookDeliveries.js.map +1 -1
- package/dist/db/tables/webhookQueueCompletions.d.ts +15 -0
- package/dist/db/tables/webhookQueueCompletions.d.ts.map +1 -0
- package/dist/db/tables/webhookQueueCompletions.js +32 -0
- package/dist/db/tables/webhookQueueCompletions.js.map +1 -0
- package/dist/db/tables/webhookQueueEvents.d.ts +14 -20
- package/dist/db/tables/webhookQueueEvents.d.ts.map +1 -1
- package/dist/db/tables/webhookQueueEvents.js +68 -47
- package/dist/db/tables/webhookQueueEvents.js.map +1 -1
- package/dist/db/tables/webhookSubscriptions.d.ts +16 -5
- package/dist/db/tables/webhookSubscriptions.d.ts.map +1 -1
- package/dist/db/tables/webhookSubscriptions.js +29 -5
- package/dist/db/tables/webhookSubscriptions.js.map +1 -1
- package/dist/handlers/internal/utils.d.ts.map +1 -1
- package/dist/handlers/internal/utils.js +9 -0
- package/dist/handlers/internal/utils.js.map +1 -1
- package/dist/internal/Auth.d.ts +11 -2
- package/dist/internal/Auth.d.ts.map +1 -1
- package/dist/internal/Auth.js +19 -6
- package/dist/internal/Auth.js.map +1 -1
- package/dist/internal/Cache.d.ts.map +1 -1
- package/dist/internal/Cache.js +11 -7
- package/dist/internal/Cache.js.map +1 -1
- package/dist/internal/EarnVaults.d.ts +43 -4
- package/dist/internal/EarnVaults.d.ts.map +1 -1
- package/dist/internal/EarnVaults.js +167 -0
- package/dist/internal/EarnVaults.js.map +1 -1
- package/dist/internal/Fetch.d.ts +23 -0
- package/dist/internal/Fetch.d.ts.map +1 -0
- package/dist/internal/Fetch.js +26 -0
- package/dist/internal/Fetch.js.map +1 -0
- package/dist/internal/Log.d.ts +3 -1
- package/dist/internal/Log.d.ts.map +1 -1
- package/dist/internal/Log.js +16 -3
- package/dist/internal/Log.js.map +1 -1
- package/dist/internal/OpenApi.d.ts +30 -24
- package/dist/internal/OpenApi.d.ts.map +1 -1
- package/dist/internal/OpenApi.js +140 -41
- package/dist/internal/OpenApi.js.map +1 -1
- package/dist/internal/Response.d.ts +14 -9
- package/dist/internal/Response.d.ts.map +1 -1
- package/dist/internal/Response.js +16 -5
- package/dist/internal/Response.js.map +1 -1
- package/dist/internal/Schema.d.ts +11 -10
- package/dist/internal/Schema.d.ts.map +1 -1
- package/dist/internal/Schema.js +14 -9
- package/dist/internal/Schema.js.map +1 -1
- package/dist/internal/Store.d.ts +28 -6
- package/dist/internal/Store.d.ts.map +1 -1
- package/dist/internal/Store.js +121 -25
- package/dist/internal/Store.js.map +1 -1
- package/dist/internal/Tidx.d.ts +2 -0
- package/dist/internal/Tidx.d.ts.map +1 -1
- package/dist/internal/Tidx.js +23 -6
- package/dist/internal/Tidx.js.map +1 -1
- package/dist/internal/Timeout.d.ts +36 -0
- package/dist/internal/Timeout.d.ts.map +1 -0
- package/dist/internal/Timeout.js +37 -0
- package/dist/internal/Timeout.js.map +1 -0
- package/dist/internal/Timing.d.ts +9 -0
- package/dist/internal/Timing.d.ts.map +1 -1
- package/dist/internal/Timing.js +7 -0
- package/dist/internal/Timing.js.map +1 -1
- package/dist/internal/WebhookDestination.d.ts.map +1 -1
- package/dist/internal/WebhookDestination.js +3 -0
- package/dist/internal/WebhookDestination.js.map +1 -1
- package/dist/internal/Webhooks.d.ts +29 -12
- package/dist/internal/Webhooks.d.ts.map +1 -1
- package/dist/internal/Webhooks.js +37 -20
- package/dist/internal/Webhooks.js.map +1 -1
- package/dist/internal/funding/Action.d.ts +9 -0
- package/dist/internal/funding/Action.d.ts.map +1 -1
- package/dist/internal/funding/Action.js +16 -8
- package/dist/internal/funding/Action.js.map +1 -1
- package/dist/internal/funding/Catalog.d.ts +9 -2
- package/dist/internal/funding/Catalog.d.ts.map +1 -1
- package/dist/internal/funding/Catalog.js +19 -8
- package/dist/internal/funding/Catalog.js.map +1 -1
- package/dist/internal/funding/Deposit.d.ts +2 -2
- package/dist/internal/funding/Deposit.d.ts.map +1 -1
- package/dist/internal/funding/Deposit.js +9 -8
- package/dist/internal/funding/Deposit.js.map +1 -1
- package/dist/internal/funding/DepositAddress.d.ts +4 -4
- package/dist/internal/funding/DepositAddress.d.ts.map +1 -1
- package/dist/internal/funding/DepositAddress.js +9 -8
- package/dist/internal/funding/DepositAddress.js.map +1 -1
- package/dist/internal/funding/Provider.d.ts +68 -13
- package/dist/internal/funding/Provider.d.ts.map +1 -1
- package/dist/internal/funding/Provider.js +42 -20
- package/dist/internal/funding/Provider.js.map +1 -1
- package/dist/internal/funding/Transfer.d.ts +13 -12
- package/dist/internal/funding/Transfer.d.ts.map +1 -1
- package/dist/internal/funding/Transfer.js +23 -21
- package/dist/internal/funding/Transfer.js.map +1 -1
- package/dist/internal/funding/providers/stargate.d.ts +38 -0
- package/dist/internal/funding/providers/stargate.d.ts.map +1 -0
- package/dist/internal/funding/providers/stargate.js +277 -0
- package/dist/internal/funding/providers/stargate.js.map +1 -0
- package/dist/internal/index.d.ts +1 -0
- package/dist/internal/index.d.ts.map +1 -1
- package/dist/internal/index.js +1 -0
- package/dist/internal/index.js.map +1 -1
- package/dist/providers/index.d.ts +7 -0
- package/dist/providers/index.d.ts.map +1 -1
- package/dist/providers/index.js +3 -0
- package/dist/providers/index.js.map +1 -1
- package/package.json +3 -3
- package/src/App.test.ts +148 -0
- package/src/App.ts +45 -4
- package/src/Assets.test.ts +18 -0
- package/src/Assets.ts +22 -0
- package/src/Client.test-d.ts +311 -16
- package/src/Scope.test.ts +20 -0
- package/src/Scope.ts +16 -0
- package/src/admin/apps/api-keys.test.ts +75 -0
- package/src/admin/apps/api-keys.ts +64 -0
- package/src/admin/apps/earn-vaults.test.ts +143 -0
- package/src/admin/apps/earn-vaults.ts +84 -7
- package/src/admin/apps/organizations.ts +6 -2
- package/src/admin/ui/src/lib/api-keys.ts +19 -0
- package/src/admin/ui/src/routes/api-keys.tsx +125 -2
- package/src/admin/ui.generated.ts +71 -71
- package/src/apps/Zones.test.ts +4 -4
- package/src/apps/Zones.ts +4 -4
- package/src/apps/composition.test.ts +1 -1
- package/src/apps/data/App.test.ts +72 -0
- package/src/apps/data/App.ts +58 -10
- package/src/apps/data/ZoneSelection.test.ts +196 -0
- package/src/apps/data/ZoneSelection.ts +108 -0
- package/src/apps/data/routes/activities.test.ts +1843 -2
- package/src/apps/data/routes/activities.ts +2211 -1388
- package/src/apps/data/routes/balances.ts +134 -98
- package/src/apps/data/routes/blocks.test.ts +533 -0
- package/src/apps/data/routes/blocks.ts +36 -17
- package/src/apps/data/routes/earn.test.ts +187 -25
- package/src/apps/data/routes/earn.ts +228 -32
- package/src/apps/data/routes/earn.zone-access.test.ts +46 -0
- package/src/apps/data/routes/exchanges.test.ts +31 -1
- package/src/apps/data/routes/exchanges.ts +19 -15
- package/src/apps/data/routes/fee-amm.ts +18 -11
- package/src/apps/data/routes/receipts.ts +48 -17
- package/src/apps/data/routes/rpc.test.ts +75 -0
- package/src/apps/data/routes/rpc.ts +23 -9
- package/src/apps/data/routes/tokenlist.ts +21 -18
- package/src/apps/data/routes/tokens.test.ts +607 -0
- package/src/apps/data/routes/tokens.ts +312 -231
- package/src/apps/data/routes/transactions.ts +69 -30
- package/src/apps/data/routes/transfers.test.ts +424 -3
- package/src/apps/data/routes/transfers.ts +57 -36
- package/src/apps/data/routes/valuation.ts +94 -78
- package/src/apps/data/routes/webhooks.ts +6 -2
- package/src/apps/data/routes/zones.test.ts +21 -15
- package/src/apps/data/routes/zones.ts +1 -1
- package/src/apps/funding/routes/chains.test.ts +211 -7
- package/src/apps/funding/routes/chains.ts +19 -12
- package/src/apps/funding/routes/deposit-addresses.test.ts +416 -0
- package/src/apps/funding/routes/deposit-addresses.ts +101 -84
- package/src/apps/funding/routes/providers.ts +9 -5
- package/src/apps/funding/routes/quotes.test.ts +42 -0
- package/src/apps/funding/routes/quotes.ts +8 -5
- package/src/apps/funding/routes/transfers.test.ts +430 -40
- package/src/apps/funding/routes/transfers.ts +76 -59
- package/src/apps/management/Billing.test.ts +26 -0
- package/src/apps/management/Billing.ts +24 -7
- package/src/apps/management/routes/api-keys.test.ts +398 -0
- package/src/apps/management/routes/api-keys.ts +481 -145
- package/src/apps/management/routes/billing.test.ts +209 -0
- package/src/apps/management/routes/billing.ts +254 -177
- package/src/apps/management/routes/faucet.test.ts +39 -0
- package/src/apps/management/routes/faucet.ts +75 -41
- package/src/apps/management/routes/invitations.test.ts +216 -0
- package/src/apps/management/routes/invitations.ts +186 -109
- package/src/apps/management/routes/invite-links.test.ts +263 -1
- package/src/apps/management/routes/invite-links.ts +295 -214
- package/src/apps/management/routes/me.test.ts +49 -0
- package/src/apps/management/routes/me.ts +42 -32
- package/src/apps/management/routes/members.test.ts +124 -1
- package/src/apps/management/routes/members.ts +81 -51
- package/src/apps/management/routes/orgs.test.ts +176 -0
- package/src/apps/management/routes/orgs.ts +101 -59
- package/src/apps/management/routes/projects.test.ts +183 -0
- package/src/apps/management/routes/projects.ts +124 -60
- package/src/apps/management/routes/scopes.test.ts +44 -0
- package/src/apps/management/routes/scopes.ts +37 -28
- package/src/apps/management/routes/usage.test.ts +92 -0
- package/src/apps/management/routes/usage.ts +186 -151
- package/src/apps/management/routes/verified-token-requests.test.ts +114 -0
- package/src/apps/management/routes/verified-token-requests.ts +166 -133
- package/src/apps/management/routes/webhooks.test.ts +234 -0
- package/src/apps/management/routes/webhooks.ts +191 -78
- package/src/apps/mpp/internal/Adapter.ts +13 -1
- package/src/db/Db.test.ts +41 -0
- package/src/db/Db.ts +75 -1
- package/src/db/Schema.ts +33 -5
- package/src/db/tables/earnVaults.test.ts +22 -0
- package/src/db/tables/earnVaults.ts +11 -1
- package/src/db/tables/fundingCatalog.test.ts +16 -2
- package/src/db/tables/fundingCatalog.ts +9 -3
- package/src/db/tables/webhookDeliveries.ts +13 -0
- package/src/db/tables/webhookQueueCompletions.ts +55 -0
- package/src/db/tables/webhookQueueEvents.ts +95 -61
- package/src/db/tables/webhookSubscriptions.ts +45 -6
- package/src/handlers/internal/utils.test.ts +53 -0
- package/src/handlers/internal/utils.ts +15 -0
- package/src/internal/Auth.ts +35 -9
- package/src/internal/Cache.ts +14 -7
- package/src/internal/EarnVaults.capabilities.test.ts +33 -0
- package/src/internal/EarnVaults.test.ts +79 -0
- package/src/internal/EarnVaults.ts +277 -0
- package/src/internal/Fetch.test.ts +46 -0
- package/src/internal/Fetch.ts +56 -0
- package/src/internal/Log.test.ts +21 -0
- package/src/internal/Log.ts +20 -5
- package/src/internal/OpenApi.ts +177 -51
- package/src/internal/Response.test.ts +95 -0
- package/src/internal/Response.ts +41 -3
- package/src/internal/Schema.test.ts +18 -0
- package/src/internal/Schema.ts +19 -9
- package/src/internal/Store.test.ts +364 -0
- package/src/internal/Store.ts +153 -27
- package/src/internal/Tidx.test.ts +21 -1
- package/src/internal/Tidx.ts +23 -6
- package/src/internal/Timeout.test.ts +35 -0
- package/src/internal/Timeout.ts +73 -0
- package/src/internal/Timing.ts +16 -0
- package/src/internal/WebhookDestination.ts +3 -0
- package/src/internal/Webhooks.test.ts +122 -8
- package/src/internal/Webhooks.ts +59 -29
- package/src/internal/funding/Action.test.ts +41 -1
- package/src/internal/funding/Action.ts +69 -41
- package/src/internal/funding/Catalog.test.ts +34 -0
- package/src/internal/funding/Catalog.ts +28 -11
- package/src/internal/funding/Deposit.ts +71 -64
- package/src/internal/funding/DepositAddress.ts +50 -43
- package/src/internal/funding/Provider.test.ts +73 -0
- package/src/internal/funding/Provider.ts +246 -170
- package/src/internal/funding/Transfer.ts +133 -110
- package/src/internal/funding/providers/index.test.ts +22 -0
- package/src/internal/funding/providers/relay.test.ts +2 -2
- package/src/internal/funding/providers/stargate.test.ts +163 -0
- package/src/internal/funding/providers/stargate.ts +409 -0
- package/src/internal/index.test.ts +1 -0
- package/src/internal/index.ts +1 -0
- package/src/providers/index.test.ts +1 -0
- package/src/providers/index.ts +9 -0
|
@@ -55,10 +55,16 @@ export namespace schema {
|
|
|
55
55
|
z.describe('Funding capabilities enabled on one provider route.'),
|
|
56
56
|
)
|
|
57
57
|
|
|
58
|
-
|
|
59
|
-
|
|
58
|
+
/** Provider-specific configuration for one funding route. */
|
|
59
|
+
export const Configuration = z
|
|
60
|
+
.record(z.string(), z.unknown())
|
|
61
|
+
.check(z.describe('Provider-specific configuration for one funding route.'))
|
|
62
|
+
|
|
63
|
+
// Absent or null `capabilities` keeps a route quote-only. Absent or null
|
|
64
|
+
// `configuration` lets providers decide whether a route is configured.
|
|
60
65
|
const Route = z.extend(db_Schema.FundingRoute, {
|
|
61
66
|
capabilities: z.optional(z.nullable(Capabilities)),
|
|
67
|
+
configuration: z.optional(z.nullable(Configuration)),
|
|
62
68
|
})
|
|
63
69
|
|
|
64
70
|
/** Complete funding catalog content accepted by the publish boundary. */
|
|
@@ -77,10 +83,15 @@ export namespace schema {
|
|
|
77
83
|
/** Funding capabilities enabled on one provider route. */
|
|
78
84
|
export type Capabilities = z.output<typeof schema.Capabilities>
|
|
79
85
|
|
|
86
|
+
/** Provider-specific configuration for one funding route. */
|
|
87
|
+
export type Configuration = z.output<typeof schema.Configuration>
|
|
88
|
+
|
|
80
89
|
/** One hydrated provider route in a funding catalog snapshot. */
|
|
81
90
|
export type ProviderRoute = {
|
|
82
91
|
/** Funding capabilities; absent means the route is quote-only. */
|
|
83
92
|
capabilities?: Capabilities | undefined
|
|
93
|
+
/** Provider-specific route configuration. */
|
|
94
|
+
configuration?: Configuration | undefined
|
|
84
95
|
/** Funding provider that supports the route. */
|
|
85
96
|
providerId: string
|
|
86
97
|
/** Hydrated source-to-destination funding route. */
|
|
@@ -93,8 +104,8 @@ export type Snapshot = {
|
|
|
93
104
|
chainsByKey: ReadonlyMap<string, Chain.Chain>
|
|
94
105
|
/** Hydrated provider routes in stable catalog order. */
|
|
95
106
|
routes: readonly ProviderRoute[]
|
|
96
|
-
/** Hydrated routes grouped by provider id. */
|
|
97
|
-
routesByProvider: ReadonlyMap<string, readonly
|
|
107
|
+
/** Hydrated provider routes grouped by provider id. */
|
|
108
|
+
routesByProvider: ReadonlyMap<string, readonly ProviderRoute[]>
|
|
98
109
|
/** Canonical funding tokens indexed by stable id. */
|
|
99
110
|
tokensById: ReadonlyMap<string, Token.Token>
|
|
100
111
|
/** ISO timestamp of the catalog's last publish. */
|
|
@@ -176,7 +187,7 @@ export function compile(rows: core_Catalog.Rows): Snapshot {
|
|
|
176
187
|
}
|
|
177
188
|
|
|
178
189
|
const routes: ProviderRoute[] = []
|
|
179
|
-
const routesByProvider = new Map<string,
|
|
190
|
+
const routesByProvider = new Map<string, ProviderRoute[]>()
|
|
180
191
|
for (const row of data.routes) {
|
|
181
192
|
const route = {
|
|
182
193
|
destination: resolvePlacement(
|
|
@@ -187,14 +198,16 @@ export function compile(rows: core_Catalog.Rows): Snapshot {
|
|
|
187
198
|
),
|
|
188
199
|
source: resolvePlacement(chainsById, tokensById, row.sourceChainId, row.sourceTokenId),
|
|
189
200
|
}
|
|
190
|
-
|
|
201
|
+
const entry = {
|
|
191
202
|
...(row.capabilities ? { capabilities: row.capabilities } : {}),
|
|
203
|
+
...(row.configuration ? { configuration: row.configuration } : {}),
|
|
192
204
|
providerId: row.providerId,
|
|
193
205
|
route,
|
|
194
|
-
}
|
|
206
|
+
}
|
|
207
|
+
routes.push(entry)
|
|
195
208
|
const providerRoutes = routesByProvider.get(row.providerId)
|
|
196
|
-
if (providerRoutes) providerRoutes.push(
|
|
197
|
-
else routesByProvider.set(row.providerId, [
|
|
209
|
+
if (providerRoutes) providerRoutes.push(entry)
|
|
210
|
+
else routesByProvider.set(row.providerId, [entry])
|
|
198
211
|
}
|
|
199
212
|
|
|
200
213
|
return {
|
|
@@ -219,10 +232,14 @@ export async function publish(db: Db.Db, input: publish.Input): Promise<Snapshot
|
|
|
219
232
|
catalog: { id: 'default', updatedAt: emptyUpdatedAt, version: 'validation' },
|
|
220
233
|
...data,
|
|
221
234
|
})
|
|
222
|
-
//
|
|
235
|
+
// Optional route data persists as null so every stored row has one shape.
|
|
223
236
|
await core_Catalog.publish(db, {
|
|
224
237
|
...data,
|
|
225
|
-
routes: data.routes.map((route) => ({
|
|
238
|
+
routes: data.routes.map((route) => ({
|
|
239
|
+
...route,
|
|
240
|
+
capabilities: route.capabilities ?? null,
|
|
241
|
+
configuration: route.configuration ?? null,
|
|
242
|
+
})),
|
|
226
243
|
})
|
|
227
244
|
return prime(db, await read(db))
|
|
228
245
|
}
|
|
@@ -4,6 +4,7 @@ import type * as Db from '../../db/Db.js'
|
|
|
4
4
|
import * as FundingDepositAddresses from '../../db/tables/fundingDepositAddresses.js'
|
|
5
5
|
import * as FundingDeposits from '../../db/tables/fundingDeposits.js'
|
|
6
6
|
import * as Id from '../Id.js'
|
|
7
|
+
import * as OpenApi from '../OpenApi.js'
|
|
7
8
|
import * as Schema from '../Schema.js'
|
|
8
9
|
import * as Provider from './Provider.js'
|
|
9
10
|
|
|
@@ -115,22 +116,25 @@ export namespace schema {
|
|
|
115
116
|
)
|
|
116
117
|
|
|
117
118
|
/** Customer-safe explanation of a deposit status. */
|
|
118
|
-
export const StatusReason =
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
119
|
+
export const StatusReason = OpenApi.component(
|
|
120
|
+
z
|
|
121
|
+
.object({
|
|
122
|
+
code: z
|
|
123
|
+
.enum(statusReasonCodes)
|
|
124
|
+
.check(
|
|
125
|
+
z.describe('Stable machine-readable reason code.'),
|
|
126
|
+
z.meta({ examples: ['delivery_liquidity_unavailable'] }),
|
|
127
|
+
),
|
|
128
|
+
message: z
|
|
129
|
+
.string()
|
|
130
|
+
.check(
|
|
131
|
+
z.describe('Human-readable explanation of the current status.'),
|
|
132
|
+
z.meta({ examples: ['The required destination amount is not currently available.'] }),
|
|
133
|
+
),
|
|
134
|
+
})
|
|
135
|
+
.check(z.describe('Why a deposit needs attention or recovery.')),
|
|
136
|
+
'FundingDepositStatusReason',
|
|
137
|
+
)
|
|
134
138
|
|
|
135
139
|
/** Public fields persisted as the deposit snapshot. */
|
|
136
140
|
export const Snapshot = z
|
|
@@ -189,54 +193,57 @@ export namespace schema {
|
|
|
189
193
|
)
|
|
190
194
|
|
|
191
195
|
/** One detected funding deposit. */
|
|
192
|
-
export const FundingDeposit =
|
|
193
|
-
|
|
194
|
-
|
|
195
|
-
.
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
225
|
-
|
|
226
|
-
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
|
|
230
|
-
|
|
231
|
-
|
|
232
|
-
|
|
233
|
-
.
|
|
234
|
-
|
|
235
|
-
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
196
|
+
export const FundingDeposit = OpenApi.component(
|
|
197
|
+
z
|
|
198
|
+
.object({
|
|
199
|
+
createdAt: z.iso
|
|
200
|
+
.datetime()
|
|
201
|
+
.check(
|
|
202
|
+
z.describe('When the deposit was first detected (ISO 8601).'),
|
|
203
|
+
z.meta({ examples: ['2026-08-04T00:01:00.000Z'] }),
|
|
204
|
+
),
|
|
205
|
+
depositAddressId: Snapshot.shape.depositAddressId,
|
|
206
|
+
detectionTrigger: z.optional(DetectionTrigger),
|
|
207
|
+
destinationAmount: Snapshot.shape.destinationAmount,
|
|
208
|
+
destinationAmountRequired: Snapshot.shape.destinationAmountRequired,
|
|
209
|
+
destinationChain: Snapshot.shape.destinationChain,
|
|
210
|
+
destinationToken: Snapshot.shape.destinationToken,
|
|
211
|
+
destinationTransactionHashes: Snapshot.shape.destinationTransactionHashes,
|
|
212
|
+
id: z
|
|
213
|
+
.string()
|
|
214
|
+
.check(
|
|
215
|
+
z.regex(/^fdp_[A-Za-z0-9_-]+$/),
|
|
216
|
+
z.describe('Funding deposit id (`fdp_…`).'),
|
|
217
|
+
z.meta({ examples: ['fdp_001785792060000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
|
|
218
|
+
),
|
|
219
|
+
provider: Snapshot.shape.provider,
|
|
220
|
+
recipient: Snapshot.shape.recipient,
|
|
221
|
+
refundAddress: Snapshot.shape.refundAddress,
|
|
222
|
+
refundAmount: Snapshot.shape.refundAmount,
|
|
223
|
+
refundTransactionHashes: Snapshot.shape.refundTransactionHashes,
|
|
224
|
+
sender: Snapshot.shape.sender,
|
|
225
|
+
sourceAmount: Snapshot.shape.sourceAmount,
|
|
226
|
+
sourceChain: Snapshot.shape.sourceChain,
|
|
227
|
+
sourceToken: Snapshot.shape.sourceToken,
|
|
228
|
+
sourceTransactionHashes: Snapshot.shape.sourceTransactionHashes,
|
|
229
|
+
sourceTransferIndex: z
|
|
230
|
+
.optional(z.number().check(z.int(), z.minimum(0)))
|
|
231
|
+
.check(
|
|
232
|
+
z.describe('Verified transfer position within the source transaction.'),
|
|
233
|
+
z.meta({ examples: [0] }),
|
|
234
|
+
),
|
|
235
|
+
status: Status,
|
|
236
|
+
statusReason: z.optional(StatusReason),
|
|
237
|
+
updatedAt: z.iso
|
|
238
|
+
.datetime()
|
|
239
|
+
.check(
|
|
240
|
+
z.describe('When the deposit last materially changed (ISO 8601).'),
|
|
241
|
+
z.meta({ examples: ['2026-08-04T00:02:00.000Z'] }),
|
|
242
|
+
),
|
|
243
|
+
})
|
|
244
|
+
.check(z.describe('One detected deposit and its delivery status.')),
|
|
245
|
+
'FundingDeposit',
|
|
246
|
+
)
|
|
240
247
|
}
|
|
241
248
|
|
|
242
249
|
/** Stored public snapshot of a funding deposit. */
|
|
@@ -3,6 +3,7 @@ import * as z from 'zod/mini'
|
|
|
3
3
|
import type * as Db from '../../db/Db.js'
|
|
4
4
|
import * as FundingDepositAddresses from '../../db/tables/fundingDepositAddresses.js'
|
|
5
5
|
import * as Id from '../Id.js'
|
|
6
|
+
import * as OpenApi from '../OpenApi.js'
|
|
6
7
|
import * as Provider from './Provider.js'
|
|
7
8
|
import * as Transfer from './Transfer.js'
|
|
8
9
|
|
|
@@ -83,51 +84,57 @@ export namespace schema {
|
|
|
83
84
|
.check(z.describe('Public route and ownership-independent fields of a deposit address.'))
|
|
84
85
|
|
|
85
86
|
/** One reusable funding deposit address. */
|
|
86
|
-
export const FundingDepositAddress =
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
.
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
.
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
87
|
+
export const FundingDepositAddress = OpenApi.component(
|
|
88
|
+
z
|
|
89
|
+
.object({
|
|
90
|
+
address: Snapshot.shape.address,
|
|
91
|
+
createdAt: z.iso
|
|
92
|
+
.datetime()
|
|
93
|
+
.check(
|
|
94
|
+
z.describe('When the deposit address was created (ISO 8601).'),
|
|
95
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
96
|
+
),
|
|
97
|
+
destinationChain: Snapshot.shape.destinationChain,
|
|
98
|
+
destinationToken: Snapshot.shape.destinationToken,
|
|
99
|
+
id: z
|
|
100
|
+
.string()
|
|
101
|
+
.check(
|
|
102
|
+
z.regex(/^fda_[A-Za-z0-9_-]+$/),
|
|
103
|
+
z.describe('Funding deposit address id (`fda_…`).'),
|
|
104
|
+
z.meta({ examples: ['fda_001785792000000_2ZPE2gvateYEQ0dQslgvkhjx'] }),
|
|
105
|
+
),
|
|
106
|
+
provider: Snapshot.shape.provider,
|
|
107
|
+
recipient: Snapshot.shape.recipient,
|
|
108
|
+
refundAddress: Snapshot.shape.refundAddress,
|
|
109
|
+
sourceChain: Snapshot.shape.sourceChain,
|
|
110
|
+
sourceToken: Snapshot.shape.sourceToken,
|
|
111
|
+
status: Status,
|
|
112
|
+
subsidize: Snapshot.shape.subsidize,
|
|
113
|
+
updatedAt: z.iso
|
|
114
|
+
.datetime()
|
|
115
|
+
.check(
|
|
116
|
+
z.describe('When the deposit address last materially changed (ISO 8601).'),
|
|
117
|
+
z.meta({ examples: ['2026-08-04T00:00:00.000Z'] }),
|
|
118
|
+
),
|
|
119
|
+
})
|
|
120
|
+
.check(z.describe('One reusable address for funding a Tempo account.')),
|
|
121
|
+
'FundingDepositAddress',
|
|
122
|
+
)
|
|
119
123
|
|
|
120
124
|
/** A reusable funding deposit address with terms sampled during creation. */
|
|
121
|
-
export const CreatedFundingDepositAddress =
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
125
|
+
export const CreatedFundingDepositAddress = OpenApi.component(
|
|
126
|
+
z
|
|
127
|
+
.object({
|
|
128
|
+
...FundingDepositAddress.shape,
|
|
129
|
+
destinationAmount: Provider.schema.FundingQuote.shape.destinationAmount,
|
|
130
|
+
destinationAmountMin: Provider.schema.FundingQuote.shape.destinationAmountMin,
|
|
131
|
+
fees: z.array(Transfer.schema.Fee).check(z.describe('Fees applied to the quoted deposit.')),
|
|
132
|
+
quote: Provider.schema.QuoteDetails,
|
|
133
|
+
sourceAmount: Provider.schema.FundingQuote.shape.sourceAmount,
|
|
134
|
+
})
|
|
135
|
+
.check(z.describe('A reusable funding deposit address with current quoted delivery terms.')),
|
|
136
|
+
'CreatedFundingDepositAddress',
|
|
137
|
+
)
|
|
131
138
|
}
|
|
132
139
|
|
|
133
140
|
/** Stored public snapshot of a funding deposit address. */
|
|
@@ -5,6 +5,7 @@ import * as Across from './providers/across.js'
|
|
|
5
5
|
import * as Relay from './providers/relay.js'
|
|
6
6
|
import * as Rhino from './providers/rhino.js'
|
|
7
7
|
import * as Squid from './providers/squid.js'
|
|
8
|
+
import * as Stargate from './providers/stargate.js'
|
|
8
9
|
import * as Symbiosis from './providers/symbiosis.js'
|
|
9
10
|
|
|
10
11
|
const providers = [
|
|
@@ -19,6 +20,7 @@ const providers = [
|
|
|
19
20
|
integratorId: 'squid-integrator-id',
|
|
20
21
|
userAddress: '0x1111111111111111111111111111111111111111',
|
|
21
22
|
}),
|
|
23
|
+
Stargate.stargate(),
|
|
22
24
|
Symbiosis.symbiosis({ userAddress: '0x1111111111111111111111111111111111111111' }),
|
|
23
25
|
] as const
|
|
24
26
|
|
|
@@ -831,9 +833,63 @@ describe('prepareTransfer', () => {
|
|
|
831
833
|
{ operation: 'prepareTransfer', outcome: 'unavailable', provider: 'relay' },
|
|
832
834
|
])
|
|
833
835
|
})
|
|
836
|
+
|
|
837
|
+
test('accepts preparations without correlation', async () => {
|
|
838
|
+
const { correlation: _correlation, ...result } = preparedResult()
|
|
839
|
+
const spender = `0x${'44'.repeat(20)}`
|
|
840
|
+
const selected = FundingProvider.prepareTransfer({
|
|
841
|
+
...prepareOptions,
|
|
842
|
+
providers: [
|
|
843
|
+
withPrepareTransfer('relay', async () => {
|
|
844
|
+
return {
|
|
845
|
+
...result,
|
|
846
|
+
action: {
|
|
847
|
+
calls: [
|
|
848
|
+
{
|
|
849
|
+
data: `0x095ea7b3${spender.slice(2).padStart(64, '0')}${(1_000_000).toString(16).padStart(64, '0')}`,
|
|
850
|
+
to: '0x833589fcd6edb6e08f4c7c32d4f71b54bda02913',
|
|
851
|
+
value: '0x0',
|
|
852
|
+
},
|
|
853
|
+
{ data: '0xe8017952', to: spender, value: '0x0' },
|
|
854
|
+
],
|
|
855
|
+
type: 'evm:calls',
|
|
856
|
+
},
|
|
857
|
+
}
|
|
858
|
+
}),
|
|
859
|
+
],
|
|
860
|
+
})
|
|
861
|
+
|
|
862
|
+
expect((await selected)?.result.correlation).toBeUndefined()
|
|
863
|
+
})
|
|
834
864
|
})
|
|
835
865
|
|
|
836
866
|
describe('getPrepareCandidates', () => {
|
|
867
|
+
test('restricts candidates to the requested provider', () => {
|
|
868
|
+
const relay = withPrepareTransfer('relay', async () => preparedResult())
|
|
869
|
+
const stargate = withPrepareTransfer('stargate', async () => preparedResult())
|
|
870
|
+
const route = TestFunding.data.routes.find(
|
|
871
|
+
(entry) => entry.providerId === 'relay' && entry.capabilities?.transfer,
|
|
872
|
+
)!
|
|
873
|
+
const catalog = FundingCatalog.compile({
|
|
874
|
+
catalog: {
|
|
875
|
+
id: 'default',
|
|
876
|
+
updatedAt: '2026-01-01T00:00:00.000Z',
|
|
877
|
+
version: 'test',
|
|
878
|
+
},
|
|
879
|
+
...TestFunding.data,
|
|
880
|
+
routes: [...TestFunding.data.routes, { ...route, providerId: 'stargate' }],
|
|
881
|
+
})
|
|
882
|
+
|
|
883
|
+
expect(
|
|
884
|
+
FundingProvider.getPrepareCandidates({
|
|
885
|
+
...prepareOptions,
|
|
886
|
+
catalog,
|
|
887
|
+
provider: 'stargate',
|
|
888
|
+
providers: [relay, stargate],
|
|
889
|
+
}).map(({ provider }) => provider.id),
|
|
890
|
+
).toEqual(['stargate'])
|
|
891
|
+
})
|
|
892
|
+
|
|
837
893
|
test('restricts candidates to the selected destination chain', () => {
|
|
838
894
|
const provider = withPrepareTransfer('relay', async () => preparedResult())
|
|
839
895
|
expect(
|
|
@@ -1110,6 +1166,19 @@ describe('getQuoteCandidates', () => {
|
|
|
1110
1166
|
expect(candidate?.sourceAmount).toEqual({ amount: '1250000', formatted: '1.25' })
|
|
1111
1167
|
})
|
|
1112
1168
|
|
|
1169
|
+
test('carries provider route configuration without duplicating token metadata', () => {
|
|
1170
|
+
const [candidate] = FundingProvider.getQuoteCandidates({
|
|
1171
|
+
...baseUsdcRequest,
|
|
1172
|
+
provider: 'stargate',
|
|
1173
|
+
providers,
|
|
1174
|
+
})
|
|
1175
|
+
|
|
1176
|
+
expect(candidate?.configuration).toEqual({
|
|
1177
|
+
poolAddress: '0x27a16dc786820B16E5c9028b75B99F6f604b5d26',
|
|
1178
|
+
})
|
|
1179
|
+
expect(candidate?.sourceToken.address).toBe('0x833589fcd6edb6e08f4c7c32d4f71b54bda02913')
|
|
1180
|
+
})
|
|
1181
|
+
|
|
1113
1182
|
test('resolves normalized catalog aliases', () => {
|
|
1114
1183
|
const catalog = FundingCatalog.compile({
|
|
1115
1184
|
catalog: {
|
|
@@ -1341,6 +1410,10 @@ describe('getProviders', () => {
|
|
|
1341
1410
|
"id": "squid",
|
|
1342
1411
|
"name": "Squid",
|
|
1343
1412
|
},
|
|
1413
|
+
{
|
|
1414
|
+
"id": "stargate",
|
|
1415
|
+
"name": "Stargate",
|
|
1416
|
+
},
|
|
1344
1417
|
{
|
|
1345
1418
|
"id": "symbiosis",
|
|
1346
1419
|
"name": "Symbiosis",
|