1import { WsProvider, ApiPromise } from "@polkadot/api";2import config from "../config";3import promisifySubstrate from "./promisify-substrate";4import { ApiOptions } from "@polkadot/api/types";5import fs from "fs";67const rtt = JSON.parse(fs.readFileSync('../runtime_types.json', 'utf8'));89function defaultApiOptions(): ApiOptions {10 const wsProvider = new WsProvider(config.substrateUrl);11 return { provider: wsProvider, types: rtt };12}1314export default async function usingApi(action: (api: ApiPromise) => Promise<void>, settings: ApiOptions | undefined = undefined): Promise<void> {15 settings = settings || defaultApiOptions();16 let api: ApiPromise = new ApiPromise(settings);1718 try {19 await promisifySubstrate(api, async () => {20 if(api) {21 await api.isReadyOrError;22 await action(api);23 }24 })();25 } finally {26 await api.disconnect();27 }28}