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, FreeSizes } 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>;
    /** Update or create a user if user id/pin not exists
     * @param user_id {string} user id/pin for customer
     * @param name {string} user name
     * @param password {string} user password
     * @param role {number} role/privilege id number
     * @param cardno {number} card number/id
     */
    setUser(user_id: string, name: string, password: string, role?: number, cardno?: number): Promise<boolean>;
    /**
     * Delete user by a given user id/pin
     * @param user_id {string}
     */
    deleteUser(user_id: string): 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[]>>;
    /**
     * Get a user template for a given user id/pin and finger id
     * @param user_id {string} user id/pin
     * @param fid {number} finger index
     */
    getUserTemplate(user_id: string, fid: number): Promise<Finger>;
    /**
     * Upload a single fingerprint for a given user id
     * @param user_id {string} user id/pin for customer
     * @param fingerTemplate {string} finger template in base64 string
     * @param fid {number} finger id is a number between 0 and 9
     * @param fp_valid {number} finger flag. e.g., valid=1, duress=3
     */
    uploadFingerTemplate(user_id: string, fingerTemplate: string, fid: number, fp_valid: number): Promise<boolean>;
    /**
     * save user and template
     *
     * @param {string} user_id - user id for customer
     * @param {Finger[]} fingers - Array of finger class
     */
    saveUserTemplate(user_id: string, fingers?: Finger[]): Promise<void>;
    /**
     * Delete a single finger template by user id and finger index
     * @param user_id {string} user id/pin for customer
     * @param fid {number} finger index
     */
    deleteFinger(user_id?: string, fid?: number): Promise<boolean>;
    /**
     * Start to enroll a finger template
     * @param user_id {string} user id/pin for customer
     * @param temp_id {number} finger index
     */
    enrollUser(user_id: string, temp_id: number): Promise<unknown>;
    verifyUser(user_id: string): Promise<boolean>;
    restartDevice(): Promise<void>;
    getSizes(): Promise<FreeSizes>;
    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>;
    getNetworkParams(): Promise<{
        IPAddress: string;
        NetMask: string;
        GATEIPAddress: string;
        TCPPort: string;
    }>;
}
export type { Attendance, User, Finger, DeviceInfo, Zklib };
