import { AfterViewChecked, ChangeDetectorRef, EventEmitter, NgZone, OnDestroy } from '@angular/core';
import { BehaviorSubject, Observable, Subscription } from 'rxjs';
import { TabsServiceBase } from './tabs-service-base.abstract';
import * as i0 from "@angular/core";
export declare abstract class TabsBase<T, S extends TabsServiceBase<T>> implements AfterViewChecked, OnDestroy {
    private readonly tabsService;
    protected readonly changeDetectorRef: ChangeDetectorRef;
    private readonly ngZone;
    private readonly containerService?;
    protected readonly subscription: Subscription;
    abstract readonly activeTabNameChange: EventEmitter<T>;
    protected readonly stateService: S;
    private readonly activeTabName$;
    readonly railHighlighterOffsetLeftTransform$: BehaviorSubject<string>;
    readonly railHighlighterWidthPx$: BehaviorSubject<number>;
    readonly isLeftGradient$: BehaviorSubject<boolean>;
    readonly isRightGradient$: BehaviorSubject<boolean>;
    readonly isHorizontalScrollExist$: Observable<boolean>;
    readonly isContentDragging$: Observable<boolean>;
    constructor(tabsService: S, changeDetectorRef: ChangeDetectorRef, ngZone: NgZone, containerService?: S);
    protected detectChanges(): void;
    ngAfterViewChecked(): void;
    ngOnDestroy(): void;
    handleContentDragStart(): void;
    handleContentDragEnd(): void;
    setLeftGradient(isLeftGradient: boolean): void;
    setRightGradient(isRightGradient: boolean): void;
    private processActiveTabNameChanges;
    private processRailHighlighterOffsetLeftTransform;
    private processRailHighlighterWidthPx;
    static ɵfac: i0.ɵɵFactoryDeclaration<TabsBase<any, any>, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<TabsBase<any, any>, never, never, {}, {}, never, never, false>;
}
