// node native scope
import { EventEmitter } from 'events';
import * as fs from 'fs';
import * as http from 'http';
import * as https from 'https';
import * as net from 'net';
import * as tls from 'tls';
import * as url from 'url';
import * as http2 from 'http2';

export { EventEmitter, fs, http, https, net, tls, url, http2 };

// tsclass scope
import * as tsclass from '@tsclass/tsclass';

export { tsclass };

// pushrocks scope
import * as lik from '@push.rocks/lik';
import * as smartdelay from '@push.rocks/smartdelay';
import * as smartpromise from '@push.rocks/smartpromise';
import * as smartrequest from '@push.rocks/smartrequest';
import * as smartstring from '@push.rocks/smartstring';

import * as smartacme from '@push.rocks/smartacme';
import * as smartacmePlugins from '@push.rocks/smartacme/dist_ts/smartacme.plugins.js';
import * as smartacmeHandlers from '@push.rocks/smartacme/dist_ts/handlers/index.js';
import * as taskbuffer from '@push.rocks/taskbuffer';

export {
  lik,
  smartdelay,
  smartrequest,
  smartpromise,
  smartstring,
  smartacme,
  smartacmePlugins,
  smartacmeHandlers,
  taskbuffer,
};

// third party scope
import prettyMs from 'pretty-ms';
import * as ws from 'ws';
import wsDefault from 'ws';
import { minimatch } from 'minimatch';

export { prettyMs, ws, wsDefault, minimatch };