import { FocusMonitor, FocusOrigin } from '@angular/cdk/a11y';
import { Renderer2 } from '@angular/core';
import { BehaviorSubject, Subject } from 'rxjs';
import { FocusIndicatorOptions } from './focus-indicator-options.interface';
import { FocusIndicatorOriginService } from './focus-indicator-origin/focus-indicator-origin.service';
export declare class FocusIndicator {
    private readonly _element;
    private readonly _focusMonitor;
    private readonly _renderer;
    private _options;
    private readonly _focusIndicatorOrigin;
    /** Apply a class when the item is focused */
    set isFocused(isFocused: boolean);
    /** Provide a convenience getter to allow access to focus state without a subscription */
    get isFocused(): boolean;
    /** An observable to monitor the focus state */
    readonly isFocused$: BehaviorSubject<boolean>;
    /** An observable to monitor the focus origin */
    readonly origin$: Subject<FocusOrigin>;
    /** Remove all subscriptions on destroy */
    private readonly _onDestroy;
    constructor(_element: HTMLElement, _focusMonitor: FocusMonitor, _renderer: Renderer2, _options: FocusIndicatorOptions, _focusIndicatorOrigin: FocusIndicatorOriginService);
    /** Setup the focus monitoring */
    private initialise;
    /** Focus the element with a specific origin */
    focus(origin?: FocusOrigin, options?: {
        preventScroll?: boolean;
    }): void;
    /** Tear down the subscriptions */
    destroy(): void;
    /** Allow the options to be updates */
    setOptions(options: FocusIndicatorOptions): void;
    /** Monitor changes to an elements focus state */
    private onFocusChange;
}
