Repository Public
1import '../rpc-override.ts'; // must run before any adapter reads the registry2import { NETWORKS, type NetworkDef } from '@spw/core';3import { aptosAdapter } from './aptos.ts';4import { bchAdapter } from './bch.ts';5import { btcAdapter } from './btc.ts';6import { cardanoAdapter } from './cardano.ts';7import { cosmosAdapter } from './cosmos.ts';8import { evmAdapter } from './evm.ts';9import { nearAdapter } from './near.ts';10import { polkadotAdapter } from './polkadot.ts';11import { solAdapter } from './sol.ts';12import { stellarAdapter } from './stellar.ts';13import { suiAdapter } from './sui.ts';14import { tonAdapter } from './ton.ts';15import { tronAdapter } from './tron.ts';16import { xrplAdapter } from './xrpl.ts';17import type { Adapter } from './rpc.ts';1819/** Adapter factories for plugin families (registered by each family's API module). */20export const ADAPTER_FACTORIES: Record<string, (n: NetworkDef) => Adapter> = { evm: evmAdapter, btc: btcAdapter, sol: solAdapter, aptos: aptosAdapter, bch: bchAdapter, cardano: cardanoAdapter, cosmos: cosmosAdapter, near: nearAdapter, polkadot: polkadotAdapter, stellar: stellarAdapter, sui: suiAdapter, ton: tonAdapter, tron: tronAdapter, xrpl: xrplAdapter };21const make = (n: NetworkDef): Adapter => { const f = ADAPTER_FACTORIES[n.family]; if (!f) throw new Error(`no API adapter for family ${n.family}`); return f(n); };22export const adapters: Record<string, Adapter> = Object.fromEntries((Object.values(NETWORKS) as NetworkDef[]).map((n) => [n.id, make(n)]));23export const adapterFor = (network: string): Adapter => { const a = adapters[network]; if (!a) throw new Error(`unknown network ${network}`); return a; };24export * from './rpc.ts';25