import { OnDestroy, OnInit, QueryList } from '@angular/core';
import { Observable, Subject, Subscription } from 'rxjs';
import * as i0 from "@angular/core";
export declare class DescendantRegisterService<T> {
    protected _result: Array<T>;
    protected changeSubject: Subject<Array<T>>;
    changes: Observable<Array<T>>;
    register(t: T): void;
    unregister(t: T): void;
    queryResult(): T[];
    static ɵfac: i0.ɵɵFactoryDeclaration<DescendantRegisterService<any>, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<DescendantRegisterService<any>>;
}
export declare class DescendantChildren<T> implements OnInit, OnDestroy {
    private drs;
    constructor(drs: DescendantRegisterService<T>);
    protected descendantItem: T;
    ngOnInit(): void;
    ngOnDestroy(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<DescendantChildren<any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<DescendantChildren<any>, never, never, {}, {}, never, never, false, never>;
}
export declare class DescendantRoot<T> extends QueryList<T> {
    private drs;
    protected sub: Subscription;
    constructor(drs: DescendantRegisterService<T>);
    on(): void;
    off(): void;
}
