import { PersistedConfigWithShaders } from '../../.././utils/BasePersistedConfig';
import { BaseJsShaderAssembler, BaseFunctionData } from './_Base';
import { RegisterableVariable, SerializedVariable, SerializedVariableType } from './_BaseJsPersistedConfigUtils';
import { NamedFunctionMap } from '../../../../poly/registers/functions/All';
import { JsParamConfigJSON } from '../utils/JsParamConfig';
import { ParamType } from '../../../../poly/ParamType';
import { AssemblerControllerNode } from '../Controller';
export interface PersistedConfigBaseJsData extends PersistedConfigWithShaders {
    variableNames: string[];
    variables: SerializedVariable<SerializedVariableType>[];
    functionNames: Array<keyof NamedFunctionMap>;
    serializedParamConfigs: JsParamConfigJSON<ParamType>[];
}
export interface SingleBodyPersistedConfigBaseJsData extends PersistedConfigBaseJsData {
    functionBody: string;
}
export declare function serializedVariablesFromFunctionData(functionData: BaseFunctionData): SerializedVariable<SerializedVariableType>[];
export declare function variablesByNameFromPersistedConfigData(data: PersistedConfigBaseJsData): Record<string, RegisterableVariable>;
export declare function functionsByNameFromPersistedConfigData(data: PersistedConfigBaseJsData, node: AssemblerControllerNode<BaseJsShaderAssembler>): Record<string, Function>;
