import { Dimension } from '../Dimension' ; /**
 * Abstract Plugin class to be inherited in the development of external tooling to manipulate a  Dimension *
 * There are specific  Database plugins which are used for setting up a backing database to the dimension so it
 * can automatically store relevant data such as matches and tournaments and player stats
  export abstract class Plugin { /**
     * Name of the plugin
     */ abstract name : string ; /**
     * Type of the plugin. Required in order for Dimensions to know how to use it
     */ abstract type : Plugin . Type ; param dimension abstract async manipulate ( dimension ) ; } import { Database as _Database } from './Database' ; ignore import { Storage as _Storage } from './Storage' ; ignore export namespace Plugin { /**
     * Enumeration for plugin types
     */ export enum Type { /**
         * Plugins that work with database capabilities
         * Includes plugins such as  MongoDB , which handle the storage of match results and user data
          DATABASE = 'database' , /**
         * Plugins that work with the file storage capabilities
         * Currently not used
         */ STORAGE = 'storage' , /**
         * Other type, of which we will only run the  Plugin . manipulate function
          OTHER = 'other' } export import Database = _Database ; export import Storage = _Storage ; }