import { Object3D } from 'three';
import { AbstractRenderer } from '../../engine/viewers/Common';
import { CoreParticlesGpuComputeController } from './CoreParticlesGpuComputeController';
import { CoreParticlesRenderController } from './CoreParticlesRenderController';
import type { PolyScene } from '../../engine/scene/PolyScene';
import { ShaderName } from '../../engine/nodes/utils/shaders/ShaderName';
import { ParticlesSystemGpuSopNode } from '../../engine/nodes/sop/ParticlesSystemGpu';
import { TextureAllocationsController } from '../../engine/nodes/gl/code/utils/TextureAllocationsController';
import { GPUComputationConfigRef } from './gpuCompute/GPUComputationRenderer';
export declare class CoreParticlesController {
    readonly scene: PolyScene;
    private _node;
    readonly gpuController: CoreParticlesGpuComputeController;
    readonly renderController: CoreParticlesRenderController;
    private _shadersByName;
    private _shaderNames;
    private _uniformNames;
    protected _object: Object3D | undefined;
    protected _renderer: AbstractRenderer | undefined;
    constructor(scene: PolyScene, _node: ParticlesSystemGpuSopNode);
    object(): Object3D<import("three").Object3DEventMap> | undefined;
    renderer(): AbstractRenderer | undefined;
    dispose(): void;
    init(object: Object3D, renderer: AbstractRenderer): Promise<GPUComputationConfigRef | undefined>;
    stepSimulation(delta: number, configRef: GPUComputationConfigRef): void;
    reset(): Promise<GPUComputationConfigRef | undefined>;
    setError(message: string): void;
    node(): ParticlesSystemGpuSopNode;
    setShadersByName(shadersByName: Map<ShaderName, string>): void;
    shadersByName(): Map<ShaderName, string>;
    shaderNames(): ShaderName[];
    uniformNames(): string[];
    setPersistedTextureAllocationController(controller: TextureAllocationsController): void;
    private _debugCook;
    debugMessage(message: string): void;
}
