/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */
/**
 * MQTT Quality of Service
 * [MQTT-4.3]
 *
 * @module aws-crt
* @category MQTT
 */
export declare enum QoS {
    /**
     * QoS 0 - At most once delivery
     * The message is delivered according to the capabilities of the underlying network.
     * No response is sent by the receiver and no retry is performed by the sender.
     * The message arrives at the receiver either once or not at all.
     */
    AtMostOnce = 0,
    /**
     * QoS 1 - At least once delivery
     * This quality of service ensures that the message arrives at the receiver at least once.
     */
    AtLeastOnce = 1,
    /**
     * QoS 2 - Exactly once delivery

     * This is the highest quality of service, for use when neither loss nor
     * duplication of messages are acceptable. There is an increased overhead
     * associated with this quality of service.

     * Note that, while this client supports QoS 2, the AWS IoT Core service
     * does not support QoS 2 at time of writing (May 2020).
     */
    ExactlyOnce = 2
}
/**
 * Possible types of data to send via publish or receive via subscription
 *
 * @module aws-crt
 * @category MQTT
 */
export declare type Payload = String | Object | DataView;
/**
 * Every request sent returns an MqttRequest
 *
 * @module aws-crt
 * @category MQTT
 */
export interface MqttRequest {
    /** Packet ID being acknowledged when the request completes */
    packet_id?: number;
}
/**
 * Subscription SUBACK result
 *
 * @module aws-crt
 * @category MQTT
 */
export interface MqttSubscribeRequest extends MqttRequest {
    /** Topic filter of the SUBSCRIBE packet being acknowledged */
    topic: string;
    /** Maximum QoS granted by the server. This may be lower than the requested QoS. */
    qos: QoS;
    /** If an error occurred, the error code */
    error_code?: number;
}
/**
 * A Will message is published by the server if a client is lost unexpectedly.
 *
 * The Will message is stored on the server when a client connects.
 * It is published if the client connection is lost without the server
 * receiving a DISCONNECT packet.
 *
 * [MQTT - 3.1.2 - 8]
 *
 * @module aws-crt
 * @category MQTT
 */
export declare class MqttWill {
    /** Topic to publish Will message on. */
    readonly topic: string;
    /** QoS used when publishing the Will message. */
    readonly qos: QoS;
    /** Content of Will message. */
    readonly payload: Payload;
    /** Whether the Will message is to be retained when it is published. */
    readonly retain: boolean;
    constructor(
    /** Topic to publish Will message on. */
    topic: string, 
    /** QoS used when publishing the Will message. */
    qos: QoS, 
    /** Content of Will message. */
    payload: Payload, 
    /** Whether the Will message is to be retained when it is published. */
    retain?: boolean);
}
