import { UnitConverter } from '../../decorators/kos-config-bean-prop';
import { IConfigBeanModel } from '../config-bean/config-bean-model';
import { RegionInfoModel } from '../region-info';
import { UnitSource } from '../region-info/types';
import { ConfigPropertyTypes } from '../types';
import { ConfigBeanPropOptions, ConfigPropConverter, FormatOptions, KosConfigProperty, OptionsExpander, OptionsType } from './types';
/**
 * @ignore
 * @internal
 */
declare class KosConfigPropertyImpl implements KosConfigProperty {
    id: string;
    path: string;
    attribute: string;
    converter?: ConfigPropConverter;
    formatter?: FormatOptions;
    optionsExpander?: OptionsExpander;
    serviceBasePath?: string;
    regionInfo: RegionInfoModel;
    bean: IConfigBeanModel;
    constructor(modelId: string, options: ConfigBeanPropOptions);
    /**
     * For cases where the default unit system is used, this method will return
     * the number of decimal places to use for the given measure.
     * @param measure the measure to get the default decimal places for
     * @param unitSystem the unit system to use
     * @returns the number of decimal places to use for the given measure
     * @throws Error if measure is not provided
     **/
    getDefaultUnitDecimalPlaces(measure: string, unitSystem: string, unit?: string): number;
    /**
     * For cases where the default unit system is used, this method will return
     * the default unit for the given measure.
     * @param measure the measure to get the default unit for
     * @param unitSystem the unit system to use
     * @returns the default unit for the given measure
     * @throws Error if measure is not provided
     * @throws Error if unitSystem is not provided
     * @throws Error if the default unit for the given measure is not found
     **/
    getDefaultUnitForMeasure(measure: string, unitSystem: string): string;
    /**
     * Gets the schema data type for this property.
     *
     * @returns Schema type string (e.g., "String", "Number", "Boolean", "enum")
     */
    get schemaType(): import('../../services/config-bean').SchemaNodeType | "enum";
    /**
     * Gets the schema format hint for this property.
     *
     * @returns Format string (e.g., "second", "milliliter", "hour") or empty string if not specified
     */
    get schemaFormat(): string;
    /**
     * Gets available options for enumerated properties.
     *
     * @returns Array of options with label/value pairs for dropdowns and selection controls
     *
     * @example Get Property Options
     * ```typescript
     * const options = statusProperty.options;
     * // Returns: [
     * //   { label: "Active", value: "active" },
     * //   { label: "Inactive", value: "inactive" }
     * // ]
     * ```
     */
    get options(): OptionsType[];
    convertUnit(converter?: UnitConverter, defaultSystem?: string, defaultMeasure?: string): {
        measure: string | undefined;
        system: string | undefined;
        unit: string | undefined;
    };
    getConverterUnits(): {
        backend: UnitSource;
        display: {
            measure: string | undefined;
            system: string | undefined;
            unit: string | undefined;
        };
    };
    /**
     * Sets the configuration property value with automatic unit conversion.
     *
     * @param value - The new value to set (in regional units)
     *
     * @example Update Property Value
     * ```typescript
     * pumpRateProperty.value = 1.2; // Sets rate to 1.2 mL/s (converted to backend units)
     * ```
     */
    set value(value: ConfigPropertyTypes);
    /**
     * Gets the configuration property value converted to regional units.
     *
     * @returns Property value in regional display units
     *
     * @example Get Property Value
     * ```typescript
     * const currentRate = pumpRateProperty.value; // Gets rate in mL/s (regional units)
     * ```
     */
    get value(): ConfigPropertyTypes;
    /**
     * Gets the raw backend value without unit conversion.
     *
     * @returns Raw property value as stored in backend (typically SI units)
     */
    get rawValue(): unknown;
    /**
     * Gets the property value with appropriate decimal precision for display.
     *
     * @returns Property value formatted with significant digits based on regional settings
     */
    get significantValue(): unknown;
    /**
     * Gets the previous property value before the last update.
     *
     * @returns Previous property value in regional display units
     *
     * @example Track Value Changes
     * ```typescript
     * const oldValue = pumpRateProperty.previousValue; // Previous rate value
     * const newValue = pumpRateProperty.value; // Current rate value
     * console.log(`Rate changed from ${oldValue} to ${newValue}`);
     * ```
     */
    get previousValue(): {};
    getValue(current: boolean): {};
    /**
     * @internal
     */
    activate(): Promise<void>;
    /**
     * Gets the formatted display string with units and localization.
     *
     * @returns Localized string representation with appropriate units (e.g., "1.2 mL/s", "150 °F")
     *
     * @example Display Formatted Value
     * ```typescript
     * const display = temperatureProperty.displayValue; // "72.5 °F"
     * const rate = pumpRateProperty.displayValue; // "1.2 mL/s"
     * ```
     */
    get displayValue(): string;
    /**
     * Gets the unit of measure for the property value.
     *
     * @returns Unit string (e.g., "°F", "mL/s", "seconds") or empty string for unitless properties
     *
     * @example Get Property Unit
     * ```typescript
     * const unit = temperatureProperty.unit; // "°F" or "°C" based on regional settings
     * const rateUnit = pumpRateProperty.unit; // "mL/s"
     * ```
     */
    get unit(): string | undefined;
    /**
     * Gets display formatting options from the backend schema.
     *
     * @returns Display options object with formatting preferences (decimals, style, etc.)
     */
    get displayOptions(): import('../../services/config-bean').SchemaOptionsType | undefined;
    private getMeasureFromFormat;
    private getConverterFromFormat;
    private getDefaultUnit;
    getFormatterOptions(converter?: ConfigPropConverter): Intl.NumberFormat | null;
    private getConverter;
    /**
     * Updates the configuration property value with automatic unit conversion.
     *
     * @param value - The new value to set (in regional display units)
     *
     * @example Update Property
     * ```typescript
     * // Set temperature in Fahrenheit (regional unit)
     * await temperatureProperty.updateProperty(75.5);
     *
     * // Set pump rate in mL/s (regional unit)
     * await pumpRateProperty.updateProperty(1.2);
     * ```
     */
    updateProperty(value: ConfigPropertyTypes): Promise<void>;
}
declare const Registration: {
    registration: {
        "config-bean-prop-model": {
            class: typeof KosConfigPropertyImpl;
            singleton: boolean;
        };
    };
    type: string;
    factory: (id: string) => (options?: ConfigBeanPropOptions, parentId?: string) => KosConfigProperty<unknown>;
};
export default Registration;
//# sourceMappingURL=config-bean-prop-model.d.ts.map