/**
 * @author DiZed Team
 * @copyright Copyright (c) DiZed Team (https://github.com/di-zed/)
 */
/**
 * MQTT Interface.
 * https://www.home-assistant.io/integrations/mqtt/
 *
 * @interface
 */
export interface MqttInterface {
    /**
     * Subscribe to the Topic by default.
     */
    subscribeTopic: string;
    /**
     * Topics.
     */
    topics: MqttTopicInterface[];
}
/**
 * MQTT Topic Interface.
 */
export interface MqttTopicInterface {
    /**
     * Device Type.
     */
    deviceType: string;
    /**
     * Name of the State Topic.
     */
    stateTopic: string;
    /**
     * Name of the Config Topic.
     */
    configTopic: string;
    /**
     * Name of the Available Topic.
     */
    availableTopic: 'online' | 'offline';
    /**
     * Command Topics.
     */
    commandTopics: MqttCommandTopicInterface[];
}
/**
 * MQTT Command Topic Interface.
 */
export interface MqttCommandTopicInterface {
    /**
     * Capability.
     */
    capability?: MqttCommandTopicCapabilityInterface;
    /**
     * Property.
     */
    property?: MqttCommandTopicPropertyInterface;
    /**
     * Name of the Command Topic.
     */
    topic: string;
    /**
     * Name of key for the scope of values in the Config topic.
     */
    topicConfigKey?: string;
    /**
     * Name of keys for the same value in the State topic.
     */
    topicStateKeys?: string[];
    /**
     * Message Value Mapping [MQTT Message => Alice Value].
     */
    messageValueMapping?: {
        [key: string]: any;
    };
}
/**
 * MQTT Command Topic Capability Interface.
 */
export interface MqttCommandTopicCapabilityInterface {
    /**
     * Capability Type.
     */
    type: string;
    /**
     * Capability State Instance.
     */
    stateInstance: string;
}
/**
 * MQTT Command Topic Property Interface.
 */
export interface MqttCommandTopicPropertyInterface {
    /**
     * Property Type.
     */
    type: string;
    /**
     * Property State Instance.
     */
    stateInstance: string;
}
