import { ZTCP } from './ztcp';
import { ZUDP } from './zudp';
import { User } from './models/User';
import { Finger } from './models/Finger';
import { Attendance } from "./models/Attendance";
import { RecordData16, UserData28, DeviceInfo } from "./helper/utils";
export default class Zklib {
    set connectionType(value: "tcp" | "udp" | null);
    private _connectionType;
    ztcp: ZTCP;
    zudp: ZUDP;
    private interval;
    private timer;
    private isBusy;
    private ip;
    private comm_key;
    get connectionType(): "tcp" | "udp" | null;
    /**
     * Creates a new Zkteco device connection instance
     * @param ip IP address of device
     * @param port Port number of device
     * @param timeout Connection timeout in milliseconds
     * @param inport Required only for UDP connection (default: 10000)
     * @param comm_key Communication key of device (default: 0)
     * @param verbose Console log some data
     */
    constructor(ip: string, port?: number, timeout?: number, inport?: number, comm_key?: number, verbose?: boolean);
    private functionWrapper;
    createSocket(cbErr?: (err: Error) => void, cbClose?: (type: string) => void): Promise<boolean>;
    getUsers(): Promise<{
        data: User[] | UserData28[];
    }>;
    getTime(): Promise<Date>;
    setTime(t: Date | string): Promise<boolean>;
    voiceTest(): Promise<void>;
    getProductTime(): Promise<Date>;
    getVendor(): Promise<string>;
    getMacAddress(): Promise<string>;
    getSerialNumber(): Promise<string>;
    getDeviceVersion(): Promise<string>;
    getDeviceName(): Promise<string>;
    getPlatform(): Promise<string>;
    getOS(): Promise<string>;
    getWorkCode(): Promise<string>;
    getPIN(): Promise<string>;
    getFaceOn(): Promise<string>;
    getSSR(): Promise<string>;
    getFirmware(): Promise<string>;
    setUser(uid: number, userid: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
    deleteUser(uid: number): Promise<boolean>;
    getAttendanceSize(): Promise<number>;
    getAttendances(cb?: (progress: number, total: number) => void): Promise<{
        data: Attendance[] | RecordData16[];
        err?: Error | null;
    }>;
    getRealTimeLogs(cb: (log: any) => void): Promise<void>;
    getTemplates(): Promise<Record<string, Finger[]>>;
    saveUserTemplate(user: User, fingers?: Finger[]): Promise<void>;
    deleteFinger(uid: number, fid: number): Promise<boolean>;
    enrollUser(uid: number, temp_id: number, user_id: string): Promise<boolean>;
    verifyUser(uid: number): Promise<boolean>;
    restartDevice(): Promise<void>;
    getSizes(): Promise<DeviceInfo>;
    disconnect(): Promise<void>;
    freeData(): Promise<boolean>;
    disableDevice(): Promise<boolean>;
    enableDevice(): Promise<boolean>;
    getInfo(): Promise<DeviceInfo>;
    clearAttendanceLog(): Promise<any>;
    clearData(): Promise<any>;
    executeCmd(command: number, data?: string | Buffer): Promise<Buffer>;
}
export type { Attendance, User, Finger, DeviceInfo, Zklib };
