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 = new ApiPromise(settings);1415 try {16 await promisifySubstrate(api, async () => {17 if(api) {18 await api.isReadyOrError;19 await action(api);20 }21 })();22 } finally {23 await api.disconnect();24 }25}