import { type ISlottable } from '../../../Behaviors/Slottable';
import { CustomElement } from '../../Abstracts/CustomElement';
import type { IBannerGroupElementProps } from './IBannerGroupElementProps';
import { type IEventEmitter, type IEventDetail } from '@breadstone/mosaik-elements';
import { BannerGroupDismissBehavior } from '../../../Types/BannerGroupDismissBehavior';
import { BannerGroupStacking } from '../../../Types/BannerGroupStacking';
/** Change event detail for {@link BannerGroupElement}. */
export interface IBannerGroupChangeEventDetail extends IEventDetail {
    index: number;
    previousIndex: number;
    length: number;
}
declare const BannerGroupElement_base: (abstract new (...args: Array<any>) => import("../../../Behaviors/Themeable").IThemeableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Orientable").IOrientableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Disableable").IDisableableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Appearanceable").IAppearanceableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Variantable").IVariantableProps) & (abstract new (...args: Array<any>) => import("../../../Behaviors/Slottable").ISlottableProps & ISlottable) & typeof CustomElement & import("../../../Behaviors/Themeable").IThemeableCtor;
/**
 * BannerGroup - A container component for managing and presenting multiple `Banner` instances.
 *
 * @description
 * The `BannerGroup` component arranges several `<mosaik-banner>` elements either as a stack or a simple paged
 * (carousel‑like) sequence. When `maxLength` equals `1`, only a single banner is shown and keyboard navigation
 * allows users to move between items. When `maxLength` is greater than `1`, banners are presented in a stacked
 * layout. Looping navigation can be enabled via the `loop` property. (Persistence, dismissal strategies and depth
 * stacking enhancements can be incorporated in future iterations.)
 *
 * @name BannerGroup
 * @element mosaik-banner-group
 * @category Notifications
 *
 * @fires change - Fired when the active index changes.
 *
 * @slot - The default slot for banner items.
 * @slot prev - Slot for a custom previous control.
 * @slot next - Slot for a custom next control.
 *
 * @csspart root - The root wrapper part.
 * @csspart viewport - The viewport that contains the banners.
 * @csspart control-prev - The previous control wrapper.
 * @csspart control-next - The next control wrapper.
 *
 * @cssprop {unknown} --banner-group-gap - Gap between stacked banners.
 * @cssprop {unknown} --banner-group-transition-duration - Transition duration for paging.
 *
 * @dependency {BannerElement} - The Banner element.
 *
 * @example
 * ```html
 * <mosaik-banner-group max-visible="1" loop>
 *   <mosaik-banner header="Update 1"></mosaik-banner>
 *   <mosaik-banner header="Update 2"></mosaik-banner>
 *   <mosaik-banner header="Update 3"></mosaik-banner>
 * </mosaik-banner-group>
 * ```
 *
 * @public
 */
export declare class BannerGroupElement extends BannerGroupElement_base implements IBannerGroupElementProps, ISlottable {
    private readonly _change;
    private readonly _keyboardController;
    private _eventSubscriptions;
    private _index;
    private _loop;
    private _maxLength;
    private _dismissBehavior;
    private _stacking;
    private _reverse;
    private _previousIndex;
    /**
     * @public
     */
    constructor();
    /**
     * Returns the `{@link is}` property.
     * The `{@link is}` property represents the natural name of this element.
     *
     * @public
     * @static
     * @readonly
     */
    static get is(): string;
    /**
     * Gets or sets the `index` property representing the current active (start) index.
     *
     * @public
     * @attr
     */
    get index(): number;
    set index(value: number);
    /**
     * Gets or sets the `loop` property enabling circular navigation.
     *
     * @public
     * @attr
     */
    get loop(): boolean;
    set loop(value: boolean);
    /**
     * Gets or sets the `maxLength` property (1 = pager/carousel mode).
     *
     * @public
     * @attr
     */
    get maxLength(): number;
    set maxLength(value: number);
    /**
     * Gets or sets the `dismissBehavior` property defining how dismissed banners are handled.
     * (Future extension point.)
     *
     * @public
     * @attr
     */
    get dismissBehavior(): BannerGroupDismissBehavior;
    set dismissBehavior(value: BannerGroupDismissBehavior);
    /**
     * Gets or sets the `stacking` property controlling vertical or depth stacking.
     *
     * @public
     * @attr
     */
    get stacking(): BannerGroupStacking;
    set stacking(value: BannerGroupStacking);
    /**
     * Gets or sets the `reverse` property displaying newest banners first when true.
     *
     * @public
     * @attr
     */
    get reverse(): boolean;
    set reverse(value: boolean);
    /**
     * Returns the total number of banners.
     *
     * @public
     * @readonly
     */
    get length(): number;
    /**
     * Returns whether previous navigation is possible.
     *
     * @public
     * @readonly
     */
    get canPrev(): boolean;
    /**
     * Returns whether next navigation is possible.
     *
     * @public
     * @readonly
     */
    get canNext(): boolean;
    /**
     * Fired when the active index changes.
     *
     * @public
     */
    get change(): IEventEmitter<IBannerGroupChangeEventDetail>;
    /**
     * @protected
     * @override
     */
    onSlotChanges(): void;
    /**
     * @public
     * @override
     */
    connectedCallback(): void;
    /**
     * Navigates to the previous banner.
     *
     * @public
     */
    previous(): void;
    /**
     * Navigates to the next banner.
     *
     * @public
     */
    next(): void;
    /**
     * Navigates to the first banner.
     *
     * @public
     */
    first(): void;
    /**
     * Navigates to the last banner.
     *
     * @public
     */
    last(): void;
    /**
     * Navigates to a specific index.
     *
     * @public
     */
    goTo(i: number): void;
    protected onIndexPropertyChanged(): void;
    protected onMaxLengthPropertyChanged(): void;
    protected onReversePropertyChanged(): void;
    protected onStackingPropertyChanged(): void;
    protected onOrientationPropertyChanged(): void;
    protected onDirPropertyChanged(): void;
    protected onDisabledPropertyChanged(_prev?: boolean, next?: boolean): void;
    private navigate;
    private emitChange;
    private clearSubscriptions;
    /**
     * Updates banner visibility, ordering and (optional) depth stacking transforms.
     *
     * @private
     */
    private updateLayout;
    /**
     * Attaches a one‑time transition end handler to a leaving banner (pager mode) to finalize its hidden state.
     * @private
     */
    private attachLeavingTransitionHandler;
}
/** @public */
export declare namespace BannerGroupElement {
    type Props = IBannerGroupElementProps;
}
/** @public */
declare global {
    interface HTMLElementTagNameMap {
        'mosaik-banner-group': BannerGroupElement;
    }
}
export {};
//# sourceMappingURL=BannerGroupElement.d.ts.map