/// <reference types="node" />
import { device } from 'aws-iot-device-sdk';
import { ISensor } from '../sensors/Sensor';
import { Logger } from './Log';
declare type DeviceListeners = {
    [key: string]: (args: {
        topic: string;
        payload: object;
    }) => void;
};
declare type DeviceTopics = {
    d2c: string;
    jobs: {
        request: string;
        receive: string;
        update: string;
    };
    shadow: {
        update: {
            _: string;
        };
    };
};
export declare type DeviceConfig = {
    deviceId: string;
    caCert: Buffer | string;
    clientCert: Buffer | string;
    privateKey: Buffer | string;
    endpoint: string;
    appFwVersion: string;
    mqttMessagesPrefix: string;
    stage: string;
    tenantId: string;
};
export declare class NrfDevice {
    readonly listeners: DeviceListeners;
    readonly topics: DeviceTopics;
    readonly id: string;
    private readonly client;
    private readonly sensors;
    private readonly log;
    constructor(deviceId: string, mqttMessagesPrefix: string, stage: string, tenantId: string, client: device, sensors: Map<string, ISensor>, log: Logger);
    registerListener(topic: string, callback: any): void;
    unregisterListener(topic: string): void;
    sendMessage(timestamp: number, payload: object): Promise<void>;
    subscribe(topic: string): Promise<void>;
    publish(topic: string, payload: object): Promise<void>;
    initShadow(appVersion?: string): Promise<void>;
}
export {};
