import { Observable, Subject, Subscription } from 'rxjs';
import { QueryList } from './query-list';
import { NgDirectiveBase } from '../directive-base';
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[];
}
export declare class DescendantChildren<T, I extends {
    [prop: string]: any;
} = {
    [prop: string]: any;
}, O = {
    [prop: string]: (e: any) => void;
}> extends NgDirectiveBase<I, O> {
    private drs;
    constructor(drs: DescendantRegisterService<T>);
    protected descendantItem: T;
    ngOnInit(): void;
    ngOnDestroy(): void;
}
export declare class DescendantRoot<T> extends QueryList<T> {
    private drs;
    protected sub: Subscription;
    constructor(drs: DescendantRegisterService<T>);
    on(): void;
    off(): void;
}
