import { KosStateProp, StatePropOptions } from './types';
import { StatePropertyTypes } from '../types';
import { StateBeanModel } from '../state-bean/types';
import { PublicModelInterface } from '../../../core/types';
import { IKosModelLogger, KosContextLogger, KosCreationContext } from '../../../core';

export declare const MODEL_TYPE = "state-prop-model";
/**
 * StateProp - Focused access to individual state properties with dependency on StateBean.
 *
 * The StateProp model provides targeted access to a single property within a StateBean,
 * offering a focused interface for components or services that only need to monitor
 * specific state values. This model automatically manages its dependency on the underlying
 * StateBean and provides reactive access to individual property values.
 *
 * ## Key Features
 * - **Single Property Focus** - Access one specific property from a StateBean path
 * - **Automatic StateBean Dependency** - Manages StateBean dependency transparently
 * - **Type-safe Value Access** - Strongly typed property value with generic support
 * - **Reactive Updates** - Automatically updates when underlying StateBean changes
 * - **Simplified Interface** - Clean `.value` accessor for property values
 * - **String Conversion** - Built-in `toString()` method for display purposes
 *
 * ## StateBean Integration
 * StateProp models automatically create and manage dependencies on StateBean models:
 * - **Automatic Dependency** - Creates StateBean with matching path automatically
 * - **Shared StateBean** - Multiple StateProp models can share the same StateBean
 * - **Lifecycle Management** - Proper initialization and cleanup of dependencies
 * - **Real-time Synchronization** - Inherits WebSocket updates from StateBean
 *
 * ## Common Use Cases
 * - **Single Value Components** - React components that only need one state property
 * - **Conditional Logic** - Enable/disable functionality based on specific state
 * - **Status Indicators** - Display individual status flags or measurements
 * - **Property Validation** - Monitor specific properties for validation rules
 * - **Focused Updates** - Reduce re-renders by tracking only needed properties
 * - **Service Dependencies** - Services that depend on specific state values
 *
 * @interface
 * @example Basic Usage
 * ```typescript
 * const deviceOnline = StateProp.instance('device-online')
 *   .options({
 *     path: 'device.operational.status',
 *     attribute: 'online'
 *   })
 *   .build();
 *
 * // Access focused property value with type safety
 * const isOnline = deviceOnline.value as boolean;
 * console.log(`Status: ${deviceOnline.toString()}`);
 * ```
 *
 * @group KOS Model
 * @category State Management
 * @useDeclaredType
 *
 * @see {@link StatePropOptions} - Configuration options for StateProp model
 * @see {@link StatePropertyTypes} - Supported property value types
 * @see {@link StateBean} - Underlying state collection model
 * @see {@link StateBeanOptions} - StateBean configuration options
 */
export type StateProp<T extends StatePropertyTypes = StatePropertyTypes> = PublicModelInterface<StatePropModelImpl<T>>;
/**
 * @ignore
 * @internal
 */
export declare class StatePropModelImpl<T extends StatePropertyTypes = StatePropertyTypes> implements KosStateProp<T>, IKosModelLogger {
    /** Unique identifier for the model instance */
    id: string;
    /** State path being monitored (same as dependent StateBean) */
    path: string;
    /** Specific attribute name to access within the state path */
    attribute: string;
    /** Context logger for debugging and diagnostics */
    logger: KosContextLogger;
    /** Automatic dependency on StateBean for the specified path */
    stateBean: StateBeanModel;
    constructor(modelId: string, options: StatePropOptions, context: KosCreationContext);
    /** The current value of the specific attribute, with type safety */
    get value(): T | undefined;
    /**
     * @internal
     */
    init(): Promise<void>;
    /**
     * @internal
     */
    load(): Promise<void>;
    /**
     * Converts the current property value to string for display purposes.
     * @returns String representation of the property value, or empty string if undefined
     */
    toString(): string;
}
//# sourceMappingURL=state-prop-model.d.ts.map