import { RecordData16, UserData28 } from './helper/utils';
import * as dgram from "node:dgram";
interface DeviceInfo {
    userCounts: number;
    logCounts: number;
    logCapacity: number;
}
interface ChunkedDataResponse {
    data: Buffer | null;
    err: Error | null;
}
export declare class ZUDP {
    private ip;
    private port;
    private timeout;
    socket: dgram.Socket | null;
    private sessionId;
    private replyId;
    private inport;
    private comm_key;
    constructor(ip: string, port: number, timeout: number, inport: number, comm_key?: number);
    createSocket(cbError?: (err: Error) => void, cbClose?: (type: string) => void): Promise<dgram.Socket>;
    connect(): Promise<boolean>;
    closeSocket(): Promise<unknown>;
    private writeMessage;
    private requestData;
    executeCmd(command: number, data: string | Buffer): Promise<Buffer>;
    private sendChunkRequest;
    readWithBuffer(reqData: Buffer, cb?: ((progress: number, total: number) => void) | null): Promise<ChunkedDataResponse>;
    private handleChunkedData;
    getUsers(): Promise<{
        data: UserData28[];
    }>;
    getAttendances(callbackInProcess?: (progress: number, total: number) => void): Promise<{
        data: RecordData16[];
        err: Error;
    }>;
    freeData(): Promise<boolean>;
    getInfo(): Promise<DeviceInfo>;
    getTime(): Promise<Date>;
    setTime(tm: Date | string): Promise<boolean>;
    clearAttendanceLog(): Promise<Buffer>;
    clearData(): Promise<Buffer>;
    disableDevice(): Promise<boolean>;
    enableDevice(): Promise<boolean>;
    disconnect(): Promise<void>;
    getRealTimeLogs(cb?: (log: any) => void): Promise<void>;
}
export default ZUDP;
