import { ChangeDetectorRef, OnDestroy, OnInit, TemplateRef, ViewContainerRef } from '@angular/core';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export declare class ObserveContext<T = any> {
    $implicit: T;
    ngxObserve: T;
    constructor(value: T);
}
export declare class ErrorContext {
    $implicit: Error;
    constructor(error: Error);
}
export declare class NgxObserveDirective<T = any> implements OnDestroy, OnInit {
    private view;
    private changes;
    private nextTemplateRef;
    private errorTemplateRef;
    private beforeTemplateRef;
    private nextViewRef;
    private errorViewRef;
    private beforeViewRef;
    private unsubscribe;
    private init;
    private source;
    constructor(view: ViewContainerRef, changes: ChangeDetectorRef, nextTemplateRef: TemplateRef<ObserveContext<T>>);
    set ngxObserve(source: Observable<T>);
    set ngxObserveError(ref: TemplateRef<ErrorContext>);
    set ngxObserveBefore(ref: TemplateRef<undefined>);
    set ngxObserveNext(ref: TemplateRef<ObserveContext<T>>);
    static ngTemplateContextGuard<T>(dir: NgxObserveDirective<T>, ctx: any): ctx is ObserveContext<T>;
    ngOnDestroy(): void;
    ngOnInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NgxObserveDirective<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NgxObserveDirective<any>, "[ngxObserve]", never, { "ngxObserve": { "alias": "ngxObserve"; "required": false; }; "ngxObserveError": { "alias": "ngxObserveError"; "required": false; }; "ngxObserveBefore": { "alias": "ngxObserveBefore"; "required": false; }; "ngxObserveNext": { "alias": "ngxObserveNext"; "required": false; }; }, {}, never, never, true, never>;
}
