eamutils
Version:
Some reusable functions in some projects
62 lines (54 loc) • 1.42 kB
text/typescript
import { getProviders } from './files/providers_list';
export interface IProvider {
chainId: number;
rpcs: string[];
logo: string;
// Optional data
weth?: IWETH;
name?: string;
explorer?: string;
router?: string;
factory?: string;
factory_abi?: string;
router_abi?: string;
multicall?: string;
base_pairs?: string[];
}
export interface IWETH {
address: string;
name: string;
symbol: string;
decimals: number;
}
/*
* Create a new provider object
*/
export const createProvider = (provider: IProvider): IProvider => {
return provider;
};
export const getDefaultProviders = (): IProvider[] => {
const providers = getProviders();
return providers.map((i: any) => {
return createProvider({
...i,
factory_abi: require(i.factory_abi),
router_abi: require(i.router_abi),
});
});
};
let Providers: IProvider[] = getDefaultProviders();
/*
Configure providers on your application
@returns providers
*/
export const configureProviders = (providers: IProvider[]) => {
Providers = providers;
return Providers;
};
/*
* Get provider by chain id
* @returns provider or undefined if not found
*/
export const getProviderByChainId = (chainId: number): IProvider | undefined => {
return Providers.find((provider: IProvider) => provider.chainId === chainId);
};