UNPKG

@openocean.finance/widget

Version:

Openocean Widget for cross-chain bridging and swapping. It will drive your multi-chain strategy and attract new users from everywhere.

157 lines (138 loc) 5.28 kB
import { LifiAdapter, MayanAdapter, RelayAdapter, NearIntentsAdapter, SwapProvider, PegasusAdapter, // SymbiosisAdapter, // XYFinanceAdapter, } from './adapters/index.js' // Factory for creating swap provider instances export class CrossChainSwapFactory { // Singleton instances (lazy loaded) // private static acrossInstance: AcrossAdapter private static relayInstance: RelayAdapter // private static xyFinanceInstance: XYFinanceAdapter private static nearIntentsInstance: NearIntentsAdapter private static mayanInstance: MayanAdapter // private static symbiosisInstance: SymbiosisAdapter // private static debridgeInstance: DeBridgeAdapter private static lifiInstance: LifiAdapter private static pegasusInstance: PegasusAdapter // private static optimexInstance: OptimexAdapter // private static orbiterInstance: OrbiterAdapter // // Get or create Across adapter // static getAcrossAdapter(): AcrossAdapter { // if (!CrossChainSwapFactory.acrossInstance) { // CrossChainSwapFactory.acrossInstance = new AcrossAdapter() // } // return CrossChainSwapFactory.acrossInstance // } // // Get or create Relay adapter static getRelayAdapter(): RelayAdapter { if (!CrossChainSwapFactory.relayInstance) { CrossChainSwapFactory.relayInstance = new RelayAdapter() } return CrossChainSwapFactory.relayInstance } // static getXyFinanceAdapter(): XYFinanceAdapter { // if (!CrossChainSwapFactory.xyFinanceInstance) { // CrossChainSwapFactory.xyFinanceInstance = new XYFinanceAdapter() // } // return CrossChainSwapFactory.xyFinanceInstance // } static getNearIntentsAdapter(): NearIntentsAdapter { if (!CrossChainSwapFactory.nearIntentsInstance) { CrossChainSwapFactory.nearIntentsInstance = new NearIntentsAdapter() } return CrossChainSwapFactory.nearIntentsInstance } static getMayanAdapter(): MayanAdapter { if (!CrossChainSwapFactory.mayanInstance) { CrossChainSwapFactory.mayanInstance = new MayanAdapter() } return CrossChainSwapFactory.mayanInstance } // static getSymbiosisAdapter(): SymbiosisAdapter { // if (!CrossChainSwapFactory.symbiosisInstance) { // CrossChainSwapFactory.symbiosisInstance = new SymbiosisAdapter() // } // return CrossChainSwapFactory.symbiosisInstance // } // static getDebridgeInstance(): DeBridgeAdapter { // if (!CrossChainSwapFactory.debridgeInstance) { // CrossChainSwapFactory.debridgeInstance = new DeBridgeAdapter() // } // return CrossChainSwapFactory.debridgeInstance // } static getLifiInstance(): LifiAdapter { if (!CrossChainSwapFactory.lifiInstance) { CrossChainSwapFactory.lifiInstance = new LifiAdapter() } return CrossChainSwapFactory.lifiInstance } static getPegasusAdapter(): PegasusAdapter { if (!CrossChainSwapFactory.pegasusInstance) { CrossChainSwapFactory.pegasusInstance = new PegasusAdapter() } return CrossChainSwapFactory.pegasusInstance } // static getOptimexAdapter(): OptimexAdapter { // if (!CrossChainSwapFactory.optimexInstance) { // CrossChainSwapFactory.optimexInstance = new OptimexAdapter() // } // return CrossChainSwapFactory.optimexInstance // } // static getOrbiterAdapter(): OrbiterAdapter { // if (!CrossChainSwapFactory.orbiterInstance) { // CrossChainSwapFactory.orbiterInstance = new OrbiterAdapter() // } // return CrossChainSwapFactory.orbiterInstance // } // Get all registered adapters static getAllAdapters(): SwapProvider[] { return [ CrossChainSwapFactory.getMayanAdapter(), CrossChainSwapFactory.getRelayAdapter(), CrossChainSwapFactory.getNearIntentsAdapter(), CrossChainSwapFactory.getLifiInstance(), // CrossChainSwapFactory.getPegasusAdapter(), // CrossChainSwapFactory.getAcrossAdapter(), // CrossChainSwapFactory.getXyFinanceAdapter(), // CrossChainSwapFactory.getSymbiosisAdapter(), // CrossChainSwapFactory.getDebridgeInstance(), // CrossChainSwapFactory.getOptimexAdapter(), // CrossChainSwapFactory.getOrbiterAdapter(), ] } // Get adapter by name static getAdapterByName(name: string): SwapProvider | undefined { switch (name.toLowerCase()) { // case 'across': // return CrossChainSwapFactory.getAcrossAdapter() case 'relay': return CrossChainSwapFactory.getRelayAdapter() // case 'xyfinance': // return CrossChainSwapFactory.getXyFinanceAdapter() case 'near intents': return CrossChainSwapFactory.getNearIntentsAdapter() case 'mayan': return CrossChainSwapFactory.getMayanAdapter() // case 'symbiosis': // return CrossChainSwapFactory.getSymbiosisAdapter() // case 'debridge': // return CrossChainSwapFactory.getDebridgeInstance() case 'lifi': return CrossChainSwapFactory.getLifiInstance() case 'pegasus': return CrossChainSwapFactory.getPegasusAdapter() // case 'optimex': // return CrossChainSwapFactory.getOptimexAdapter() // case 'orbiter': // return CrossChainSwapFactory.getOrbiterAdapter() default: return undefined } } }