import * as i0 from '@angular/core';
import { ElementRef, OnChanges, OnInit, AfterViewInit, OnDestroy, QueryList } from '@angular/core';
import { Size, Nullable, ColorAccent, HasElementRef, CssClassBuilder } from '@fundamental-ngx/cdk/utils';
import { FocusableOption } from '@angular/cdk/a11y';

interface AvatarGroupLegacyInterface {
    _setActiveItem(item: FocusableOption): void;
}

declare class AvatarGroupLegacyItemDirective implements FocusableOption {
    private readonly _elementRef;
    private readonly _component;
    /** Item disable state */
    disabled: boolean;
    /** @hidden */
    constructor(_elementRef: ElementRef<HTMLElement>, _component: AvatarGroupLegacyInterface);
    /** @hidden */
    get _element(): HTMLElement;
    /** Handler for mouse events */
    onClick(): void;
    /** @hidden */
    focus(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyItemDirective, [null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyItemDirective, "[fd-avatar-group-legacy-item]", never, {}, {}, never, never, true, never>;
}

type AvatarGroupLegacyType = 'group' | 'individual';
type AvatarGroupLegacyOverflowButtonColor = 'neutral' | 'random' | ColorAccent;
declare class AvatarGroupLegacyComponent implements AvatarGroupLegacyInterface, OnChanges, OnInit, AfterViewInit, OnDestroy {
    /** Id of the Avatar Group. */
    id: string;
    /** Apply user custom class. */
    class: string;
    /** The size of the Avatar Group. Options include: *xs*, *s*, *m*, *l* and *xl* (default: *s*). */
    size: Size;
    /** The type of the Avatar Group. Options include: *group* and *individual* (default: *group*). */
    type: AvatarGroupLegacyType;
    /** Aria-label for Avatar Group. */
    ariaLabel: Nullable<string>;
    /** @hidden Avatar Group items. */
    mainItems: QueryList<AvatarGroupLegacyItemDirective>;
    /** @hidden */
    avatarGroupContainer: ElementRef<HTMLDivElement>;
    /** Counter for all avatars. */
    allItemsCount: number;
    /** Counter for visible in overflow popover avatars. */
    overflowItemsCount: number;
    /** @hidden */
    rootClassNames: Record<string, boolean | undefined | null>;
    /** @hidden */
    get isGroupType(): boolean;
    /** @hidden */
    private get _avatarGroupWidth();
    /** @hidden */
    private get _avatarGroupItemWidth();
    /** @hidden */
    private get _avatarGroupItemWithMarginsWidth();
    /** @hidden FocusKeyManager instance */
    private _keyboardEventsManager;
    /** @hidden */
    private readonly _subscription;
    /** @hidden */
    private readonly _viewportRuler;
    /** @hidden */
    private readonly _rtlService;
    /** @hidden */
    private readonly _dir;
    /** @hidden */
    constructor();
    /** @hidden */
    keyUpHandler(event: KeyboardEvent): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    _setActiveItem(item: AvatarGroupLegacyItemDirective): void;
    /** @hidden */
    private _onResize;
    /** @hidden */
    private _reset;
    /** @hidden */
    private _collapseItems;
    /** @hidden */
    private _listenForItemChanges;
    /** @hidden */
    private _assignCssClasses;
    /** @hidden */
    private _setKeyboardEventsManager;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<AvatarGroupLegacyComponent, "fd-avatar-group-legacy", never, { "id": { "alias": "id"; "required": false; }; "class": { "alias": "class"; "required": false; }; "size": { "alias": "size"; "required": false; }; "type": { "alias": "type"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; }, {}, ["mainItems"], ["*"], true, never>;
}

declare class AvatarGroupLegacyFocusableAvatarDirective implements FocusableOption, HasElementRef {
    readonly elementRef: ElementRef<HTMLElement>;
    private readonly _component;
    /** Tabindex of the Avatar. */
    tabindex: number;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>, _component: AvatarGroupLegacyInterface);
    /** Handler for mouse events */
    onClick(): void;
    /** @hidden */
    focus(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyFocusableAvatarDirective, [null, { optional: true; }]>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyFocusableAvatarDirective, "[fd-avatar-group-legacy-focusable-avatar]", never, { "tabindex": { "alias": "tabindex"; "required": false; }; }, {}, never, never, true, never>;
}

/** Needed to bind specific class to group type popover control. */
declare class AvatarGroupLegacyPopoverControlDirective {
    /** Tabindex of the popover control. */
    tabindex: number;
    /** Role of the popover control. */
    role: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyPopoverControlDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyPopoverControlDirective, "[fd-avatar-group-legacy-popover-control]", never, { "tabindex": { "alias": "tabindex"; "required": false; }; "role": { "alias": "role"; "required": false; }; }, {}, never, never, true, never>;
}

type FocusableWithElementRef = FocusableOption & HasElementRef;

declare class AvatarGroupLegacyOverflowBodyDirective implements AfterViewInit, OnDestroy {
    /** Remove the padding from the overflow body. */
    noPadding: boolean;
    /** Hide horizontal scrollbar from the overflow body. */
    noHorizontalScroll: boolean;
    /** Hide vertical scrollbar from the overflow body. */
    noVerticalScroll: boolean;
    /** @hidden Avatar Group Overflow items. */
    overflowItems: QueryList<FocusableWithElementRef>;
    /** @hidden FocusKeyManager instance */
    private _keyboardEventsManager;
    /** @hidden */
    private readonly _subscription;
    /** @hidden */
    private readonly _rtlService;
    /** @hidden */
    private readonly _dir;
    /** @hidden */
    constructor();
    /** @hidden */
    keyUpHandler(event: KeyboardEvent): void;
    /** @hidden */
    ngAfterViewInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    _setActiveItem(item: FocusableOption & HasElementRef): void;
    /** @hidden */
    private _listenForItemChanges;
    /** @hidden */
    private _setKeyboardEventsManager;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyOverflowBodyDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyOverflowBodyDirective, "[fd-avatar-group-legacy-overflow-body]", never, { "noPadding": { "alias": "noPadding"; "required": false; }; "noHorizontalScroll": { "alias": "noHorizontalScroll"; "required": false; }; "noVerticalScroll": { "alias": "noVerticalScroll"; "required": false; }; }, {}, ["overflowItems"], never, true, never>;
}

declare class AvatarGroupLegacyOverflowItemDirective extends AvatarGroupLegacyItemDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyOverflowItemDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyOverflowItemDirective, "[fd-avatar-group-legacy-overflow-item]", never, {}, {}, never, never, true, never>;
}

declare class AvatarGroupLegacyOverflowButtonDirective implements OnInit, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef;
    /** User's custom classes. */
    class: string;
    /** The size of the overflow button.
     * Should be the same as the Avatar Group and Avatar size.
     * Options include: *xs*, *s*, *m*, *l* and *xl* (default: *s*). */
    size: Size;
    /** A number from 1 to 10 representing the background color of the Avatar Group's overflow button.
     * Options include: *neutral*, *random*, *1*, *2*, *3*, *4*, *5*, *6*, *7*, *8*, *9*, *10* (default: *neutral*). */
    color: AvatarGroupLegacyOverflowButtonColor;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    private _getMoreButtonColorCssClass;
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyOverflowButtonDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyOverflowButtonDirective, "[fd-avatar-group-legacy-overflow-button]", never, { "class": { "alias": "class"; "required": false; }; "size": { "alias": "size"; "required": false; }; "color": { "alias": "color"; "required": false; }; }, {}, never, never, true, never>;
}

declare class AvatarGroupLegacyOverflowButtonTextDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyOverflowButtonTextDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<AvatarGroupLegacyOverflowButtonTextDirective, "[fd-avatar-group-legacy-overflow-button-text]", never, {}, {}, never, never, true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class AvatarGroupLegacyModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<AvatarGroupLegacyModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<AvatarGroupLegacyModule, never, [typeof AvatarGroupLegacyComponent, typeof AvatarGroupLegacyItemDirective, typeof AvatarGroupLegacyFocusableAvatarDirective, typeof AvatarGroupLegacyPopoverControlDirective, typeof AvatarGroupLegacyOverflowBodyDirective, typeof AvatarGroupLegacyOverflowItemDirective, typeof AvatarGroupLegacyOverflowButtonDirective, typeof AvatarGroupLegacyOverflowButtonTextDirective], [typeof AvatarGroupLegacyComponent, typeof AvatarGroupLegacyItemDirective, typeof AvatarGroupLegacyFocusableAvatarDirective, typeof AvatarGroupLegacyPopoverControlDirective, typeof AvatarGroupLegacyOverflowBodyDirective, typeof AvatarGroupLegacyOverflowItemDirective, typeof AvatarGroupLegacyOverflowButtonDirective, typeof AvatarGroupLegacyOverflowButtonTextDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<AvatarGroupLegacyModule>;
}

export { AvatarGroupLegacyComponent, AvatarGroupLegacyFocusableAvatarDirective, AvatarGroupLegacyItemDirective, AvatarGroupLegacyModule, AvatarGroupLegacyOverflowBodyDirective, AvatarGroupLegacyOverflowButtonDirective, AvatarGroupLegacyOverflowButtonTextDirective, AvatarGroupLegacyOverflowItemDirective, AvatarGroupLegacyPopoverControlDirective };
export type { AvatarGroupLegacyInterface, AvatarGroupLegacyOverflowButtonColor, AvatarGroupLegacyType };
