import { BaseNodeClass } from './nodes/_Base';
import { PolyScene } from './scene/PolyScene';
import { RenderersController } from './poly/RenderersController';
import { PolyLibsController } from './poly/PolyLibsController';
import { NodesRegister, RegisterOptions, BaseNodeConstructor, OperationsRegister } from './poly/registers/nodes/NodesRegister';
import { ExpressionRegister } from './poly/registers/expressions/ExpressionRegister';
import { NodeContext } from './poly/NodeContext';
import { DynamicModulesRegister } from './poly/registers/modules/DynamicModulesRegister';
import { AssemblersRegister } from './poly/registers/assemblers/AssemblersRegistry';
import { BaseCoreLogger } from '../core/logger/Base';
import { BaseOperation } from '../core/operations/_Base';
import { PluginsRegister } from './poly/registers/plugins/PluginsRegister';
import { CamerasRegister } from './poly/registers/cameras/CamerasRegister';
import { PolyPlugin } from './poly/registers/plugins/Plugin';
import { PolyDictionary } from '../types/GlobalTypes';
declare global {
    interface Window {
        __POLYGONJS_POLY_INSTANCE__: PolyEngine;
    }
}
export declare class PolyEngine {
    readonly renderersController: RenderersController;
    readonly nodesRegister: NodesRegister;
    readonly operationsRegister: OperationsRegister;
    readonly expressionsRegister: ExpressionRegister;
    readonly modulesRegister: DynamicModulesRegister;
    readonly assemblersRegister: AssemblersRegister;
    readonly pluginsRegister: PluginsRegister;
    readonly camerasRegister: CamerasRegister;
    scenesByUuid: PolyDictionary<PolyScene>;
    _env: string | undefined;
    private _player_mode;
    private _logger;
    static _instance_(): PolyEngine;
    private constructor();
    setPlayerMode(mode: boolean): void;
    playerMode(): boolean;
    registerNode(node: BaseNodeConstructor, tab_menu_category?: string, options?: RegisterOptions): void;
    registerOperation(operation: typeof BaseOperation): void;
    registerCamera(node: BaseNodeConstructor): void;
    registerPlugin(plugin: PolyPlugin): void;
    registeredNodes(parent_context: NodeContext, type: string): PolyDictionary<typeof BaseNodeClass>;
    registeredOperation(parent_context: NodeContext, operation_type: string): typeof BaseOperation | undefined;
    registeredCameraTypes(): string[];
    inWorkerThread(): boolean;
    desktopController(): any;
    private _libs_controller;
    get libs(): PolyLibsController;
    setEnv(env: string): void;
    env(): string | undefined;
    setLogger(logger: BaseCoreLogger | null): void;
    get logger(): BaseCoreLogger | null;
    log(message?: any, ...optionalParams: any[]): void;
    warn(message?: any, ...optionalParams: any[]): void;
    error(message?: any, ...optionalParams: any[]): void;
}
export declare const Poly: PolyEngine;
