1import { WsProvider, ApiPromise } from "@polkadot/api";2import config from "../config";3import promisifySubstrate from "./promisify-substrate";4import { ApiOptions } from "@polkadot/api/types";56function defaultApiOptions(): ApiOptions {7 const wsProvider = new WsProvider(config.substrateUrl);8 return { provider: wsProvider, types: JSON.parse(config.customTypes) };9}1011export default async function usingApi(action: (api: ApiPromise) => Promise<void>, settings: ApiOptions | undefined = undefined): Promise<void> {12 settings = settings || defaultApiOptions();13 let api: ApiPromise | undefined = undefined;1415 try {16 api = new ApiPromise(settings);17 await promisifySubstrate(api, () => api && api.isReady)();18 await action(api);19 } finally {20 api && api.disconnect();21 }22}