import { CoreGraphNodeId } from '../../../core/graph/CoreGraph';
import { TypedParam } from '../_Base';
import { ParamValueSerializedTypeMap, ParamValuePreConversionSerializedTypeMap } from '../types/ParamValueSerializedTypeMap';
import { ParamType } from '../../poly/ParamType';
import { ParamInitValueSerializedTypeMap } from '../types/ParamInitValueSerializedTypeMap';
export interface ParamSerializerData<T extends ParamType> {
    name: string;
    type: T;
    raw_input: ParamInitValueSerializedTypeMap[T];
    value: ParamValueSerializedTypeMap[T];
    value_pre_conversion: ParamValuePreConversionSerializedTypeMap[T];
    expression?: string;
    graph_node_id: CoreGraphNodeId;
    error_message?: string;
    is_visible: boolean;
    editable: boolean;
    folder_name?: string;
    components?: Readonly<CoreGraphNodeId[]>;
}
export declare class CoreParamSerializer<T extends ParamType> {
    readonly param: TypedParam<T>;
    constructor(param: TypedParam<T>);
    toJSON(): ParamSerializerData<T>;
    rawInput(): ParamInitValueSerializedTypeMap[T];
    value(): ParamValueSerializedTypeMap[T];
    value_pre_conversion(): ParamValuePreConversionSerializedTypeMap[T];
    expression(): string | undefined;
    error_message(): string | undefined;
    is_visible(): boolean;
    editable(): boolean;
}
export type BaseParamSerializer = typeof CoreParamSerializer<ParamType>;
