/**
 * computes normals after applying transformations on the current vertex as well as the adjacent ones.
 *
 *
 *
 */
import { TypedSubnetGlNode } from './Subnet';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { ShadersCollectionController } from './code/utils/ShadersCollectionController';
import { SubnetInputGlNode } from './SubnetInput';
import { GlConnectionPointType } from '../utils/io/connections/Gl';
import { GlType } from '../../poly/registers/nodes/types/Gl';
export declare enum ComputeNormalsInput {
    P = "P",
    N = "N",
    TEXTURE_SIZE = "textureSize",
    UV = "adjacencyUv",
    ID = "adjacencyId"
}
declare enum VariablesLookupMode {
    CURRENT_POINT = "currentPoint",
    ADJACENT_POINT = "adjacentPoint"
}
declare const ComputeNormalsGlParamsConfig_base: {
    new (...args: any[]): {
        inputs: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
        inputsCount: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputType0: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName0: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName1: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName2: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName3: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType4: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName4: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType5: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName5: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType6: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName6: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType7: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName7: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType8: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName8: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        inputType9: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.INTEGER>;
        inputName9: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
        spare: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FOLDER>;
    };
} & typeof NodeParamsConfig;
declare class ComputeNormalsGlParamsConfig extends ComputeNormalsGlParamsConfig_base {
    adjacencyCount: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.FLOAT>;
    adjacencyBaseName: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.STRING>;
}
export declare class ComputeNormalsGlNode extends TypedSubnetGlNode<ComputeNormalsGlParamsConfig> {
    paramsConfig: ComputeNormalsGlParamsConfig;
    static type(): GlType;
    protected _expectedOutputTypes(): GlConnectionPointType[];
    protected _expectedInputTypes(): GlConnectionPointType[];
    protected _expectedOutputName(index: number): ComputeNormalsInput;
    protected _expectedInputName(index: number): ComputeNormalsInput;
    childExpectedInputConnectionPointTypes(): GlConnectionPointType[];
    childExpectedInputConnectionPointName(index: number): ComputeNormalsInput;
    childExpectedOutputConnectionPointTypes(): GlConnectionPointType[];
    childExpectedOutputConnectionPointName(index: number): string;
    _variableLookupMode: VariablesLookupMode;
    protected _glVarNameBase(): string;
    private _withCurrentPoint;
    private _adjacencyLookupId;
    private _adjacencyLookupUv;
    protected setLinesBlockStart(linesController: ShadersCollectionController): void;
    protected setLinesBlockEnd(shadersCollectionController: ShadersCollectionController): void;
    setSubnetInputLines(linesController: ShadersCollectionController, childNode: SubnetInputGlNode): void;
}
export {};
