import { GlobalsBaseController } from './_Base';
import { GlobalsGlNode } from '../../Globals';
import { BaseGlNodeType } from '../../_Base';
import { TextureAllocationsController } from '../utils/TextureAllocationsController';
import { GlConnectionPointType } from '../../../utils/io/connections/Gl';
import { ShadersCollectionController } from '../utils/ShadersCollectionController';
import { GlobalsBaseControllerType } from './Common';
export declare enum GlobalsTextureHandlerPurpose {
    PARTICLES_SHADER = "particles_shader",
    MATERIAL = "material"
}
export interface GlobalsTextureHandlerData {
    textureName: string;
    component: string;
    uvName: string;
}
export declare class GlobalsTextureHandler extends GlobalsBaseController {
    private _uvName;
    private _purpose;
    private _textureAllocationsController;
    static PARTICLES_SIM_UV_ATTRIB: string;
    static UV_VARYING: string;
    static PARTICLE_SIM_UV: string;
    private _globalsGeometryHandler;
    constructor(_uvName: string, _purpose: GlobalsTextureHandlerPurpose);
    type(): GlobalsBaseControllerType;
    set_texture_allocations_controller(controller: TextureAllocationsController): void;
    handleGlobalsNode(globals_node: GlobalsGlNode, output_name: string, shaders_collection_controller: ShadersCollectionController): void;
    private _textureVariableUsable;
    attribTextureData(attribName: string): GlobalsTextureHandlerData | undefined;
    readAttribute(node: BaseGlNodeType, gl_type: GlConnectionPointType, attribName: string, shadersCollectionController: ShadersCollectionController): string | undefined;
    addParticlesSimUvAttribute(node: BaseGlNodeType, shaders_collection_controller: ShadersCollectionController): void;
}
