/// <reference types="node" />
import { EventEmitter } from "events";
import { PerDeviceConfig } from "./types";
import { Logger } from "homebridge";
export declare class AM43Device extends EventEmitter {
    private uuid;
    private config;
    private primaryServiceUUID;
    private controlCharacteristicUUID;
    private notificationCallback;
    tiltMotor: AM43Device | null;
    private log;
    name: string;
    id: string;
    position: number;
    targetPosition: number | null;
    tilt: number | null;
    targetTilt: number | null;
    batteryPercentage: number;
    hasRunFirstConnect: boolean;
    constructor({ uuid, config, interactionTimeout, log, }: {
        uuid: string;
        config: PerDeviceConfig;
        interactionTimeout: number;
        log: Logger;
    });
    firstConnect(): Promise<boolean>;
    addTiltMotor(subDevice: AM43Device): void;
    get description(): string;
    setTilt(tilt: number): Promise<boolean>;
    private subscribeToNotifications;
    reconnect(): Promise<void>;
    disconnect(): Promise<void>;
    private unsubscribeToNotifications;
    private setupLongUUIDs;
    authWithPassCode(passcode: string): Promise<boolean>;
    callbackOrTimeout(once: "ble:position", successCallback: (position: number) => void, timeoutCallback: () => void): void;
    callbackOrTimeout(once: "ble:auth" | "ble:position_set", successCallback: (success: boolean) => void, timeoutCallback: () => void): void;
    callbackOrTimeout(once: "ble:battery", successCallback: (percentage: number) => void, timeoutCallback: () => void): void;
    updatePosition(): Promise<number | false>;
    updateTilt(): Promise<number | false>;
    updateBatteryStatus(): Promise<number | false>;
    getDirection(): 0 | 1 | 2 | undefined;
    setPosition(target: number): Promise<boolean>;
}
