/**
 * Allows to build a post pass with [gl nodes](/docs/nodes/gl)
 *
 *
 */
import { TypedPostNode, TypedPostNodeContext } from './_Base';
import { EffectPass } from 'postprocessing';
import { NodeParamsConfig } from '../utils/params/ParamsConfig';
import { GlNodeChildrenMap } from '../../poly/registers/nodes/Gl';
import { NodeCreateOptions } from '../utils/hierarchy/ChildrenController';
import { BaseGlNodeType } from '../gl/_Base';
import { IUniformsWithTime } from '../../scene/utils/UniformsController';
import { IUniforms } from '../../../core/geometry/Material';
import { valueof, Constructor } from './../../../types/GlobalTypes';
import { AssemblerName } from './../../poly/registers/assemblers/_BaseRegister';
import { PostPersistedConfig } from './../gl/code/assemblers/post/PostPersistedConfig';
import { PostType } from './../../poly/registers/nodes/types/Post';
import { NodeContext } from '../../poly/NodeContext';
import { GlAssemblerController } from '../gl/code/Controller';
import { ShaderAssemblerPost } from '../gl/code/assemblers/post/Post';
declare class BuilderPostParamsConfig extends NodeParamsConfig {
    /** @param effect amount */
    useInput1OuputBuffer: import("../utils/params/ParamsConfig").ParamTemplate<import("../../index_all").ParamType.BOOLEAN>;
}
export declare class BuilderPostNode extends TypedPostNode<EffectPass, BuilderPostParamsConfig> {
    paramsConfig: BuilderPostParamsConfig;
    static type(): PostType;
    readonly persisted_config: PostPersistedConfig;
    protected _assemblerController: GlAssemblerController<ShaderAssemblerPost> | undefined;
    usedAssembler(): Readonly<AssemblerName.GL_POST>;
    protected _createAssemblerController(): GlAssemblerController<ShaderAssemblerPost> | undefined;
    assemblerController(): GlAssemblerController<ShaderAssemblerPost> | undefined;
    protected _childrenControllerContext: NodeContext;
    initializeNode(): void;
    createNode<S extends keyof GlNodeChildrenMap>(node_class: S, options?: NodeCreateOptions): GlNodeChildrenMap[S];
    createNode<K extends valueof<GlNodeChildrenMap>>(node_class: Constructor<K>, options?: NodeCreateOptions): K;
    children(): BaseGlNodeType[];
    nodesByType<K extends keyof GlNodeChildrenMap>(type: K): GlNodeChildrenMap[K][];
    childrenAllowed(): boolean;
    sceneReadonly(): boolean;
    /**
     *
     * FRAGMENT SHADER UPDATE
     *
     */
    private _fragmentShader;
    private _uniforms;
    fragmentShader(): string;
    setFragmentShader(fragmentShader: string): void;
    uniforms(): IUniforms;
    setUniforms(uniforms: IUniforms): void;
    shaders_by_name(): {
        fragment: string;
    };
    compileIfRequired(): void;
    private compile;
    static handleDependencies(node: BuilderPostNode, timeDependent: boolean, uniforms?: IUniformsWithTime): void;
    /**
     *
     * PASS CREATE / UPDATE
     *
     */
    createPass(context: TypedPostNodeContext): EffectPass;
    updatePass(pass: EffectPass): void;
    protected _createEffectComposer(context: TypedPostNodeContext): import("postprocessing").EffectComposer;
}
export {};
