import { EventEmitter } from "events";
import { KNXBusInterface } from "../types";
import { CEMIFrame } from "../frames";
export declare class KNXNetTunnelingImpl extends EventEmitter implements KNXBusInterface {
    private socket;
    private isConnected;
    private readonly options;
    private connectionId;
    private sequenceCounter;
    private heartbeatTimer;
    private connectionTimer;
    private serverEndpoint;
    private localEndpoint;
    private readonly busmonitorMode;
    constructor(serverAddress: string, serverPort?: number, localPort?: number, busmonitorMode?: boolean);
    open(): Promise<void>;
    send(frame: CEMIFrame): Promise<void>;
    close(): Promise<void>;
    /**
     * Check if this connection is in busmonitor mode
     */
    isBusmonitorMode(): boolean;
    on(event: "recv", listener: (frame: CEMIFrame) => void): this;
    on(event: "error", listener: (error: Error) => void): this;
    private setupSocket;
    private establishConnection;
    private createConnectRequestFrame;
    private createTunnelingRequestFrame;
    private createHPAI;
    private parseHPAI;
    private isConnectResponse;
    private isTunnelingAck;
    private parseConnectResponse;
    private parseTunnelingAck;
    private handleIncomingMessage;
    private handleTunnelingRequest;
    private sendTunnelingAck;
    private handleConnectionStateRequest;
    private sendConnectionStateResponse;
    private sendDisconnectRequest;
    private startHeartbeat;
    private sendConnectionStateRequest;
    private cleanup;
}
//# sourceMappingURL=tunneling.d.ts.map