/**
 * Exclusive Lock for a Resource
 */
export declare class Lock {
    /**
     * Stream of lock status
     */
    private readonly lockStatus;
    /**
     * Track status of lock
     */
    private _isLocked;
    /**
     * Requests a lock
     *
     * @returns callback for unlock or false if lock couldn't be performed
     */
    lock(): (() => void) | false;
    /**
     * Get current lock status
     *
     * @returns lock status
     */
    isLocked(): boolean;
    /**
     * Notify caller about unlock status.
     * Does not guarantee that lock can be performed.
     *
     * @returns Promise to notify about unlock event
     */
    notifyOnUnlock(): Promise<void>;
    /**
     * Emit unlock event
     */
    private unlock;
}
