/// <reference types="node" />
import { EventEmitter } from 'events';
import { SenderSettings } from './types/types';
import type { IecType } from 'iec-61131-3';
export declare class Sender extends EventEmitter {
    private debug;
    private debugD;
    private debugIO;
    /**
     * Active debug level
     *  - 0 = no debugging
     *  - 1 = basic debugging (same as $env:DEBUG='codesys-client')
     *  - 2 = detailed debugging (same as $env:DEBUG='codesys-client,codesys-client:details')
     *  - 3 = full debugging (same as $env:DEBUG='codesys-client,codesys-client:details,codesys-client:raw-data')
     */
    debugLevel: number;
    /**
     * Active settings
     */
    settings: SenderSettings;
    /**
     * Next free counter number to use
     */
    private counterNumber;
    /**
     * Constructor
     *
     * @param settings Settings object
     */
    constructor(settings?: SenderSettings);
    /**
     * Sets debugging using debug package on/off.
     * Another way for environment variable DEBUG:
     *  - 0 = no debugging
     *  - 1 = basic debugging (same as $env:DEBUG='codesys-client-sender')
     *  - 2 = detailed debugging (same as $env:DEBUG='codesys-client-sender,codesys-client-sender:details')
     *  - 3 = full debugging (same as $env:DEBUG='codesys-client-sender,codesys-client-sender:details,codesys-client-sender:raw-data')
     *
     * @param level 0 = none, 1 = basic, 2 = detailed, 3 = detailed + raw data
     */
    setDebugging(level: number): void;
    /**
     * Sends given data to address and port provided in settings
     *
     * @param listID List ID ("Listidentifier") of the network variable list (NVL)
     * @param dataType IEC-61131-3 data type schema of the provided data (like iec.INT, iec.STRUCT, etc.)
     * @param data Data as object to be sent, must match dataType schema
     * @returns
     */
    send(listID: number, dataType: IecType, data: unknown): Promise<void>;
    /**
     * Creates header byte Buffer from object
     * @param data Packet object
     * @returns Buffer with raw header data
     */
    private createPacketHeader;
    /**
     * Helper for sending data
     * @param client UDP client instance
     * @param packet Packet to send
     * @returns
     */
    private sendPacket;
}
