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
|
@@ -2,6 +2,7 @@ import { Address, Base58, Bytes, Hash, Value as core_Value } from 'ox'
|
|
|
2
2
|
import * as z from 'zod/mini'
|
|
3
3
|
|
|
4
4
|
import * as core_Provider from '../Provider.js'
|
|
5
|
+
import * as OpenApi from '../OpenApi.js'
|
|
5
6
|
import * as Schema from '../Schema.js'
|
|
6
7
|
import * as Value from '../Value.js'
|
|
7
8
|
import * as Action from './Action.js'
|
|
@@ -42,85 +43,97 @@ export namespace schema {
|
|
|
42
43
|
export const PositiveInteger = z.string().check(z.regex(/^(?=.*[1-9])\d+$/))
|
|
43
44
|
|
|
44
45
|
/** Normalized chain reference passed to funding providers. */
|
|
45
|
-
export const ChainRef =
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
46
|
+
export const ChainRef = OpenApi.component(
|
|
47
|
+
Schema.describe(
|
|
48
|
+
z.object({
|
|
49
|
+
addressFormat: z
|
|
50
|
+
.enum(['base58', 'base58check', 'hex'])
|
|
51
|
+
.check(
|
|
52
|
+
z.describe('Address encoding used by accounts and token identifiers on this chain.'),
|
|
53
|
+
z.meta({ examples: ['hex'] }),
|
|
54
|
+
),
|
|
55
|
+
id: z.string().check(z.describe('CAIP-2 chain id.'), z.meta({ examples: ['eip155:8453'] })),
|
|
56
|
+
kind: z
|
|
57
|
+
.enum(['evm', 'solana', 'tron'])
|
|
58
|
+
.check(
|
|
59
|
+
z.describe('Chain execution family used for provider routing.'),
|
|
60
|
+
z.meta({ examples: ['evm'] }),
|
|
61
|
+
),
|
|
62
|
+
name: z
|
|
63
|
+
.string()
|
|
64
|
+
.check(z.describe('Human-readable chain name.'), z.meta({ examples: ['Base'] })),
|
|
65
|
+
}),
|
|
66
|
+
'A normalized chain reference for funding quotes.',
|
|
67
|
+
),
|
|
68
|
+
'FundingChain',
|
|
65
69
|
)
|
|
66
70
|
|
|
67
71
|
/** Normalized token reference passed to funding providers. */
|
|
68
|
-
export const TokenRef =
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
z
|
|
101
|
-
|
|
102
|
-
examples: ['
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
z.describe('Whether Tempo recognizes this token in its funding quote inventory.'),
|
|
109
|
-
z.meta({ examples: [true] }),
|
|
72
|
+
export const TokenRef = OpenApi.component(
|
|
73
|
+
Schema.describe(
|
|
74
|
+
z.object({
|
|
75
|
+
address: z
|
|
76
|
+
.string()
|
|
77
|
+
.check(
|
|
78
|
+
z.describe('Contract address, mint, or issuer address on the token chain.'),
|
|
79
|
+
z.meta({ examples: ['0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'] }),
|
|
80
|
+
),
|
|
81
|
+
currency: z
|
|
82
|
+
.string()
|
|
83
|
+
.check(
|
|
84
|
+
z.describe('Monetary denomination represented by this token.'),
|
|
85
|
+
z.meta({ examples: ['USD'] }),
|
|
86
|
+
),
|
|
87
|
+
decimals: z
|
|
88
|
+
.number()
|
|
89
|
+
.check(
|
|
90
|
+
z.int(),
|
|
91
|
+
z.gte(0),
|
|
92
|
+
z.describe('Number of decimal places this token uses.'),
|
|
93
|
+
z.meta({ examples: [6] }),
|
|
94
|
+
),
|
|
95
|
+
name: z
|
|
96
|
+
.string()
|
|
97
|
+
.check(z.describe('Human-readable token name.'), z.meta({ examples: ['USD Coin'] })),
|
|
98
|
+
standard: z
|
|
99
|
+
.string()
|
|
100
|
+
.check(
|
|
101
|
+
z.describe('Token standard on the token chain.'),
|
|
102
|
+
z.meta({ examples: ['ERC-20'] }),
|
|
103
|
+
),
|
|
104
|
+
symbol: z
|
|
105
|
+
.string()
|
|
106
|
+
.check(z.describe('Short token ticker symbol.'), z.meta({ examples: ['USDC'] })),
|
|
107
|
+
tokenKey: z.string().check(
|
|
108
|
+
z.describe('Stable Tempo token key scoped to the token chain.'),
|
|
109
|
+
z.meta({
|
|
110
|
+
examples: ['eip155:8453/erc20:0x833589fcd6edb6e08f4c7c32d4f71b54bda02913'],
|
|
111
|
+
}),
|
|
110
112
|
),
|
|
111
|
-
|
|
112
|
-
|
|
113
|
+
verified: z
|
|
114
|
+
.boolean()
|
|
115
|
+
.check(
|
|
116
|
+
z.describe('Whether Tempo recognizes this token in its funding quote inventory.'),
|
|
117
|
+
z.meta({ examples: [true] }),
|
|
118
|
+
),
|
|
119
|
+
}),
|
|
120
|
+
'A normalized token reference for funding quotes.',
|
|
121
|
+
),
|
|
122
|
+
'FundingToken',
|
|
113
123
|
)
|
|
114
124
|
|
|
115
125
|
/** Provider identity embedded in funding resources. */
|
|
116
|
-
export const ProviderRef =
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
126
|
+
export const ProviderRef = OpenApi.component(
|
|
127
|
+
Schema.describe(
|
|
128
|
+
z.object({
|
|
129
|
+
id: z.string().check(z.describe('Stable provider id.'), z.meta({ examples: ['relay'] })),
|
|
130
|
+
name: z
|
|
131
|
+
.string()
|
|
132
|
+
.check(z.describe('Human-readable provider name.'), z.meta({ examples: ['Relay'] })),
|
|
133
|
+
}),
|
|
134
|
+
'Provider metadata embedded in a funding quote.',
|
|
135
|
+
),
|
|
136
|
+
'FundingProvider',
|
|
124
137
|
)
|
|
125
138
|
|
|
126
139
|
/** Source amount unit accepted by a funding quote request. */
|
|
@@ -203,10 +216,12 @@ export namespace schema {
|
|
|
203
216
|
/** Executable preparation returned by a funding provider. */
|
|
204
217
|
export const PrepareResult = z.object({
|
|
205
218
|
action: Action.schema.Action,
|
|
206
|
-
correlation: z.
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
219
|
+
correlation: z.optional(
|
|
220
|
+
z.object({
|
|
221
|
+
checkEndpoint: z.optional(z.string()),
|
|
222
|
+
requestId: z.string().check(z.minLength(1)),
|
|
223
|
+
}),
|
|
224
|
+
),
|
|
210
225
|
destinationAmount: PositiveInteger,
|
|
211
226
|
destinationAmountMin: PositiveInteger,
|
|
212
227
|
expiresAt: z.optional(z.iso.datetime()),
|
|
@@ -214,6 +229,7 @@ export namespace schema {
|
|
|
214
229
|
z.object({
|
|
215
230
|
amount: Schema.DecimalString,
|
|
216
231
|
side: z.enum(['destination', 'source']),
|
|
232
|
+
token: z.optional(TokenRef),
|
|
217
233
|
}),
|
|
218
234
|
),
|
|
219
235
|
quality: GetQuoteResult.shape.quality,
|
|
@@ -264,84 +280,93 @@ export namespace schema {
|
|
|
264
280
|
})
|
|
265
281
|
|
|
266
282
|
/** Quote quality signals exposed to funding API callers. */
|
|
267
|
-
export const FundingQuoteQuality =
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
|
|
281
|
-
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
294
|
-
|
|
283
|
+
export const FundingQuoteQuality = OpenApi.component(
|
|
284
|
+
Schema.describe(
|
|
285
|
+
z.object({
|
|
286
|
+
estimatedSeconds: z
|
|
287
|
+
.optional(z.number().check(z.int(), z.nonnegative()))
|
|
288
|
+
.check(
|
|
289
|
+
z.describe('Estimated settlement time in seconds, when known.'),
|
|
290
|
+
z.meta({ examples: [2] }),
|
|
291
|
+
),
|
|
292
|
+
liquiditySource: z
|
|
293
|
+
.string()
|
|
294
|
+
.check(
|
|
295
|
+
z.describe('Provider source for the live quote quality signal.'),
|
|
296
|
+
z.meta({ examples: ['providerQuote'] }),
|
|
297
|
+
),
|
|
298
|
+
sourceDetail: z
|
|
299
|
+
.optional(z.string())
|
|
300
|
+
.check(
|
|
301
|
+
z.describe('Provider-specific source or endpoint detail for the quality signal.'),
|
|
302
|
+
z.meta({ examples: ['providerEndpoint'] }),
|
|
303
|
+
),
|
|
304
|
+
tier: z
|
|
305
|
+
.enum(['liquid', 'thin'])
|
|
306
|
+
.check(
|
|
307
|
+
z.describe('Machine-readable quote quality tier for a successful quote.'),
|
|
308
|
+
z.meta({ examples: ['liquid'] }),
|
|
309
|
+
),
|
|
310
|
+
}),
|
|
311
|
+
'Machine-readable liquidity, fee, and source signals for a successful quote.',
|
|
312
|
+
),
|
|
313
|
+
'FundingQuoteQuality',
|
|
295
314
|
)
|
|
296
315
|
|
|
297
316
|
/** Provider quote freshness data exposed to funding API callers. */
|
|
298
|
-
export const QuoteDetails =
|
|
299
|
-
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
.
|
|
308
|
-
|
|
309
|
-
|
|
310
|
-
|
|
311
|
-
|
|
312
|
-
|
|
313
|
-
|
|
317
|
+
export const QuoteDetails = OpenApi.component(
|
|
318
|
+
Schema.describe(
|
|
319
|
+
z.object({
|
|
320
|
+
expiresAt: z
|
|
321
|
+
.optional(z.iso.datetime())
|
|
322
|
+
.check(
|
|
323
|
+
z.describe('Timestamp after which the provider quote is no longer valid.'),
|
|
324
|
+
z.meta({ examples: ['2026-01-01T00:01:00Z'] }),
|
|
325
|
+
),
|
|
326
|
+
sampledAt: z.iso
|
|
327
|
+
.datetime()
|
|
328
|
+
.check(
|
|
329
|
+
z.describe('Timestamp for the live quote request.'),
|
|
330
|
+
z.meta({ examples: ['2026-01-01T00:00:00Z'] }),
|
|
331
|
+
),
|
|
332
|
+
}),
|
|
333
|
+
'Freshness data for a provider funding quote.',
|
|
334
|
+
),
|
|
335
|
+
'FundingQuoteDetails',
|
|
314
336
|
)
|
|
315
337
|
|
|
316
338
|
/** Successful normalized funding quote returned to callers. */
|
|
317
|
-
export const FundingQuote =
|
|
318
|
-
|
|
319
|
-
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
324
|
-
|
|
339
|
+
export const FundingQuote = OpenApi.component(
|
|
340
|
+
Schema.describe(
|
|
341
|
+
z.object({
|
|
342
|
+
destinationAmount: Schema.TokenAmount.check(z.describe('Expected destination amount.')),
|
|
343
|
+
destinationAmountMin: z
|
|
344
|
+
.optional(Schema.TokenAmount)
|
|
345
|
+
.check(
|
|
346
|
+
z.describe(
|
|
347
|
+
'Provider-derived minimum destination amount. Symbiosis and Squid quotes use a fixed 1% slippage tolerance.',
|
|
348
|
+
),
|
|
325
349
|
),
|
|
350
|
+
destinationChain: ChainRef.check(
|
|
351
|
+
z.describe('Destination chain, always Tempo mainnet in V1.'),
|
|
326
352
|
),
|
|
327
|
-
|
|
328
|
-
z
|
|
329
|
-
|
|
330
|
-
|
|
331
|
-
|
|
332
|
-
|
|
333
|
-
|
|
334
|
-
|
|
335
|
-
|
|
336
|
-
|
|
337
|
-
|
|
338
|
-
|
|
339
|
-
|
|
340
|
-
|
|
341
|
-
|
|
342
|
-
|
|
343
|
-
|
|
344
|
-
'One successful provider-specific funding quote.',
|
|
353
|
+
destinationToken: TokenRef.check(z.describe('Tempo token expected from this quote.')),
|
|
354
|
+
id: z
|
|
355
|
+
.string()
|
|
356
|
+
.check(
|
|
357
|
+
z.describe('Stable deterministic funding quote id.'),
|
|
358
|
+
z.meta({ examples: ['base-usdc-tempo-usdce-relay'] }),
|
|
359
|
+
),
|
|
360
|
+
provider: ProviderRef,
|
|
361
|
+
quality: FundingQuoteQuality,
|
|
362
|
+
quote: QuoteDetails,
|
|
363
|
+
sourceAmount: Schema.TokenAmount,
|
|
364
|
+
sourceChain: ChainRef.check(z.describe('Chain where the caller currently holds funds.')),
|
|
365
|
+
sourceToken: TokenRef.check(z.describe('Token the caller currently holds.')),
|
|
366
|
+
}),
|
|
367
|
+
'One successful provider-specific funding quote.',
|
|
368
|
+
),
|
|
369
|
+
'FundingQuote',
|
|
345
370
|
)
|
|
346
371
|
}
|
|
347
372
|
|
|
@@ -445,6 +470,21 @@ export declare namespace prepareTransfer {
|
|
|
445
470
|
type ReturnType = z.output<typeof schema.PrepareResult>
|
|
446
471
|
}
|
|
447
472
|
|
|
473
|
+
/** Contract for provider-specific executable action validation. */
|
|
474
|
+
export declare namespace validateTransferAction {
|
|
475
|
+
/** Prepared action and its curated route terms. */
|
|
476
|
+
type Parameters = prepareTransfer.Parameters & {
|
|
477
|
+
/** Executable action returned by the provider. */
|
|
478
|
+
action: Action.Action
|
|
479
|
+
}
|
|
480
|
+
|
|
481
|
+
/** Provider-specific constraints established by validation. */
|
|
482
|
+
type ReturnType = {
|
|
483
|
+
/** Exact native values independently validated against provider calldata. */
|
|
484
|
+
nativeValues?: readonly Action.NativeValue[] | undefined
|
|
485
|
+
}
|
|
486
|
+
}
|
|
487
|
+
|
|
448
488
|
/** Contract of the provider `createDepositAddress` method. */
|
|
449
489
|
export declare namespace createDepositAddress {
|
|
450
490
|
/** Input passed to a provider provisioning one reusable deposit address. */
|
|
@@ -661,6 +701,10 @@ export type Provider<id extends string = string> = core_Provider.Provider<id, 'f
|
|
|
661
701
|
input: prepareTransfer.Parameters,
|
|
662
702
|
signal: AbortSignal,
|
|
663
703
|
): Promise<prepareTransfer.ReturnType>
|
|
704
|
+
/** Validates provider-specific action semantics before generic persistence checks. */
|
|
705
|
+
validateTransferAction?(
|
|
706
|
+
input: validateTransferAction.Parameters,
|
|
707
|
+
): validateTransferAction.ReturnType
|
|
664
708
|
/** Receives authenticated provider status events, when configured. */
|
|
665
709
|
webhook?: Webhook | undefined
|
|
666
710
|
}
|
|
@@ -930,6 +974,7 @@ export function getQuoteCandidates(options: getQuoteCandidates.Options) {
|
|
|
930
974
|
.filter((entry) => provider === undefined || entry.provider.id === provider.id)
|
|
931
975
|
.map((entry) =>
|
|
932
976
|
createQuoteCandidate({
|
|
977
|
+
configuration: entry.configuration,
|
|
933
978
|
destinationToken: entry.route.destination,
|
|
934
979
|
provider: entry.provider,
|
|
935
980
|
route: entry.route,
|
|
@@ -1102,20 +1147,17 @@ export async function prepareTransfer(
|
|
|
1102
1147
|
candidates.map(async ({ candidate, provider }) => {
|
|
1103
1148
|
const start = performance.now()
|
|
1104
1149
|
try {
|
|
1150
|
+
const parameters = {
|
|
1151
|
+
candidate,
|
|
1152
|
+
method: options.method,
|
|
1153
|
+
mode: options.mode,
|
|
1154
|
+
recipient: options.recipient,
|
|
1155
|
+
sender: options.sender,
|
|
1156
|
+
slippageBps: options.slippageBps,
|
|
1157
|
+
}
|
|
1105
1158
|
const parsed = schema.PrepareResult.safeParse(
|
|
1106
1159
|
await withTimeout(
|
|
1107
|
-
(signal) =>
|
|
1108
|
-
provider.prepareTransfer(
|
|
1109
|
-
{
|
|
1110
|
-
candidate,
|
|
1111
|
-
method: options.method,
|
|
1112
|
-
mode: options.mode,
|
|
1113
|
-
recipient: options.recipient,
|
|
1114
|
-
sender: options.sender,
|
|
1115
|
-
slippageBps: options.slippageBps,
|
|
1116
|
-
},
|
|
1117
|
-
signal,
|
|
1118
|
-
),
|
|
1160
|
+
(signal) => provider.prepareTransfer(parameters, signal),
|
|
1119
1161
|
options.providerTimeoutMs ?? defaultPrepareTimeoutMs,
|
|
1120
1162
|
),
|
|
1121
1163
|
)
|
|
@@ -1138,8 +1180,13 @@ export async function prepareTransfer(
|
|
|
1138
1180
|
}
|
|
1139
1181
|
if (result.action.type === 'evm:calls')
|
|
1140
1182
|
try {
|
|
1183
|
+
const constraints = provider.validateTransferAction?.({
|
|
1184
|
+
...parameters,
|
|
1185
|
+
action: result.action,
|
|
1186
|
+
})
|
|
1141
1187
|
Action.validateEvmCalls({
|
|
1142
1188
|
action: result.action,
|
|
1189
|
+
nativeValues: constraints?.nativeValues,
|
|
1143
1190
|
sourceAmount: candidate.sourceAmount.amount,
|
|
1144
1191
|
sourceTokenAddress: candidate.sourceToken.address,
|
|
1145
1192
|
})
|
|
@@ -1253,7 +1300,14 @@ export function getDepositAddressCandidates(options: getDepositAddressCandidates
|
|
|
1253
1300
|
const provider = options.providers.find((candidate) => candidate.id === entry.providerId)
|
|
1254
1301
|
if (!provider || !canCreateDepositAddress(provider)) return []
|
|
1255
1302
|
return [
|
|
1256
|
-
{
|
|
1303
|
+
{
|
|
1304
|
+
candidate: createDepositAddressCandidate({
|
|
1305
|
+
configuration: entry.configuration,
|
|
1306
|
+
provider,
|
|
1307
|
+
route: entry.route,
|
|
1308
|
+
}),
|
|
1309
|
+
provider,
|
|
1310
|
+
},
|
|
1257
1311
|
]
|
|
1258
1312
|
})
|
|
1259
1313
|
}
|
|
@@ -1286,6 +1340,9 @@ export function getPrepareCandidates(options: getPrepareCandidates.Options) {
|
|
|
1286
1340
|
if (!amount.success) throw new InvalidAmountError()
|
|
1287
1341
|
const sourceChain = resolveSourceChain(options.sourceChain, options.catalog)
|
|
1288
1342
|
const destinationChainId = `eip155:${options.destinationChainId}`
|
|
1343
|
+
const selectedProvider = options.provider
|
|
1344
|
+
? resolveProvider(options.provider, options.providers)
|
|
1345
|
+
: undefined
|
|
1289
1346
|
|
|
1290
1347
|
return options.catalog.routes.flatMap((entry) => {
|
|
1291
1348
|
if (entry.route.source.chain.id !== sourceChain.id) return []
|
|
@@ -1293,11 +1350,13 @@ export function getPrepareCandidates(options: getPrepareCandidates.Options) {
|
|
|
1293
1350
|
if (!matchesToken(entry.route.source, options.sourceToken)) return []
|
|
1294
1351
|
if (!matchesToken(entry.route.destination, options.destinationToken)) return []
|
|
1295
1352
|
if (!entry.capabilities?.transfer?.modes.includes(options.mode)) return []
|
|
1296
|
-
const provider =
|
|
1297
|
-
|
|
1353
|
+
const provider =
|
|
1354
|
+
selectedProvider ?? options.providers.find((candidate) => candidate.id === entry.providerId)
|
|
1355
|
+
if (!provider || provider.id !== entry.providerId || !canPrepareTransfer(provider)) return []
|
|
1298
1356
|
return [
|
|
1299
1357
|
{
|
|
1300
1358
|
candidate: createQuoteCandidate({
|
|
1359
|
+
configuration: entry.configuration,
|
|
1301
1360
|
destinationToken: entry.route.destination,
|
|
1302
1361
|
provider,
|
|
1303
1362
|
route: entry.route,
|
|
@@ -1327,6 +1386,8 @@ export declare namespace getPrepareCandidates {
|
|
|
1327
1386
|
method: Transfer.Method
|
|
1328
1387
|
/** Amount mode the caller selected. */
|
|
1329
1388
|
mode: Transfer.Mode
|
|
1389
|
+
/** Funding provider ID selected by the caller. */
|
|
1390
|
+
provider?: string | undefined
|
|
1330
1391
|
/** Funding providers considered by the request. */
|
|
1331
1392
|
providers: readonly Provider[]
|
|
1332
1393
|
/** Source amount in base units. */
|
|
@@ -1550,8 +1611,9 @@ function chainRef(chain: Chain): ChainRef {
|
|
|
1550
1611
|
})
|
|
1551
1612
|
}
|
|
1552
1613
|
|
|
1553
|
-
function createDepositAddressCandidate(options:
|
|
1614
|
+
function createDepositAddressCandidate(options: createDepositAddressCandidate.Options) {
|
|
1554
1615
|
return {
|
|
1616
|
+
...(options.configuration ? { configuration: options.configuration } : {}),
|
|
1555
1617
|
destinationChain: chainRef(options.route.destination.chain),
|
|
1556
1618
|
destinationToken: tokenRef(options.route.destination),
|
|
1557
1619
|
provider: schema.ProviderRef.parse(options.provider),
|
|
@@ -1561,14 +1623,17 @@ function createDepositAddressCandidate(options: { provider: Provider; route: cor
|
|
|
1561
1623
|
} as const
|
|
1562
1624
|
}
|
|
1563
1625
|
|
|
1564
|
-
|
|
1565
|
-
|
|
1566
|
-
|
|
1567
|
-
|
|
1568
|
-
|
|
1569
|
-
|
|
1570
|
-
}
|
|
1626
|
+
declare namespace createDepositAddressCandidate {
|
|
1627
|
+
type Options = {
|
|
1628
|
+
configuration?: core_Catalog.Configuration | undefined
|
|
1629
|
+
provider: Provider
|
|
1630
|
+
route: core_Route.Route
|
|
1631
|
+
}
|
|
1632
|
+
}
|
|
1633
|
+
|
|
1634
|
+
function createQuoteCandidate(options: createQuoteCandidate.Options) {
|
|
1571
1635
|
return {
|
|
1636
|
+
...(options.configuration ? { configuration: options.configuration } : {}),
|
|
1572
1637
|
destinationChain: chainRef(options.destinationToken.chain),
|
|
1573
1638
|
destinationToken: tokenRef(options.destinationToken),
|
|
1574
1639
|
id: [
|
|
@@ -1586,6 +1651,17 @@ function createQuoteCandidate(options: {
|
|
|
1586
1651
|
} as const
|
|
1587
1652
|
}
|
|
1588
1653
|
|
|
1654
|
+
declare namespace createQuoteCandidate {
|
|
1655
|
+
type Options = {
|
|
1656
|
+
configuration?: core_Catalog.Configuration | undefined
|
|
1657
|
+
destinationToken: Token
|
|
1658
|
+
provider: Provider
|
|
1659
|
+
route: core_Route.Route
|
|
1660
|
+
sourceAmount: ReturnType<typeof resolveSourceAmount>
|
|
1661
|
+
sourceToken: Token
|
|
1662
|
+
}
|
|
1663
|
+
}
|
|
1664
|
+
|
|
1589
1665
|
function normalizeInput(value: string) {
|
|
1590
1666
|
return value.trim().toLowerCase()
|
|
1591
1667
|
}
|
|
@@ -1785,7 +1861,7 @@ function resolveSourceChain(input: string, catalog: core_Catalog.Snapshot) {
|
|
|
1785
1861
|
|
|
1786
1862
|
function getRoutes(catalog: core_Catalog.Snapshot, providers: readonly Provider[]) {
|
|
1787
1863
|
return providers.flatMap((provider) =>
|
|
1788
|
-
(catalog.routesByProvider.get(provider.id) ?? []).map((
|
|
1864
|
+
(catalog.routesByProvider.get(provider.id) ?? []).map((entry) => ({ ...entry, provider })),
|
|
1789
1865
|
)
|
|
1790
1866
|
}
|
|
1791
1867
|
|