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

export declare const MODEL_TYPE = "device-model";
export declare const TOPIC_CRITICAL_DATA_CHANGED = "/kos/criticalData/changed";
export declare const TOPIC_CRITICAL_DATA_AVAILABLE = "/kos/criticalData/available";
export declare const TOPIC_CRITICAL_DATA_UNAVAILABLE = "/kos/criticalData/unavailable";
/**
 * A model representing a device.
 * This is an alias for the implementation {@link DeviceModelImpl}.
 *
 * @category Model
 *
 */
export type DeviceModel = PublicModelInterface<DeviceModelImpl>;
export declare class DeviceModelImpl implements IKosDataModel, IKosIdentifiable {
    id: string;
    private logger;
    private _serialNumber;
    get serialNumber(): string | "unassigned";
    private _name;
    get name(): string | "unassigned";
    private _nodeId;
    get nodeId(): string | "unassigned";
    get nodeType(): string;
    get nodeName(): string;
    constructor(modelId: string, _options: DeviceOptions, context: KosCreationContext);
    /**
     * Update the model with new options.
     */
    updateModel(options: DeviceOptions): void;
    private loadDeviceData;
    private loadSerialNumber;
    /**
     * Handle critical data changes to load the serial number at the appropriate time.
     */
    handleCriticalDataChanged(): Promise<void>;
    init(): Promise<void>;
    /**
     * Load the device data.
     *
     * This method is called when the device model is loaded.
     *
     *
     */
    load(): Promise<void>;
}
//# sourceMappingURL=device-model.d.ts.map