import { Nullable } from "../../base-types";
import { PropertyDataType, PropertyValue, Type, TypeInfo } from "./data-type";
import { IProperty, PropertyBase } from "./property";
export interface ICultureInsensitiveProperty<T extends PropertyDataType | unknown = PropertyDataType, B extends boolean = boolean> extends IProperty {
    /**
     * Gets the value of the property.
     * @returns The value.
     */
    getValue(): PropertyValue<T, B>;
    /**
     * Sets the value of the property.
     * @param value - The value to set
     */
    setValue(value: PropertyValue<T, B>): void;
}
export declare class CultureInsensitiveProperty<T extends PropertyDataType | unknown, B extends boolean> extends PropertyBase<T, B> implements ICultureInsensitiveProperty<T, B> {
    private _value;
    private _dirtyValueCalculator;
    isTracking: boolean;
    readonly isMultiLanguage: false;
    get isDirty(): boolean;
    constructor(name: string, typeInfo: TypeInfo<T, B>, value?: B extends true ? Nullable<Array<Type<T>>> : Nullable<Type<T>>, hasDataSource?: boolean);
    getValue(): B extends true ? Nullable<Array<Type<T>>> : Nullable<Type<T>>;
    setValue(value: B extends true ? Nullable<Array<Type<T>>> : Nullable<Type<T>>): void;
    getTypeName(): string;
    startTracking(): void;
    markClean(): void;
}
