import type { FormValueType, IgcFormControl } from './types.js';
export declare function createFormValueState<T>(host: IgcFormControl, config: FormValueConfig<T>): FormValue<T>;
type FormValueTransformers<T> = {
    setValue: (value: T) => T;
    getValue: (value: T) => T;
    setDefaultValue: (value: T) => T;
    getDefaultValue: (value: T) => T;
    setFormValue: (value: T, host: IgcFormControl) => FormValueType;
};
type FormValueConfig<T> = {
    initialValue: T;
    initialDefaultValue?: T;
    transformers?: Partial<FormValueTransformers<T>>;
};
export declare const defaultBooleanTransformers: Partial<FormValueTransformers<boolean>>;
export declare const defaultNumberTransformers: Partial<FormValueTransformers<number>>;
export declare const defaultDateTimeTransformers: Partial<FormValueTransformers<Date | null>>;
export declare class FormValue<T> {
    private static readonly setFormValueKey;
    private _host;
    private _value;
    private _defaultValue;
    private _transformers;
    private _setFormValue;
    constructor(host: IgcFormControl, config: FormValueConfig<T>);
    setValueAndFormState(value: T): void;
    set defaultValue(value: T);
    get defaultValue(): T;
    set value(value: T);
    get value(): T;
}
export {};
