aws-crt
Version:
NodeJS/browser bindings to the aws-c-* libraries
1,107 lines (1,106 loc) • 43.9 kB
TypeScript
/**
* @packageDocumentation
* @module mqtt5
*/
/**
* Data model for MQTT5 user properties.
*
* A user property is a name-value pair of utf-8 strings that can be added to mqtt5 packets.
*/
export interface UserProperty {
name: string;
value: string;
}
/**
* Server return code for connect attempts.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079) encoding values.
*/
export declare enum ConnectReasonCode {
/**
* Returned when the connection is accepted.
*/
Success = 0,
/**
* Returned when the server has a failure but does not want to specify a reason or none
* of the other reason codes apply.
*/
UnspecifiedError = 128,
/**
* Returned when data in the CONNECT packet could not be correctly parsed by the server.
*/
MalformedPacket = 129,
/**
* Returned when data in the CONNECT packet does not conform to the MQTT5 specification requirements.
*/
ProtocolError = 130,
/**
* Returned when the CONNECT packet is valid but was not accepted by the server.
*/
ImplementationSpecificError = 131,
/**
* Returned when the server does not support MQTT5 protocol version specified in the connection.
*/
UnsupportedProtocolVersion = 132,
/**
* Returned when the client identifier in the CONNECT packet is a valid string but not one that
* is allowed on the server.
*/
ClientIdentifierNotValid = 133,
/**
* Returned when the server does not accept the username and/or password specified by the client
* in the connection packet.
*/
BadUsernameOrPassword = 134,
/**
* Returned when the client is not authorized to connect to the server.
*/
NotAuthorized = 135,
/**
* Returned when the MQTT5 server is not available.
*/
ServerUnavailable = 136,
/**
* Returned when the server is too busy to make a connection. It is recommended that the client try again later.
*/
ServerBusy = 137,
/**
* Returned when the client has been banned by the server.
*/
Banned = 138,
/**
* Returned when the authentication method used in the connection is either not supported on the server or it does
* not match the authentication method currently in use in the CONNECT packet.
*/
BadAuthenticationMethod = 140,
/**
* Returned when the Will topic name sent in the connection packet is correctly formed, but is not accepted by
* the server.
*/
TopicNameInvalid = 144,
/**
* Returned when the connection packet exceeded the maximum permissible size on the server.
*/
PacketTooLarge = 149,
/**
* Returned when the quota limits set on the server have been met and/or exceeded.
*/
QuotaExceeded = 151,
/**
* Returned when the Will payload in the CONNECT packet does not match the specified payload format indicator.
*/
PayloadFormatInvalid = 153,
/**
* Returned when the server does not retain messages but the connection packet on the client had Will retain enabled.
*/
RetainNotSupported = 154,
/**
* Returned when the server does not support the QOS setting in the Will QOS in the connection packet.
*/
QosNotSupported = 155,
/**
* Returned when the server is telling the client to temporarily use another server instead of the one they
* are trying to connect to.
*/
UseAnotherServer = 156,
/**
* Returned when the server is telling the client to permanently use another server instead of the one they
* are trying to connect to.
*/
ServerMoved = 157,
/**
* Returned when the server connection rate limit has been exceeded.
*/
ConnectionRateExceeded = 159
}
/**
* Determines if a reason code represents a successful connect operation
*
* @param reasonCode reason code to check success for
*/
export declare function isSuccessfulConnectReasonCode(reasonCode: ConnectReasonCode): boolean;
/**
* Reason code inside DISCONNECT packets. Helps determine why a connection was terminated.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208) encoding values.
*/
export declare enum DisconnectReasonCode {
/**
* Returned when the remote endpoint wishes to disconnect normally. Will not trigger the publish of a Will message if a
* Will message was configured on the connection.
*
* May be sent by the client or server.
*/
NormalDisconnection = 0,
/**
* Returns that the client wants to disconnect but requires that the server publish the Will message configured
* on the connection.
*
* May only be sent by the client.
*/
DisconnectWithWillMessage = 4,
/**
* Returned when the connection was closed but the sender does not want to specify a reason or none
* of the other reason codes apply.
*
* May be sent by the client or the server.
*/
UnspecifiedError = 128,
/**
* Indicates the remote endpoint received a packet that does not conform to the MQTT specification.
*
* May be sent by the client or the server.
*/
MalformedPacket = 129,
/**
* Returned when an unexpected or out-of-order packet was received by the remote endpoint.
*
* May be sent by the client or the server.
*/
ProtocolError = 130,
/**
* Returned when a valid packet was received by the remote endpoint, but could not be processed by the current implementation.
*
* May be sent by the client or the server.
*/
ImplementationSpecificError = 131,
/**
* Returned when the remote endpoint received a packet that represented an operation that was not authorized within
* the current connection.
*
* May only be sent by the server.
*/
NotAuthorized = 135,
/**
* Returned when the server is busy and cannot continue processing packets from the client.
*
* May only be sent by the server.
*/
ServerBusy = 137,
/**
* Returned when the server is shutting down.
*
* May only be sent by the server.
*/
ServerShuttingDown = 139,
/**
* Returned when the server closes the connection because no packet from the client has been received in
* 1.5 times the KeepAlive time set when the connection was established.
*
* May only be sent by the server.
*/
KeepAliveTimeout = 141,
/**
* Returned when the server has established another connection with the same client ID as a client's current
* connection, causing the current client to become disconnected.
*
* May only be sent by the server.
*/
SessionTakenOver = 142,
/**
* Returned when the topic filter name is correctly formed but not accepted by the server.
*
* May only be sent by the server.
*/
TopicFilterInvalid = 143,
/**
* Returned when topic name is correctly formed, but is not accepted.
*
* May be sent by the client or the server.
*/
TopicNameInvalid = 144,
/**
* Returned when the remote endpoint reached a state where there were more in-progress QoS1+ publishes then the
* limit it established for itself when the connection was opened.
*
* May be sent by the client or the server.
*/
ReceiveMaximumExceeded = 147,
/**
* Returned when the remote endpoint receives a PUBLISH packet that contained a topic alias greater than the
* maximum topic alias limit that it established for itself when the connection was opened.
*
* May be sent by the client or the server.
*/
TopicAliasInvalid = 148,
/**
* Returned when the remote endpoint received a packet whose size was greater than the maximum packet size limit
* it established for itself when the connection was opened.
*
* May be sent by the client or the server.
*/
PacketTooLarge = 149,
/**
* Returned when the remote endpoint's incoming data rate was too high.
*
* May be sent by the client or the server.
*/
MessageRateTooHigh = 150,
/**
* Returned when an internal quota of the remote endpoint was exceeded.
*
* May be sent by the client or the server.
*/
QuotaExceeded = 151,
/**
* Returned when the connection was closed due to an administrative action.
*
* May be sent by the client or the server.
*/
AdministrativeAction = 152,
/**
* Returned when the remote endpoint received a packet where payload format did not match the format specified
* by the payload format indicator.
*
* May be sent by the client or the server.
*/
PayloadFormatInvalid = 153,
/**
* Returned when the server does not support retained messages.
*
* May only be sent by the server.
*/
RetainNotSupported = 154,
/**
* Returned when the client sends a QOS that is greater than the maximum QOS established when the connection was
* opened.
*
* May only be sent by the server.
*/
QosNotSupported = 155,
/**
* Returned by the server to tell the client to temporarily use a different server.
*
* May only be sent by the server.
*/
UseAnotherServer = 156,
/**
* Returned by the server to tell the client to permanently use a different server.
*
* May only be sent by the server.
*/
ServerMoved = 157,
/**
* Returned by the server to tell the client that shared subscriptions are not supported on the server.
*
* May only be sent by the server.
*/
SharedSubscriptionsNotSupported = 158,
/**
* Returned when the server disconnects the client due to the connection rate being too high.
*
* May only be sent by the server.
*/
ConnectionRateExceeded = 159,
/**
* Returned by the server when the maximum connection time authorized for the connection was exceeded.
*
* May only be sent by the server.
*/
MaximumConnectTime = 160,
/**
* Returned by the server when it received a SUBSCRIBE packet with a subscription identifier, but the server does
* not support subscription identifiers.
*
* May only be sent by the server.
*/
SubscriptionIdentifiersNotSupported = 161,
/**
* Returned by the server when it received a SUBSCRIBE packet with a wildcard topic filter, but the server does
* not support wildcard topic filters.
*
* May only be sent by the server.
*/
WildcardSubscriptionsNotSupported = 162
}
/**
* Determines if a reason code represents a successful disconnect operation
*
* @param reasonCode reason code to check success for
*/
export declare function isSuccessfulDisconnectReasonCode(reasonCode: DisconnectReasonCode): boolean;
/**
* Reason codes inside SUBACK packet payloads that specify the results for each subscription in the associated
* SUBSCRIBE packet.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178) encoding values.
*/
export declare enum SubackReasonCode {
/**
* Returned when the subscription was accepted and the maximum QOS sent will be QOS 0.
*/
GrantedQoS0 = 0,
/**
* Returned when the subscription was accepted and the maximum QOS sent will be QOS 1.
*/
GrantedQoS1 = 1,
/**
* Returned when the subscription was accepted and the maximum QOS sent will be QOS 2.
*/
GrantedQoS2 = 2,
/**
* Returned when the connection was closed but the sender does not want to specify a reason or none
* of the other reason codes apply.
*/
UnspecifiedError = 128,
/**
* Returned when the subscription was valid but the server did not accept it.
*/
ImplementationSpecificError = 131,
/**
* Returned when the client was not authorized to make the subscription on the server.
*/
NotAuthorized = 135,
/**
* Returned when the subscription topic filter was correctly formed but not allowed for the client.
*/
TopicFilterInvalid = 143,
/**
* Returned when the packet identifier was already in use on the server.
*/
PacketIdentifierInUse = 145,
/**
* Returned when a subscribe-related quota set on the server was exceeded.
*/
QuotaExceeded = 151,
/**
* Returned when the subscription's topic filter was a shared subscription and the server does not support
* shared subscriptions.
*/
SharedSubscriptionsNotSupported = 158,
/**
* Returned when the SUBSCRIBE packet contained a subscription identifier and the server does not support
* subscription identifiers.
*/
SubscriptionIdentifiersNotSupported = 161,
/**
* Returned when the subscription's topic filter contains a wildcard but the server does not support
* wildcard subscriptions.
*/
WildcardSubscriptionsNotSupported = 162
}
/**
* Determines if a reason code represents a successful subscribe operation
*
* @param reasonCode reason code to check success for
*/
export declare function isSuccessfulSubackReasonCode(reasonCode: SubackReasonCode): boolean;
/**
* Reason codes inside UNSUBACK packet payloads that specify the results for each topic filter in the associated
* UNSUBSCRIBE packet.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194) encoding values.
*/
export declare enum UnsubackReasonCode {
/**
* Returned when the unsubscribe was successful and the client is no longer subscribed to the topic filter on the server.
*/
Success = 0,
/**
* Returned when the topic filter did not match one of the client's existing subscriptions on the server.
*/
NoSubscriptionExisted = 17,
/**
* Returned when the unsubscribe of the topic filter was not accepted and the server does not want to specify a
* reason or none of the other reason codes apply.
*/
UnspecifiedError = 128,
/**
* Returned when the topic filter was valid but the server does not accept an unsubscribe for it.
*/
ImplementationSpecificError = 131,
/**
* Returned when the client was not authorized to unsubscribe from that topic filter on the server.
*/
NotAuthorized = 135,
/**
* Returned when the topic filter was correctly formed but is not allowed for the client on the server.
*/
TopicFilterInvalid = 143,
/**
* Returned when the packet identifier was already in use on the server.
*/
PacketIdentifierInUse = 145
}
/**
* Determines if a reason code represents a successful unsubscribe operation
*
* @param reasonCode reason code to check success for
*/
export declare function isSuccessfulUnsubackReasonCode(reasonCode: UnsubackReasonCode): boolean;
/**
* Reason code inside PUBACK packets that indicates the result of the associated PUBLISH request.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124) encoding values.
*/
export declare enum PubackReasonCode {
/**
* Returned when the (QoS 1) publish was accepted by the recipient.
*
* May be sent by the client or the server.
*/
Success = 0,
/**
* Returned when the (QoS 1) publish was accepted but there were no matching subscribers.
*
* May only be sent by the server.
*/
NoMatchingSubscribers = 16,
/**
* Returned when the (QoS 1) publish was not accepted and the receiver does not want to specify a reason or none
* of the other reason codes apply.
*
* May be sent by the client or the server.
*/
UnspecifiedError = 128,
/**
* Returned when the (QoS 1) publish was valid but the receiver was not willing to accept it.
*
* May be sent by the client or the server.
*/
ImplementationSpecificError = 131,
/**
* Returned when the (QoS 1) publish was not authorized by the receiver.
*
* May be sent by the client or the server.
*/
NotAuthorized = 135,
/**
* Returned when the topic name was valid but the receiver was not willing to accept it.
*
* May be sent by the client or the server.
*/
TopicNameInvalid = 144,
/**
* Returned when the packet identifier used in the associated PUBLISH was already in use.
* This can indicate a mismatch in the session state between client and server.
*
* May be sent by the client or the server.
*/
PacketIdentifierInUse = 145,
/**
* Returned when the associated PUBLISH failed because an internal quota on the recipient was exceeded.
*
* May be sent by the client or the server.
*/
QuotaExceeded = 151,
/**
* Returned when the PUBLISH packet's payload format did not match its payload format indicator property.
*
* May be sent by the client or the server.
*/
PayloadFormatInvalid = 153
}
/**
* Determines if a reason code represents a successful QoS 1 publish operation
*
* @param reasonCode reason code to check success for
*/
export declare function isSuccessfulPubackReasonCode(reasonCode: PubackReasonCode): boolean;
/**
* Optional property describing a PUBLISH payload's format.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111) encoding values.
*/
export declare enum PayloadFormatIndicator {
/**
* The payload is arbitrary binary data
*/
Bytes = 0,
/**
* The payload is a well-formed utf-8 string value.
*/
Utf8 = 1
}
/**
* Valid types for a PUBLISH packet's payload
*
* While the payload as input can be one of several types, the payload as output (via message receipt)
* will always be an ArrayBuffer of binary data.
*/
export type Payload = string | Record<string, unknown> | ArrayBuffer | ArrayBufferView;
/**
* Valid types for MQTT5 packet binary data fields (other than PUBLISH payload)
*/
export type BinaryData = ArrayBuffer | ArrayBufferView;
/**
* MQTT message delivery quality of service.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901234) encoding values.
*/
export declare enum QoS {
/**
* 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,
/**
* A level of service that ensures that the message arrives at the receiver at least once.
*/
AtLeastOnce = 1,
/**
* A level of service that ensures that the message arrives at the receiver exactly once.
*/
ExactlyOnce = 2
}
/**
* Configures how retained messages should be handled when subscribing with a topic filter that matches topics with
* associated retained messages.
*
* Enum values match [MQTT5 spec](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169) encoding values.
*/
export declare enum RetainHandlingType {
/**
* The server should always send all retained messages on topics that match a subscription's filter.
*/
SendOnSubscribe = 0,
/**
* The server should send retained messages on topics that match the subscription's filter, but only for the
* first matching subscription, per session.
*/
SendOnSubscribeIfNew = 1,
/**
* Subscriptions must not trigger any retained message publishes from the server.
*/
DontSend = 2
}
/**
* Packet type indicator that allows for basic polymorphism with user-received packets. Enum values
* match the mqtt spec's [packet type encoding](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901022) values.
*/
export declare enum PacketType {
Connect = 1,
Connack = 2,
Publish = 3,
Puback = 4,
Pubrec = 5,
Pubrel = 6,
Pubcomp = 7,
Subscribe = 8,
Suback = 9,
Unsubscribe = 10,
Unsuback = 11,
Pingreq = 12,
Pingresp = 13,
Disconnect = 14,
Auth = 15
}
/**
* Common interface for all packet types.
*/
export interface IPacket {
/**
* Always set on packets coming from the client to the user. Ignored if set on packets that come from the
* user to the client.
*
* The primary use is to allow users to distinguish between packets in polymorphic situations (for example,
* the result of a publish attempt which might be a Puback (QoS 1) or Pubcomp (QoS 2, when we support it).
*/
type?: PacketType;
}
/**
* Data model of an [MQTT5 PUBLISH](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901100) packet
*/
export interface PublishPacket extends IPacket {
/**
* Sent publishes - The topic this message should be published to.
*
* Received publishes - The topic this message was published to.
*
* See [MQTT5 Topic Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901107)
*/
topicName: string;
/**
* The payload of the publish message.
*
* See [MQTT5 Publish Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901119)
*/
payload?: Payload;
/**
* Sent publishes - The MQTT quality of service level this message should be delivered with.
*
* Received publishes - The MQTT quality of service level this message was delivered at.
*
* See [MQTT5 QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901103)
*/
qos: QoS;
/**
* True if this is a retained message, false otherwise.
*
* Always set on received publishes; on sent publishes, undefined implies false.
*
* See [MQTT5 Retain](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901104)
*/
retain?: boolean;
/**
* Property specifying the format of the payload data. The mqtt5 client does not enforce or use this
* value in a meaningful way.
*
* See [MQTT5 Payload Format Indicator](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901111)
*/
payloadFormat?: PayloadFormatIndicator;
/**
* Sent publishes - indicates the maximum amount of time allowed to elapse for message delivery before the server
* should instead delete the message (relative to a recipient).
*
* Received publishes - indicates the remaining amount of time (from the server's perspective) before the message would
* have been deleted relative to the subscribing client.
*
* If left undefined, indicates no expiration timeout.
*
* See [MQTT5 Message Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901112)
*/
messageExpiryIntervalSeconds?: number;
/**
* Sent publishes - (Node only) topic alias to use, if possible, when encoding this packet. Only used if the
* client's outbound topic aliasing mode is set to Manual.
*
* Received publishes - topic alias used by the server when transmitting the publish to the client.
*
* See [MQTT5 Topic Alias](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901113)
*/
topicAlias?: number;
/**
* Opaque topic string intended to assist with request/response implementations. Not internally meaningful to
* MQTT5 or this client.
*
* See [MQTT5 Response Topic](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901114)
*/
responseTopic?: string;
/**
* Opaque binary data used to correlate between publish messages, as a potential method for request-response
* implementation. Not internally meaningful to MQTT5.
*
* See [MQTT5 Correlation Data](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901115)
*/
correlationData?: BinaryData;
/**
* Sent publishes - ignored
*
* Received publishes - the subscription identifiers of all the subscriptions this message matched.
*
* See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901117)
*/
subscriptionIdentifiers?: Array<number>;
/**
* Property specifying the content type of the payload. Not internally meaningful to MQTT5.
*
* See [MQTT5 Content Type](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901118)
*/
contentType?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901116)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 PUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901121) packet
*/
export interface PubackPacket extends IPacket {
/**
* Success indicator or failure reason for the associated PUBLISH packet.
*
* See [MQTT5 PUBACK Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901124)
*/
reasonCode: PubackReasonCode;
/**
* Additional diagnostic information about the result of the PUBLISH attempt.
*
* See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901127)
*/
reasonString?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901128)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 CONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901033) packet.
*/
export interface ConnectPacket extends IPacket {
/**
* The maximum time interval, in seconds, that is permitted to elapse between the point at which the client
* finishes transmitting one MQTT packet and the point it starts sending the next. The client will use
* PINGREQ packets to maintain this property.
*
* If the responding CONNACK contains a keep alive property value, then that is the negotiated keep alive value.
* Otherwise, the keep alive sent by the client is the negotiated value.
*
* See [MQTT5 Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901045)
*/
keepAliveIntervalSeconds: number;
/**
* A unique string identifying the client to the server. Used to restore session state between connections.
*
* If left empty, the broker will auto-assign a unique client id. When reconnecting, the mqtt5 client will
* always use the auto-assigned client id.
*
* See [MQTT5 Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901059)
*/
clientId?: string;
/**
* A string value that the server may use for client authentication and authorization.
*
* See [MQTT5 User Name](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901071)
*/
username?: string;
/**
* Opaque binary data that the server may use for client authentication and authorization.
*
* See [MQTT5 Password](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901072)
*/
password?: BinaryData;
/**
* A time interval, in seconds, that the client requests the server to persist this connection's MQTT session state
* for. Has no meaning if the client has not been configured to rejoin sessions. Must be non-zero in order to
* successfully rejoin a session.
*
* If the responding CONNACK contains a session expiry property value, then that is the negotiated session expiry
* value. Otherwise, the session expiry sent by the client is the negotiated value.
*
* See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901048)
*/
sessionExpiryIntervalSeconds?: number;
/**
* If set to true, requests that the server send response information in the subsequent CONNACK. This response
* information may be used to set up request-response implementations over MQTT, but doing so is outside
* the scope of the MQTT5 spec and client.
*
* See [MQTT5 Request Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901052)
*/
requestResponseInformation?: boolean;
/**
* If set to true, requests that the server send additional diagnostic information (via response string or
* user properties) in DISCONNECT or CONNACK packets from the server.
*
* See [MQTT5 Request Problem Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901053)
*/
requestProblemInformation?: boolean;
/**
* Notifies the server of the maximum number of in-flight Qos 1 and 2 messages the client is willing to handle. If
* omitted, then no limit is requested.
*
* See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901049)
*/
receiveMaximum?: number;
/**
* Notifies the server of the maximum packet size the client is willing to handle. If
* omitted, then no limit beyond the natural limits of MQTT packet size is requested.
*
* See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901050)
*/
maximumPacketSizeBytes?: number;
/**
* A time interval, in seconds, that the server should wait (for a session reconnection) before sending the
* will message associated with the connection's session. If omitted, the server will send the will when the
* associated session is destroyed. If the session is destroyed before a will delay interval has elapsed, then
* the will must be sent at the time of session destruction.
*
* See [MQTT5 Will Delay Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901062)
*/
willDelayIntervalSeconds?: number;
/**
* The definition of a message to be published when the connection's session is destroyed by the server or when
* the will delay interval has elapsed, whichever comes first. If undefined, then nothing will be sent.
*
* See [MQTT5 Will](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901040)
*/
will?: PublishPacket;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901054)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 CONNACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901074) packet.
*/
export interface ConnackPacket extends IPacket {
/**
* True if the client rejoined an existing session on the server, false otherwise.
*
* See [MQTT5 Session Present](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901078)
*/
sessionPresent: boolean;
/**
* Indicates either success or the reason for failure for the connection attempt.
*
* See [MQTT5 Connect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901079)
*/
reasonCode: ConnectReasonCode;
/**
* A time interval, in seconds, that the server will persist this connection's MQTT session state
* for. If present, this value overrides any session expiry specified in the preceding CONNECT packet.
*
* See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901082)
*/
sessionExpiryInterval?: number;
/**
* The maximum amount of in-flight QoS 1 or 2 messages that the server is willing to handle at once. If omitted,
* the limit is based on the valid MQTT packet id space (65535).
*
* See [MQTT5 Receive Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901083)
*/
receiveMaximum?: number;
/**
* The maximum message delivery quality of service that the server will allow on this connection.
*
* See [MQTT5 Maximum QoS](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901084)
*/
maximumQos?: QoS;
/**
* Indicates whether the server supports retained messages. If undefined, retained messages are
* supported.
*
* See [MQTT5 Retain Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901085)
*/
retainAvailable?: boolean;
/**
* Specifies the maximum packet size, in bytes, that the server is willing to accept. If undefined, there
* is no limit beyond what is imposed by the MQTT spec itself.
*
* See [MQTT5 Maximum Packet Size](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901086)
*/
maximumPacketSize?: number;
/**
* Specifies a client identifier assigned to this connection by the server. Only valid when the client id of
* the preceding CONNECT packet was left empty.
*
* See [MQTT5 Assigned Client Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901087)
*/
assignedClientIdentifier?: string;
/**
* Specifies the maximum topic alias value that the server will accept from the client.
*
* See [MQTT5 Topic Alias Maximum](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901088)
*/
topicAliasMaximum?: number;
/**
* Additional diagnostic information about the result of the connection attempt.
*
* See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901089)
*/
reasonString?: string;
/**
* Indicates whether the server supports wildcard subscriptions. If undefined, wildcard subscriptions
* are supported.
*
* See [MQTT5 Wildcard Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901091)
*/
wildcardSubscriptionsAvailable?: boolean;
/**
* Indicates whether the server supports subscription identifiers. If undefined, subscription identifiers
* are supported.
*
* See [MQTT5 Subscription Identifiers Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901092)
*/
subscriptionIdentifiersAvailable?: boolean;
/**
* Indicates whether the server supports shared subscription topic filters. If undefined, shared subscriptions
* are supported.
*
* See [MQTT5 Shared Subscriptions Available](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901093)
*/
sharedSubscriptionsAvailable?: boolean;
/**
* Server-requested override of the keep alive interval, in seconds. If undefined, the keep alive value sent
* by the client should be used.
*
* See [MQTT5 Server Keep Alive](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901094)
*/
serverKeepAlive?: number;
/**
* A value that can be used in the creation of a response topic associated with this connection. MQTT5-based
* request/response is outside the purview of the MQTT5 spec and this client.
*
* See [MQTT5 Response Information](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901095)
*/
responseInformation?: string;
/**
* Property indicating an alternate server that the client may temporarily or permanently attempt
* to connect to instead of the configured endpoint. Will only be set if the reason code indicates another
* server may be used (ServerMoved, UseAnotherServer).
*
* See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901096)
*/
serverReference?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901090)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 DISCONNECT](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901205) packet.
*/
export interface DisconnectPacket extends IPacket {
/**
* Value indicating the reason that the sender is closing the connection
*
* See [MQTT5 Disconnect Reason Code](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901208)
*/
reasonCode: DisconnectReasonCode;
/**
* Requests a change to the session expiry interval negotiated at connection time as part of the disconnect. Only
* valid for DISCONNECT packets sent from client to server. It is not valid to attempt to change session expiry
* from zero to a non-zero value.
*
* See [MQTT5 Session Expiry Interval](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901211)
*/
sessionExpiryIntervalSeconds?: number;
/**
* Additional diagnostic information about the reason that the sender is closing the connection
*
* See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901212)
*/
reasonString?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901213)
*/
userProperties?: Array<UserProperty>;
/**
* Property indicating an alternate server that the client may temporarily or permanently attempt
* to connect to instead of the configured endpoint. Will only be set if the reason code indicates another
* server may be used (ServerMoved, UseAnotherServer).
*
* See [MQTT5 Server Reference](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901214)
*/
serverReference?: string;
}
/**
* Configures a single subscription within a Subscribe operation
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
export interface Subscription {
/**
* Topic filter to subscribe to
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
topicFilter: string;
/**
* Maximum QoS on which the subscriber will accept publish messages. Negotiated QoS may be different.
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
qos: QoS;
/**
* Should the server not send publishes to a client when that client was the one who sent the publish? If
* undefined, this is assumed to be false.
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
noLocal?: boolean;
/**
* Should messages sent due to this subscription keep the retain flag preserved on the message? If undefined,
* this is assumed to be false.
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
retainAsPublished?: boolean;
/**
* Should retained messages on matching topics be sent in reaction to this subscription? If undefined,
* this is assumed to be RetainHandlingType.SendOnSubscribe.
*
* See [MQTT5 Subscription Options](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901169)
*/
retainHandlingType?: RetainHandlingType;
}
/**
* Data model of an [MQTT5 SUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901161) packet.
*/
export interface SubscribePacket extends IPacket {
/**
* List of topic filter subscriptions that the client wishes to listen to
*
* See [MQTT5 Subscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901168)
*/
subscriptions: Array<Subscription>;
/**
* A positive integer to associate with all subscriptions in this request. Publish packets that match
* a subscription in this request should include this identifier in the resulting message.
*
* See [MQTT5 Subscription Identifier](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901166)
*/
subscriptionIdentifier?: number;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901167)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 SUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901171) packet.
*/
export interface SubackPacket extends IPacket {
/**
* A list of reason codes indicating the result of each individual subscription entry in the
* associated SUBSCRIBE packet.
*
* See [MQTT5 Suback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901178)
*/
reasonCodes: Array<SubackReasonCode>;
/**
* Additional diagnostic information about the result of the SUBSCRIBE attempt.
*
* See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901176)
*/
reasonString?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901177)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 UNSUBSCRIBE](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901179) packet.
*/
export interface UnsubscribePacket extends IPacket {
/**
* List of topic filters that the client wishes to unsubscribe from.
*
* See [MQTT5 Unsubscribe Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901185)
*/
topicFilters: Array<string>;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901184)
*/
userProperties?: Array<UserProperty>;
}
/**
* Data model of an [MQTT5 UNSUBACK](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901187) packet.
*/
export interface UnsubackPacket extends IPacket {
/**
* A list of reason codes indicating the result of unsubscribing from each individual topic filter entry in the
* associated UNSUBSCRIBE packet.
*
* See [MQTT5 Unsuback Payload](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901194)
*/
reasonCodes: Array<UnsubackReasonCode>;
/**
* Additional diagnostic information about the result of the UNSUBSCRIBE attempt.
*
* See [MQTT5 Reason String](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901192)
*/
reasonString?: string;
/**
* Set of MQTT5 user properties included with the packet.
*
* See [MQTT5 User Property](https://docs.oasis-open.org/mqtt/mqtt/v5.0/os/mqtt-v5.0-os.html#_Toc3901193)
*/
userProperties?: Array<UserProperty>;
}