import { ComponentRef } from '@angular/core';
import { Observable } from 'rxjs';
export declare enum NbTrigger {
    CLICK = "click",
    HOVER = "hover",
    HINT = "hint",
    FOCUS = "focus"
}
export declare abstract class NbTriggerStrategy {
    protected document: Document;
    protected host: HTMLElement;
    protected container: () => ComponentRef<any>;
    protected isNotOnHostOrContainer(event: Event): boolean;
    protected isOnHostOrContainer(event: Event): boolean;
    protected isOnHost({ target }: Event): boolean;
    protected isOnContainer({ target }: Event): boolean;
    abstract show$: Observable<Event>;
    abstract hide$: Observable<Event>;
    constructor(document: Document, host: HTMLElement, container: () => ComponentRef<any>);
}
export declare class NbClickTriggerStrategy extends NbTriggerStrategy {
    protected click$: Observable<[boolean, Event]>;
    readonly show$: Observable<Event>;
    readonly hide$: Observable<Event>;
}
export declare class NbHoverTriggerStrategy extends NbTriggerStrategy {
    show$: Observable<Event>;
    hide$: Observable<Event>;
}
export declare class NbHintTriggerStrategy extends NbTriggerStrategy {
    show$: Observable<Event>;
    hide$: Observable<Event>;
}
export declare class NbFocusTriggerStrategy extends NbTriggerStrategy {
    protected focusOut$: Observable<Event>;
    protected clickIn$: Observable<Event>;
    protected clickOut$: Observable<Event>;
    protected tabKeyPress$: Observable<Event>;
    show$: Observable<Event>;
    hide$: Observable<Event>;
}
export declare class NbTriggerStrategyBuilder {
    protected _host: HTMLElement;
    protected _container: () => ComponentRef<any>;
    protected _trigger: NbTrigger;
    protected _document: Document;
    document(document: Document): this;
    trigger(trigger: NbTrigger): this;
    host(host: HTMLElement): this;
    container(container: () => ComponentRef<any>): this;
    build(): NbTriggerStrategy;
}
