import { BaseAnimNodeType } from '../nodes/anim/_Base';
import { BaseAudioNodeType } from '../nodes/audio/_Base';
import { BaseCopNodeType } from '../nodes/cop/_Base';
import { BaseEventNodeType } from '../nodes/event/_Base';
import { BaseGlNodeType } from '../nodes/gl/_Base';
import { BaseJsNodeType } from '../nodes/js/_Base';
import { BaseManagerNodeType } from '../nodes/manager/_Base';
import { BaseMatNodeType } from '../nodes/mat/_Base';
import { BaseObjNodeType } from '../nodes/obj/_Base';
import { BasePostProcessNodeType } from '../nodes/post/_Base';
import { BaseRopNodeType } from '../nodes/rop/_Base';
import { BaseSopNodeType } from '../nodes/sop/_Base';
import { TypedNode } from '../nodes/_Base';
export declare enum NodeContext {
    ANIM = "anim",
    AUDIO = "audio",
    COP = "cop",
    EVENT = "event",
    GL = "gl",
    JS = "js",
    MANAGER = "manager",
    MAT = "mat",
    OBJ = "obj",
    POST = "post",
    ROP = "rop",
    SOP = "sop"
}
export type NodeContextUnion = NodeContext.ANIM | NodeContext.AUDIO | NodeContext.COP | NodeContext.EVENT | NodeContext.GL | NodeContext.JS | NodeContext.MANAGER | NodeContext.MAT | NodeContext.OBJ | NodeContext.POST | NodeContext.ROP | NodeContext.SOP;
export declare enum NetworkNodeType {
    ACTOR = "actorsNetwork",
    ANIM = "animationsNetwork",
    AUDIO = "audioNetwork",
    COP = "copNetwork",
    CSG = "csgNetwork",
    EVENT = "eventsNetwork",
    MAT = "materialsNetwork",
    POST = "postProcessNetwork",
    ROP = "renderersNetwork",
    SOLVER = "solver",
    SUBNET = "subnet",
    DECOMPOSE = "decompose"
}
export declare enum NetworkChildNodeType {
    INPUT = "subnetInput",
    OUTPUT = "subnetOutput"
}
export declare enum CameraNodeType {
    CUBE = "cubeCamera",
    MAPBOX = "mapboxCamera",
    ORTHOGRAPHIC = "orthographicCamera",
    PERSPECTIVE = "perspectiveCamera"
}
export declare enum CameraSopNodeType {
    CONTROLS = "cameraControls",
    CSS_RENDERER = "cameraCSSRenderer",
    FPS = "cameraFPS",
    FRAME_MODE = "cameraFrameMode",
    POST_PROCESS = "cameraPostProcess",
    RENDER_SCENE = "cameraRenderScene",
    RENDERER = "cameraRenderer",
    VIEWER_CODE = "cameraViewerCode",
    VIEW_OFFSET = "cameraViewOffset",
    WEBXR_AR = "cameraWebXRAR",
    WEBXR_VR = "cameraWebXRVR",
    WEBXR_AR_MARKER_TRACKING = "cameraWebXRARMarkerTracking"
}
export declare const CAMERA_TYPES: CameraNodeType[];
export declare enum CameraControlsNodeType {
    MAP = "cameraMapControls",
    ORBIT = "cameraOrbitControls",
    PAN_ZOOM = "cameraPanZoomControls",
    FIRST_PERSON = "firstPersonControls",
    PLAYER = "playerControls",
    MOBILE_JOYSTICK = "mobileJoystickControls"
}
export declare enum AudioNodeAnalyserType {
    FFT = "FFT",
    METER = "meter",
    WAVEFORM = "waveform"
}
export declare const AUDIO_ANALYSER_NODES: Readonly<string[]>;
export type NodeTypeMapGeneric = {
    [key in NodeContext]: TypedNode<key, any>;
};
export interface BaseNodeByContextMap extends NodeTypeMapGeneric {
    [NodeContext.ANIM]: BaseAnimNodeType;
    [NodeContext.AUDIO]: BaseAudioNodeType;
    [NodeContext.COP]: BaseCopNodeType;
    [NodeContext.EVENT]: BaseEventNodeType;
    [NodeContext.GL]: BaseGlNodeType;
    [NodeContext.JS]: BaseJsNodeType;
    [NodeContext.MANAGER]: BaseManagerNodeType;
    [NodeContext.MAT]: BaseMatNodeType;
    [NodeContext.OBJ]: BaseObjNodeType;
    [NodeContext.POST]: BasePostProcessNodeType;
    [NodeContext.SOP]: BaseSopNodeType;
    [NodeContext.ROP]: BaseRopNodeType;
}
export interface NodeContextAndType {
    context: NodeContext;
    type: string;
}
