@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
text/typescript
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
}
}
}