export interface TGenericDeviceProperty {
    name: string;
    title?: string;
    mapper?(value: unknown): unknown;
}
export interface TGenericDeviceConfig {
    address: string;
    token: string;
    properties: TGenericDeviceProperty[];
}
interface IDeviceInfo {
    mac: string;
    fw_ver: string;
    hw_ver: string;
    model: string;
}
export declare type TListenerCallback<T = unknown> = (value: T) => void;
export declare class GenericDevice {
    properties: object;
    private connectedDevice;
    private listeners;
    private propertiesConfigMap;
    private config;
    info: IDeviceInfo | undefined;
    constructor({ address, token, properties }: TGenericDeviceConfig);
    private getDevice;
    protected subscribe(property: string, cb: TListenerCallback): void;
    private notifyUpdate;
    private setProperties;
    private loadProperties;
    protected fetchProperty(propertyTitle: string | string[]): Promise<void>;
    protected fetchProperties(): Promise<void>;
    protected call<T extends string>(method: string, params?: unknown[], refetch?: T[]): Promise<unknown>;
}
export {};
//# sourceMappingURL=GenericDevice.d.ts.map