/// <reference types="node" />
import { BaseEmitter, ICommand, IDataEvent, IExecutionResult, ISettings, ITraceableAction } from '@curium.rocks/data-emitter-base';
import { IStatusEvent } from '@curium.rocks/data-emitter-base/build/src/dataEmitter';
import { RemoteInfo, Socket } from 'dgram';
/**
 * UDP Data Emitter, this emits messages received directly without any modification
 */
export declare class UDPEmitter extends BaseEmitter {
    private socket;
    private lastBuffer?;
    /**
     *
     * @param {string} id unique identifier for emitter
     * @param {string} name display name of emitter
     * @param {string} desc longer description of emitter
     * @param {Socket} udpSocket udp socket object
     */
    constructor(id: string, name: string, desc: string, socket: Socket);
    /**
     * Bind the socket event handlers
     */
    protected bindHandlers(): void;
    /**
     * Release event handlers
     */
    protected releaseHandlers(): void;
    /**
     * error handler
     * @param {Error} error
     */
    protected onError(error: Error): void;
    /**
     *
     * @param {Buffer} message received message
     * @param {RemoteInfo} info
     */
    protected onMessage(message: Buffer, info: RemoteInfo): void;
    /**
     * handler for when socket enters listening state
     */
    protected onListening(): void;
    /**
     * Apply settings
     * @param {ISettings} settings
     * @return {IExecutionResult}
     */
    applySettings(settings: ISettings & ITraceableAction): Promise<IExecutionResult>;
    /**
     * send a command
     * @param {ICommand} command
     */
    sendCommand(command: ICommand): Promise<IExecutionResult>;
    /**
     * Probe the latest status
     * @return {Promise<ISatusEvent>}
     */
    probeStatus(): Promise<IStatusEvent>;
    /**
     * Probe the latest information
     * @return {Promise<IDataEvent>}
     */
    probeCurrentData(): Promise<IDataEvent>;
    /**
     * Return meta data about emitter
     * @return {unknown}
     */
    getMetaData(): unknown;
    /**
     * Clean up resources
     */
    dispose(): void;
}
