import * as i0 from '@angular/core';
import { ElementRef, AfterViewInit, OnChanges, OnDestroy, SimpleChanges } from '@angular/core';
import * as rxjs from 'rxjs';

declare class SiAutoCollapsableListMeasurable {
    protected readonly elementRef: ElementRef<any>;
    private readonly resizeObserverService;
    /**
     * Emits on element width changes.
     *
     * @defaultValue
     * ```
     * this.resizeObserverService
     *       .observe(this.elementRef.nativeElement, 0, true, true)
     *       .pipe(
     *         map(size => size.width),
     *         distinctUntilChanged(),
     *         shareReplay(1)
     *       )
     * ```
     */
    size$: rxjs.Observable<number>;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListMeasurable, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutoCollapsableListMeasurable, never, never, {}, {}, never, never, true, never>;
}

declare class SiAutoCollapsableListItemDirective extends SiAutoCollapsableListMeasurable implements AfterViewInit {
    /**
     * Hide this item even if enough space is available.
     * When calculating the overall available size, this item is still considered when forceHide=true
     *
     * @defaultValue false
     */
    readonly forceHide: i0.InputSignalWithTransform<boolean, unknown>;
    /**
     * True if enough space is available for this item.
     *
     * @defaultValue false
     */
    readonly canBeVisible: i0.WritableSignal<boolean>;
    /**
     * True if this item is actually visible to the user
     */
    readonly isVisible: i0.Signal<boolean>;
    ngAfterViewInit(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutoCollapsableListItemDirective, "[siAutoCollapsableListItem]", ["siAutoCollapsableListItem"], { "forceHide": { "alias": "forceHide"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

declare class SiAutoCollapsableListDirective implements AfterViewInit, OnChanges, OnDestroy {
    /**
     * The items which are displayed in the siAutoCollapsableList.
     */
    readonly items: i0.Signal<readonly SiAutoCollapsableListItemDirective[]>;
    private readonly overflowItem;
    private readonly additionalContent;
    /** @defaultValue true */
    readonly siAutoCollapsableList: i0.InputSignalWithTransform<boolean, unknown>;
    /**
     * The (flex) gap in pixels, will automatically be set if a pixel value is used in CSS.
     */
    readonly gap: i0.InputSignal<number | undefined>;
    /**
     * The element which size is available for the content of the siAutoCollapsableList.
     *
     * @defaultValue undefined
     */
    readonly containerElement: i0.InputSignal<HTMLElement | null | undefined>;
    private resizeSubscription?;
    private disableInitSubscription?;
    private readonly elementRef;
    private readonly resizeObserverService;
    private readonly changeDetectorRef;
    private readonly containerElementSubject;
    /**
     * The same as {@link gap}, but automatically read from the computed styles.
     * Used if not set by user.
     */
    private computedGap;
    private injector;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges<this>): void;
    ngOnDestroy(): void;
    private setupResizeListener;
    private updateItemVisibility;
    private reset;
    private readGapSize;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutoCollapsableListDirective, "[siAutoCollapsableList]", ["siAutoCollapsableList"], { "siAutoCollapsableList": { "alias": "siAutoCollapsableList"; "required": false; "isSignal": true; }; "gap": { "alias": "gap"; "required": false; "isSignal": true; }; "containerElement": { "alias": "siAutoCollapsableListContainerElement"; "required": false; "isSignal": true; }; }, {}, ["items", "overflowItem", "additionalContent"], never, true, never>;
}

declare class SiAutoCollapsableListOverflowItemDirective extends SiAutoCollapsableListItemDirective {
    /**
     * Number of hidden items.
     *
     * @defaultValue 0
     */
    hiddenItemCount: number;
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListOverflowItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutoCollapsableListOverflowItemDirective, "[siAutoCollapsableListOverflowItem]", ["siAutoCollapsableListOverflowItem"], {}, {}, never, never, true, never>;
}

declare class SiAutoCollapsableListAdditionalContentDirective extends SiAutoCollapsableListMeasurable {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListAdditionalContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<SiAutoCollapsableListAdditionalContentDirective, "[siAutoCollapsableListAdditionalContent]", never, {}, {}, never, never, true, never>;
}

declare class SiAutoCollapsableListModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<SiAutoCollapsableListModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<SiAutoCollapsableListModule, never, [typeof SiAutoCollapsableListAdditionalContentDirective, typeof SiAutoCollapsableListDirective, typeof SiAutoCollapsableListItemDirective, typeof SiAutoCollapsableListOverflowItemDirective], [typeof SiAutoCollapsableListAdditionalContentDirective, typeof SiAutoCollapsableListDirective, typeof SiAutoCollapsableListItemDirective, typeof SiAutoCollapsableListOverflowItemDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<SiAutoCollapsableListModule>;
}

export { SiAutoCollapsableListAdditionalContentDirective, SiAutoCollapsableListDirective, SiAutoCollapsableListItemDirective, SiAutoCollapsableListMeasurable, SiAutoCollapsableListModule, SiAutoCollapsableListOverflowItemDirective };
