1import { WsProvider, ApiPromise } from "@polkadot/api";2import config from "../config";3import promisifySubstrate from "./promisify-substrate";4import { ApiOptions } from "@polkadot/api/types";5import rtt from "../../../runtime_types.json";67function defaultApiOptions(): ApiOptions {8 const wsProvider = new WsProvider(config.substrateUrl);9 return { provider: wsProvider, types: rtt };10}1112export default async function usingApi(action: (api: ApiPromise) => Promise<void>, settings: ApiOptions | undefined = undefined): Promise<void> {13 settings = settings || defaultApiOptions();14 let api: ApiPromise = new ApiPromise(settings);1516 try {17 await promisifySubstrate(api, async () => {18 if(api) {19 await api.isReadyOrError;20 await action(api);21 }22 })();23 } finally {24 await api.disconnect();25 }26}