import { IClientOptions, MqttClient } from "mqtt";
import { HomieTopologyRoot, IHomieTopologyConfiguration } from "./framework";
import HomieNode, { IHomieNodeConfiguration } from "./HomieNode";
export interface IMqttConfiguration {
    base_topic?: string;
    client?: IClientOptions;
    connectionFactory?: (options: IClientOptions) => MqttClient;
}
export interface IHomieDeviceConfiguration extends IHomieTopologyConfiguration {
    mqtt?: IMqttConfiguration;
    settings?: unknown;
    ip?: string | null;
    mac?: string | null;
    statsInterval?: number;
    firmwareName?: string;
    firmwareVersion?: string;
}
export declare const DefaultConfiguration: IHomieDeviceConfiguration;
export default class HomieDevice extends HomieTopologyRoot {
    private static interval$;
    private startTime$;
    private nodes$;
    private statsInterval$;
    private mqttClient$;
    private interval$;
    constructor(config: IHomieDeviceConfiguration | string);
    node: (config: IHomieNodeConfiguration) => HomieNode;
    setup: () => void;
    end: () => void;
    onConnect: () => void;
    onDisconnect: () => void;
    onOffline: () => void;
    onError: (err: Error) => void;
    onStatsInterval(): void;
    private onMessage;
}
//# sourceMappingURL=HomieDevice.d.ts.map