@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.
66 lines (59 loc) • 2.05 kB
text/typescript
// import { isEvmChain } from 'utils'
import type {
// NearQuoteParams,
NormalizedQuote, // QuoteParams,
SwapProvider,
} from './adapters/BaseSwapAdapter.js'
export interface Quote {
adapter?: SwapProvider
quote: NormalizedQuote
}
export class CrossChainSwapAdapterRegistry {
private adapters: Map<string, SwapProvider> = new Map()
registerAdapter(adapter: SwapProvider): void {
this.adapters.set(adapter.getName().toLowerCase(), adapter)
}
getAdapter(name: string): SwapProvider | undefined {
return this.adapters.get(name.toLowerCase())
}
getAllAdapters(): SwapProvider[] {
return Array.from(this.adapters.values())
}
// get quotes from all adapters and sort them by output amount
// async getQuotes(params: QuoteParams | NearQuoteParams): Promise<Quote[]> {
// const quotes: { adapter: SwapProvider; quote: NormalizedQuote }[] = []
//
// const adapters =
// params.fromChain === params.toChain && isEvmChain(params.fromChain)
// ? ([this.getAdapter('KyberSwap')] as SwapProvider[])
// : this.getAllAdapters().filter(
// adapter =>
// adapter.getSupportedChains().includes(params.fromChain) &&
// adapter.getSupportedChains().includes(params.toChain),
// )
//
// console.log(
// 'Available adapters',
// params,
// adapters.map(ad => ad.getName()),
// )
// // Get quotes from all compatible adapters
// const quotePromises = adapters.map(async adapter => {
// try {
// const quote = await adapter.getQuote(params)
// quotes.push({ adapter, quote })
// } catch (err) {
// console.error(`Failed to get quote from ${adapter.getName()}:`, err)
// }
// })
//
// await Promise.all(quotePromises)
//
// if (quotes.length === 0) {
// throw new Error('No valid quotes found for the requested swap')
// }
//
// quotes.sort((a, b) => (a.quote.outputAmount < b.quote.outputAmount ? 1 : -1))
// return quotes
// }
}