import { DataTexture, ShaderMaterial } from 'three';
import { GPUComputationConfigRef, GPUComputationRenderer, GPUComputationRendererVariable } from './gpuCompute/GPUComputationRenderer';
import { ShaderName } from '../../engine/nodes/utils/shaders/ShaderName';
import { TextureAllocationsController } from '../../engine/nodes/gl/code/utils/TextureAllocationsController';
import type { CoreParticlesController } from './CoreParticlesController';
export declare enum ParticlesDataType {
    AUTO = "Auto",
    FLOAT = "Float",
    HALF_FLOAT = "HalfFloat"
}
export declare const PARTICLE_DATA_TYPES: ParticlesDataType[];
export declare class CoreParticlesGpuComputeController {
    private mainController;
    protected _gpuCompute: GPUComputationRenderer | undefined;
    private _variablesByName;
    private _allVariables;
    private _createdTexturesByName;
    protected _lastSimulatedFrame: number | undefined;
    private _texturesSize;
    private _persistedTextureAllocationsController;
    constructor(mainController: CoreParticlesController);
    dispose(): void;
    setPersistedTextureAllocationController(controller: TextureAllocationsController): void;
    allVariables(): GPUComputationRendererVariable[];
    init(): GPUComputationConfigRef | undefined;
    private _initPoints;
    private _initParticlesUVs;
    createGPUCompute(): GPUComputationConfigRef | undefined;
    computeSimulation(delta: number, configRef: GPUComputationConfigRef): void;
    getCurrentRenderTarget(shader_name: ShaderName): import("three").WebGLRenderTarget<import("three").Texture> | undefined;
    private _textureNameForShaderName;
    materials(): ShaderMaterial[];
    private _createSimulationMaterialUniforms;
    private _assignReadonlyTextures;
    private _updateSimulationMaterialUniforms;
    createdTexturesByName(): Readonly<Map<ShaderName, DataTexture>>;
    private _fillTextures;
    reset(): void;
    private resetGpuCompute;
    private _createTextureRenderTargets;
    private _textureAllocationsController;
    private _readonlyAllocations;
}
