import * as i0 from '@angular/core';
import { OnInit, AfterContentInit, QueryList } from '@angular/core';
import * as rxjs from 'rxjs';
import { Subject, ReplaySubject, Observable, BehaviorSubject } from 'rxjs';

declare class NzOverflowItemDirective {
    private nzResizeObserver;
    private elementRef;
    private cdr;
    overflowStyle: Record<string, string | number | undefined> | undefined;
    itemWidth$: rxjs.Observable<number | undefined>;
    itemWidth: number | undefined;
    setItemStyle(display: boolean, order: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOverflowItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzOverflowItemDirective, "[nzOverflowItem]", never, {}, {}, never, never, true, never>;
}

declare class NzOverflowRestDirective {
    private nzResizeObserver;
    private elementRef;
    private cdr;
    restStyle: Record<string, string | number | undefined> | undefined;
    restWidth$: rxjs.Observable<number>;
    restWidth: number;
    setRestStyle(display: boolean, order: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOverflowRestDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzOverflowRestDirective, "[nzOverflowRest]", never, {}, {}, never, never, true, never>;
}

declare class NzOverflowSuffixDirective {
    private nzResizeObserver;
    private elementRef;
    private cdr;
    suffixStyle: {};
    suffixWidth$: rxjs.Observable<number>;
    suffixWidth: number;
    setSuffixStyle(start: number | null, order: number): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOverflowSuffixDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<NzOverflowSuffixDirective, "[nzOverflowSuffix]", never, {}, {}, never, never, true, never>;
}

/**
 * Use of this source code is governed by an MIT-style license that can be
 * found in the LICENSE file at https://github.com/NG-ZORRO/ng-zorro-antd/blob/master/LICENSE
 */

declare class NzOverflowContainerComponent implements OnInit, AfterContentInit {
    private nzResizeObserver;
    private elementRef;
    private cdr;
    private destroyRef;
    contentInit$: Subject<void>;
    overflowItems: QueryList<NzOverflowItemDirective> | undefined;
    overflowSuffix: NzOverflowSuffixDirective | undefined;
    overflowRest: NzOverflowRestDirective | undefined;
    overflowItems$: ReplaySubject<QueryList<NzOverflowItemDirective>>;
    containerWidth$: Observable<number>;
    restWidth$: BehaviorSubject<number>;
    suffixWidth$: BehaviorSubject<number>;
    suffixFixedStart$: BehaviorSubject<number | null>;
    displayCount$: BehaviorSubject<number>;
    restReady$: BehaviorSubject<boolean>;
    maxRestWith$: Observable<number>;
    omittedItems$: Observable<NzOverflowItemDirective[]>;
    displayRest$: Observable<boolean>;
    updateDisplayCount(count: number, notReady?: boolean): void;
    ngOnInit(): void;
    ngAfterContentInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOverflowContainerComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<NzOverflowContainerComponent, "nz-overflow-container", never, {}, {}, ["overflowSuffix", "overflowRest", "overflowItems"], ["*", "[appOverflowRest]", "[appOverflowSuffix]"], true, never>;
}

declare class NzOverflowModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<NzOverflowModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<NzOverflowModule, never, [typeof NzOverflowContainerComponent, typeof NzOverflowItemDirective, typeof NzOverflowRestDirective, typeof NzOverflowSuffixDirective], [typeof NzOverflowContainerComponent, typeof NzOverflowItemDirective, typeof NzOverflowRestDirective, typeof NzOverflowSuffixDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<NzOverflowModule>;
}

export { NzOverflowContainerComponent, NzOverflowItemDirective, NzOverflowModule, NzOverflowRestDirective, NzOverflowSuffixDirective };
