import { Logger } from 'homebridge';
import Token = PubSubJS.Token;
export interface AladdinDoor {
    deviceId: number;
    id: string;
    index: number;
    serialNumber: string;
    name: string;
    hasBatteryLevel: boolean;
    ownership: string;
    status: AladdinDoorStatus;
    batteryPercent: number | null;
    fault: boolean;
}
export declare enum AladdinDoorStatus {
    UNKNOWN = 0,
    OPEN = 1,
    OPENING = 2,
    TIMEOUT_OPENING = 3,
    CLOSED = 4,
    CLOSING = 5,
    TIMEOUT_CLOSING = 6,
    NOT_CONFIGURED = 7
}
export declare enum AladdinDesiredDoorStatus {
    CLOSED = 0,
    OPEN = 1,
    NONE = 99
}
export interface AladdinConnectConfig {
    username: string;
    password: string;
    batteryLowLevel?: number;
    doorStatusStationaryCacheTtl?: number;
    doorStatusTransitioningCacheTtl?: number;
    doorStatusPollInterval?: number;
    logApiResponses?: boolean;
    showShared?: boolean;
}
export declare class AladdinConnect {
    readonly log: Logger;
    private readonly config;
    private static readonly PUB_SUB_DOOR_STATUS_TOPIC;
    private static readonly DOOR_STATUS_STATIONARY_CACHE_TTL_S_DEFAULT;
    private static readonly DOOR_STATUS_STATIONARY_CACHE_TTL_S_MIN;
    private static readonly DOOR_STATUS_STATIONARY_CACHE_TTL_S_MAX;
    private static readonly DOOR_STATUS_TRANSITIONING_CACHE_TTL_S_DEFAULT;
    private static readonly DOOR_STATUS_TRANSITIONING_CACHE_TTL_S_MIN;
    private static readonly DOOR_STATUS_TRANSITIONING_CACHE_TTL_S_MAX;
    private static readonly DOOR_STATUS_POLL_INTERVAL_MS_DEFAULT;
    private static readonly DOOR_STATUS_POLL_INTERVAL_MS_MIN;
    private static readonly DOOR_STATUS_POLL_INTERVAL_MS_MAX;
    private static readonly API_HOST;
    private static readonly API_TIMEOUT;
    private static readonly AUTH_HOST;
    private static readonly AUTH_CLIENT_ID;
    private static readonly AUTH_CLIENT_SECRET;
    private static readonly DOOR_STATUS_LOCK;
    private readonly lock;
    private readonly cache;
    private readonly session;
    constructor(log: Logger, config: AladdinConnectConfig);
    subscribe(door: AladdinDoor, func: (info: AladdinDoor) => void): Token;
    unsubscribe(token: Token): void;
    getAllDoors(): Promise<AladdinDoor[]>;
    setDoorStatus(door: AladdinDoor, desiredStatus: AladdinDesiredDoorStatus): Promise<void>;
    private getAccessToken;
    private get doorStatusStationaryCacheTtl();
    private get doorStatusTransitioningCacheTtl();
    private get pollIntervalMs();
    private static doorStatusTopic;
    private static doorStatusCacheKey;
}
//# sourceMappingURL=aladdinConnect.d.ts.map