import { StorageDeviceOptions } from './types';
import { IKosDataModel, IKosIdentifiable, KosCreationContext, PublicModelInterface } from '../../../core';

export declare const MODEL_TYPE = "storage-device-model";
/**
 * StorageDevice - Manages individual USB/external storage device information and state.
 *
 * The StorageDevice model represents individual storage devices (USB drives, SD cards,
 * external drives) connected to the KOS system. It tracks device hardware information,
 * mount status, and provides access to device metadata including vendor, model, runtime
 * statistics, and file system details.
 *
 * ## Key Features
 * - **Hardware Information** - Vendor, model, and system path details
 * - **Mount Management** - Track mount directory and removal status
 * - **Runtime Statistics** - Device runtime and usage metrics
 * - **Node Awareness** - Multi-node device distribution tracking
 * - **File System Integration** - Label and mount point management
 * - **Parent-Aware Architecture** - Designed for container model management
 *
 * ## Device Properties
 * Storage devices expose comprehensive hardware and state information:
 * - **Physical Details**: vendor, model, syspath for hardware identification
 * - **Mount Information**: mountDir, label for file system access
 * - **Status Tracking**: removed flag, local/remote node distribution
 * - **Runtime Metrics**: runTimeMs for usage analytics
 *
 * ## Common Use Cases
 * - **Storage Management UI** - Display available storage devices and capacity
 * - **File Transfer Operations** - Access mount points for file operations
 * - **System Monitoring** - Track device insertion/removal events
 * - **Backup Management** - Identify backup destination devices
 * - **Multi-node Systems** - Manage storage across distributed KOS nodes
 * - **Device Diagnostics** - Runtime statistics and health monitoring
 *
 * @interface
 * @example Basic Usage
 * ```typescript
 * const usbDrive = StorageDevice.instance('usb-drive-1')
 *   .options({
 *     mountDir: '/media/usb1',
 *     vendor: 'SanDisk',
 *     model: 'Ultra USB 3.0',
 *     label: 'BACKUP_DRIVE',
 *     nodeId: 'primary',
 *     local: true,
 *     removed: false,
 *     runTimeMs: 1800000,
 *     syspath: '/sys/devices/usb1'
 *   })
 *   .build();
 *
 * // Access device properties
 * console.log(`${usbDrive.vendor} ${usbDrive.model} at ${usbDrive.mountDir}`);
 * ```
 *
 * @group KOS Model
 * @category Device Management
 * @useDeclaredType
 *
 * @see {@link StorageDeviceOptions} - Configuration options for StorageDevice instances
 * @see {@link StorageDeviceContainerModel} - Container for managing multiple storage devices
 * @see {@link StorageDeviceResponse} - API response structure for device data
 */
export type StorageDevice = PublicModelInterface<StorageDeviceModelImpl>;
export type StorageDeviceModel = PublicModelInterface<StorageDeviceModelImpl>;
/**
 * @ignore
 * @internal
 */
export declare class StorageDeviceModelImpl implements IKosDataModel, IKosIdentifiable {
    /** Unique identifier for the storage device model instance */
    id: string;
    /** File system mount directory path where device is accessible */
    mountDir: string;
    /** Whether the device has been physically removed from the system */
    removed: boolean;
    /** Device manufacturer name (e.g., 'SanDisk', 'Western Digital') */
    vendor: string;
    /** Total device runtime in milliseconds for usage tracking */
    runTimeMs: number;
    /** Device model name or identifier (e.g., 'Ultra USB 3.0', 'My Passport') */
    model: string;
    /** KOS node identifier where this device is connected */
    nodeId: string;
    /** Whether the device is connected to the local node */
    local: boolean;
    /** File system label or volume name for the device */
    label: string;
    /** System path for hardware identification and low-level access */
    syspath: string;
    /** Context logger for debugging and diagnostics */
    private logger;
    constructor(modelId: string, options: StorageDeviceOptions, context: KosCreationContext);
    /**
     * Updates the storage device model with new configuration options.
     * @param options New configuration options to apply to the device
     */
    updateModel(options: StorageDeviceOptions): void;
    /**
     * @internal
     */
    init(): Promise<void>;
    /**
     * @internal
     */
    load(): Promise<void>;
}
//# sourceMappingURL=storage-device-model.d.ts.map