import { AfterContentInit, OnChanges, OnDestroy, QueryList, TemplateRef, TrackByFunction } from '@angular/core';
import { ComponentChanges } from '@bimeister/pupakit.common';
import { Nullable } from '@bimeister/utilities';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { ContentTemplateNameDirective } from '../../interfaces/content-template-name.interface';
import { TabTemplateRef } from '../../interfaces/tab-template-ref.interface';
import { TabsServiceBase } from './tabs-service-base.abstract';
import * as i0 from "@angular/core";
export declare abstract class TabsContentBase<T, S extends TabsServiceBase<T>> implements OnChanges, AfterContentInit, OnDestroy {
    protected readonly stateService: S;
    protected readonly subscription: Subscription;
    abstract destroyable: boolean;
    protected readonly destroyable$: BehaviorSubject<boolean>;
    abstract tabTemplates: QueryList<ContentTemplateNameDirective<T>>;
    protected readonly activeTabName$: Observable<T>;
    readonly activeTemplateRef$: BehaviorSubject<Nullable<TemplateRef<unknown>>>;
    readonly nonDestroyableTemplateRefs$: BehaviorSubject<TabTemplateRef<T>[]>;
    constructor(stateService: S);
    readonly tabTrackBy: TrackByFunction<TabTemplateRef<T>>;
    ngOnChanges(changes: ComponentChanges<this>): void;
    ngAfterContentInit(): void;
    ngOnDestroy(): void;
    private processInputDestroyableChanges;
    private processActiveTabChanges;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabsContentBase<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TabsContentBase<any, any>, never, never, {}, {}, never, never, false>;
}
