/// <reference types="node" />
import { Optional } from '../types';
import { MessageHandler } from './mqtt.client';
import { MqttClientFactory, MqttCredentials, MqttDeserializeMessage, MqttMessageHandler } from './mqtt.types';
export declare class MqttService<IotMessageType> implements MessageHandler {
    private readonly deserializer;
    private readonly broker;
    private readonly factory;
    private readonly logger;
    private client;
    private messageHandler;
    private readonly subscriptions;
    private readonly subscriptionGrants;
    constructor(deserializer: MqttDeserializeMessage<IotMessageType>, broker: string, factory: MqttClientFactory);
    protected deserializeMessage(message: string | Buffer): IotMessageType;
    handleMessage(topic: string, payload: string | Buffer): Promise<void>;
    publish(topic: string, payload: string | Buffer): Promise<void>;
    connect(credentials: MqttCredentials, messageHandler: MqttMessageHandler<IotMessageType>): Promise<void>;
    disconnect(): Promise<void>;
    private createClientAndConnect;
    private doSubscribe;
    subscribe(topic: Optional<string>): Promise<void>;
}
//# sourceMappingURL=mqtt.service.d.ts.map