/// <reference types="node" />
import { EventEmitter } from 'events';
export declare class CircuitAddressingInterface extends EventEmitter {
    circuit: string;
    name: string;
    operationInProgress: boolean;
    outTopic: string;
    private addressingInProgress;
    devices: Array<any>;
    private addresses;
    private populatedDeviceIndex;
    private expNoDevices;
    private addressingTimeout;
    private scanningTimeout;
    private scanningTimeoutTime;
    private addressingTimeoutTime;
    private queryingLoop;
    private ungroupingLoop;
    private daliMaster;
    constructor(addrTimeoutTime: any, scanningTimeoutTime: any, expectedDevices: any, conID: any, getNode: any);
    /**
     * Send a notification
     * @param message - Message sent with notification
     */
    private updateStatus;
    /**
     * Ungroup all DALI devices
     */
    ungroup(): void;
    /**
     * Swap the short addresses of two DALI devices
     * @param addr1 - Current short address of device 1
     * @param addr2 - Current short address of device 2
     */
    swap(addr1: any, addr2: any): void;
    /**
     * Delete the short address of a DALI device
     * @param addr - The current short address of the device to delete
     */
    del(addr: any): void;
    /**
     * Perform full addressing on DALI circuit
     */
    addressCircuit(): void;
    /**
     * Add any unaddressed devices to an already addressed circuit
     */
    addToCircuit(): void;
    /**
     * Finish an addressing process
     */
    private finishAddressing;
    /**
     * Scan a circuit for all devices with a defined short address
     */
    scanCircuit(): void;
    /**
     * Finish a scan process
     */
    private finishScan;
    /**
     * Gather and store query responses when querying device types
     */
    private processFetchTypeResponse;
    /**
     * Query device types of all newly added devices
     */
    private queryTypes;
    /**
     * Finsih a querying device types process
     */
    private finishQuerying;
    /**
     * Start a timeout to ensure any given process continues for a maximum time
     */
    private startScanningTimeout;
    /**
     * Stop function timeout if a given process finishes
     */
    private stopScanningTimeout;
    /**
     * Start a monitor to detect when no more devices are responding during an addressing process
     */
    private startAddressingTimeout;
    /**
     * Stop the addressing monitor when addressing has finished
     */
    private stopAddressingTimeout;
    /**
     * On node close: clear all intervals and timeouts, stop listening to events
     */
    close(): void;
}
