import type { CharacteristicValue, PlatformAccessory } from 'homebridge';
import type { AugustPlatform } from '../Platform.HAP.js';
import type { device, devicesConfig, lockDetails, lockEvent, lockStatus } from '../settings.js';
import { deviceBase } from './device.js';
/**
 * Platform Accessory
 * An instance of this class is created for each accessory your platform registers
 * Each accessory may expose multiple services of different service types.
 */
export declare class LockMechanism extends deviceBase {
    readonly platform: AugustPlatform;
    private LockMechanism?;
    private Battery;
    private ContactSensor?;
    lockEvent: lockEvent;
    lockStatus: lockStatus;
    lockDetails: lockDetails;
    lockUpdateInProgress: boolean;
    doLockUpdate: any;
    private pubnubUnsubscribe?;
    constructor(platform: AugustPlatform, accessory: PlatformAccessory, device: device & devicesConfig);
    /**
     * Parse the device status from the August api
     */
    parseStatus(): Promise<void>;
    /**
     * Parse the device status from the August api
     */
    parseEventStatus(): Promise<void>;
    /**
     * Asks the August Home API for the latest device information.
     *
     * Used for the initial fetch in the constructor. Periodic polling is
     * driven by AugustPlatform.startPolling(), which calls applyRefresh()
     * directly with details fetched serially across all registered locks.
     *
     * On failure: returns silently. The ConnectivityManager has already
     * classified the error and (if it's a network error) put itself into
     * 'degraded' state — a probe is scheduled and the next poll cycle
     * will skip until the probe confirms recovery.
     */
    refreshStatus(): Promise<void>;
    /**
     * Apply a freshly-fetched lockDetails payload to HomeKit characteristics.
     *
     * Public so AugustPlatform.startPolling() can hand-off the result of
     * its serial details() call without going through refreshStatus()
     * (which would re-fetch).
     */
    applyRefresh(lockDetails: lockDetails): Promise<void>;
    /**
     * Pushes the requested changes to the August API
     */
    pushChanges(): Promise<void>;
    /**
     * Updates the status for each of the HomeKit Characteristics
     */
    updateHomeKitCharacteristics(): Promise<void>;
    setLockTargetState(value: CharacteristicValue): Promise<void>;
    private pubnubStatusUnsubscribe?;
    private pubnubAugust?;
    subscribeAugust(): Promise<void>;
    /**
     * Tear down the PubNub subscription for this lock. Safe to call multiple
     * times and when no subscription exists. Called on lock removal to free
     * the PubNub instance, WebSocket connection, and listener.
     */
    tearDownPubNubSubscription(): void;
}
//# sourceMappingURL=lock.d.ts.map