import { JsFunctionName } from '../../../utils/shaders/ShaderName';
import { BaseJsDefinition } from '../../utils/JsDefinition';
import { BaseJsNodeType } from '../../_Base';
export type DefinitionTraverseCallback = (definition: BaseJsDefinition) => void;
export interface AddBodyLinesOptions {
    makeUniq: boolean;
}
export declare class JsLinesController {
    private _shader_name;
    private _definitionsByNodeId;
    private _bodyLinesByNodeId;
    constructor(_shader_name: JsFunctionName);
    get shader_name(): JsFunctionName;
    addDefinitions(node: BaseJsNodeType, definitions: BaseJsDefinition[]): void;
    private _addDefinitionsForNodeId;
    definitions(node: BaseJsNodeType): BaseJsDefinition[] | undefined;
    traverseDefinitions(callback: DefinitionTraverseCallback): void;
    addBodyLines(node: BaseJsNodeType, lines: string[], options?: AddBodyLinesOptions): void;
    private _addBodyLinesForNodeId;
    bodyLines(node: BaseJsNodeType): string[] | undefined;
}
