import { ModelDelta, DeltaStatus } from '../base/model-delta';
import { SensorGraph } from './sensorgraph';
import { Property, PropertyDictionary } from './property';
import { DataBlock } from './datablock';
export interface DeviceDictionary {
    [index: string]: Device;
}
export declare class Device {
    [key: string]: any;
    id: number;
    slug: string;
    gid: string;
    label: string;
    template: string;
    rawData: any;
    project: string;
    propertyMap: PropertyDictionary;
    properties: Array<Property>;
    sensorGraphSlug: string;
    isModified: boolean;
    active: boolean;
    drifterMode: boolean;
    org?: string;
    externalId?: string;
    state?: string;
    lat?: number;
    lon?: number;
    busy: boolean;
    sg?: SensorGraph;
    dataBlock?: DataBlock;
    constructor(data?: any);
    toJson(): any;
    getPatchPayload(): any;
    addProperties(properties: Array<Property>): void;
    getProperty(name: string): Property;
    isDataBlock(): boolean;
    getStateDisplay(): string;
}
export declare abstract class DeviceDelta extends ModelDelta<Device> {
}
export declare class DeviceLocationDelta extends DeviceDelta {
    private oldLat;
    private oldLng;
    private newLat;
    private newLng;
    static ClassName: string;
    constructor(oldLat: number, oldLng: number, newLat: number, newLng: number, slug: string, guid?: string);
    check(device: Device): DeltaStatus;
    apply(device: Device): void;
    getPatch(): {
        lat: number;
        lon: number;
    };
    serializeArguments(): {};
    static Deserialize(guid: string, slug: string, serializedArgs: any): DeviceLocationDelta;
}
export declare class DeviceDrifterDelta extends DeviceDelta {
    private oldDrifter;
    private newDrifter;
    static ClassName: string;
    constructor(oldDrifter: boolean, newDrifter: boolean, slug: string, guid?: string);
    check(device: Device): DeltaStatus;
    apply(device: Device): void;
    getPatch(): {};
    serializeArguments(): {};
    static Deserialize(guid: string, slug: string, serializedArgs: any): DeviceDrifterDelta;
}
export declare class DeviceLabelDelta extends DeviceDelta {
    private oldLabel;
    private newLabel;
    static ClassName: string;
    constructor(oldLabel: string, newLabel: string, slug: string, guid?: string);
    check(device: Device): DeltaStatus;
    apply(device: Device): void;
    getPatch(): {};
    serializeArguments(): {};
    static Deserialize(guid: string, slug: string, serializedArgs: any): DeviceLabelDelta;
}
