import { EventEmitter } from "events"; export interface Scope { close():void; } export interface ScopePrivateCamps { isOpen: boolean; isMyTurn: boolean; events: EventEmitter; operationsList: Promise[]; myTurnStart: Promise; userClose: Promise; end: Promise; addOperation(method: M, arg1:Parameters[0], arg2:Parameters[1]):Promise>>; myTurnTrigger(): void; userCloseTrigger(): void; } export interface ScopePrivateCampsClass { new(type?:"user"|"comunitary"): ScopePrivateCamps; } export interface ScopeClass { new(type?:"user"|"comunitary"): Scope; private:WeakMap; getPrivate(scope:Scope):ScopePrivateCamps; setPrivate(scope:Scope, pc:ScopePrivateCamps):void; } export interface ScopesQueue { communityScope:Scope; isClosed:boolean; isRunning:boolean; listScopes:Scope[]; getScopeByArgs(scope: Scope|undefined):Scope; newScope():Scope; run():void; close():Promise; } export interface ScopesQueueClass { Scope:ScopeClass; new():ScopesQueue; }