import { ConnectionAcceptedEvent } from '../skychat/AuthBridge.js'; import { Connection } from '../skychat/Connection.js'; import { RoomManager } from '../skychat/RoomManager.js'; import { Plugin } from './Plugin.js'; /** * A global plugin is a plugin which instantied once at the level of the room manager */ export declare abstract class GlobalPlugin extends Plugin { static readonly isGlobal: boolean; /** * Reference to the room manager */ readonly manager: RoomManager; /** * A globally instantiated plugin */ constructor(manager: RoomManager); /** * Storage path for global plugins */ getStoragePath(): string; /** * Executed when a new messages comes in * @abstract */ onNewMessageHook(message: string, _connection: Connection): Promise; /** * When a connection is created * @abstract */ onNewConnection(_connection: Connection, _event: ConnectionAcceptedEvent): Promise; /** * When a connection was closed * @abstract */ onConnectionClosed(_connection: Connection): Promise; } /** * Defines default constructor for a global plugin (required for TypeScript) */ export interface GlobalPluginConstructor { new (manager: RoomManager): GlobalPlugin; commandName: string; commandAliases: string[]; defaultDataStorageValue?: any; }