import { ParamType } from '../../../../poly/ParamType';
import { ParamInitValuesTypeMap } from '../../../../params/types/ParamInitValuesTypeMap';
import { BaseParamConfig } from '../../../utils/code/configs/BaseParamConfig';
import { BaseNodeType } from '../../../_Base';
import { BaseParamType } from '../../../../params/_Base';
export interface JsParamConfigJSON<T extends ParamType> {
    type: T;
    name: string;
    defaultValue: ParamInitValuesTypeMap[T];
    uniformName: string;
}
export declare class JsParamConfig<T extends ParamType> extends BaseParamConfig<T> {
    private _uniformName;
    constructor(_type: T, _name: string, _defaultValue: ParamInitValuesTypeMap[T], _uniformName: string);
    toJSON(): JsParamConfigJSON<T>;
    static fromJSON(json: JsParamConfigJSON<ParamType>): JsParamConfig<ParamType>;
    uniformName(): string;
    protected _callback(node: BaseNodeType, param: BaseParamType): void;
    static callback(node: BaseNodeType, paramName: string): void;
}
