/// <reference types="node" />
export declare const COMMAND_CONNECT_HELLO: Buffer;
export declare enum ConnectionState {
    Closed = 0,
    SynSent = 1,
    Established = 2,
    /** Disconnected by the user (by calling `disconnect()`) */
    Disconnected = 3
}
export declare enum PacketFlag {
    AckRequest = 1,
    NewSessionId = 2,
    IsRetransmit = 4,
    RetransmitRequest = 8,
    AckReply = 16
}
export interface OutboundPacketInfo {
    payloadLength: number;
    payloadHex: string;
    trackingId: number;
}
export declare class AtemSocketChild {
    private readonly _debugBuffers;
    private _connectionState;
    private _reconnectTimer;
    private _retransmitTimer;
    private _nextSendPacketId;
    private _sessionId;
    private _address;
    private _port;
    private _socket;
    private _lastReceivedAt;
    private _lastReceivedPacketId;
    private _inFlight;
    private _ackTimer;
    private _receivedWithoutAck;
    private readonly onDisconnect;
    private readonly onLog;
    private readonly onCommandsReceived;
    private readonly onPacketsAcknowledged;
    constructor(options: {
        address: string;
        port: number;
        debugBuffers: boolean;
    }, onDisconnect: () => Promise<void>, onLog: (message: string) => Promise<void>, onCommandReceived: (payload: Buffer, packetId: number) => Promise<void>, onCommandAcknowledged: (ids: Array<{
        packetId: number;
        trackingId: number;
    }>) => Promise<void>);
    private startTimers;
    connect(address: string, port: number): Promise<void>;
    disconnect(): Promise<void>;
    private _clearTimers;
    private restartConnection;
    private log;
    sendPackets(packets: OutboundPacketInfo[]): void;
    private sendPacket;
    private _recreateSocket;
    private _closeSocket;
    private _createSocket;
    private _isPacketCoveredByAck;
    private _receivePacket;
    private _sendPacket;
    private _sendOrQueueAck;
    private _sendAck;
    private _retransmitFrom;
    private _triggerRetransmitTimer;
    private _checkForRetransmit;
}
//# sourceMappingURL=atemSocketChild.d.ts.map