UNPKG

dex-provider

Version:

Fetch data like trading pair and liquidity from DEX

68 lines (61 loc) 1.62 kB
import {IChain, IToken, Option} from './types' import {ethers} from 'ethers' import {ApiPromise, WsProvider} from '@polkadot/api' export class EvmChain implements IChain { name: string provider: ethers.providers.JsonRpcProvider nativeWrap: Option<IToken> stableCoin: Option<IToken> constructor( name: string, rpc: string, nativeWrap: Option<IToken>, stableCoin: Option<IToken> ) { this.name = name this.provider = new ethers.providers.JsonRpcProvider(rpc) this.nativeWrap = nativeWrap this.stableCoin = stableCoin } latestBlock(): Promise<number> { return new Promise((resolve, reject) => { this.provider .getBlockNumber() .then((block) => { resolve(Number(block)) }) .catch((err) => reject(err)) }) } } export class SubstrateChain implements IChain { name: string provider: WsProvider nativeWrap: Option<IToken> stableCoin: Option<IToken> constructor( name: string, rpc: string, nativeWrap: Option<IToken>, stableCoin: Option<IToken> ) { this.name = name this.provider = new WsProvider(rpc) this.nativeWrap = nativeWrap this.stableCoin = stableCoin } latestBlock(): Promise<number> { return new Promise<number>((resolve, reject) => { ApiPromise.create({provider: this.provider}) .then((api) => { api.rpc.chain .getHeader() .then((header) => { resolve(Number(header.number)) }) .catch((err) => reject(err)) }) .catch((err) => reject(err)) }) } }