import type { IOverlayBehavior } from '../../Abstracts/IOverlayBehavior';
import type { IDrawerOptions, IDrawerRef } from '../DrawerService';
import { type IDrawerStackBehaviorConfig } from './IDrawerStackBehaviorConfig';
/**
 * Behavior that manages a stack of drawers with decreasing widths.
 * Each drawer in the stack is offset from the previous one, creating
 * a cascading visual effect.
 *
 * @public
 */
export declare class DrawerStackBehavior implements IOverlayBehavior<IDrawerRef, IDrawerOptions> {
    private readonly _config;
    private readonly _stack;
    /**
     * Constructs a new instance of the `DrawerStackBehavior` class.
     *
     * @public
     * @param config - Optional configuration for stack behavior.
     */
    constructor(config?: Partial<IDrawerStackBehaviorConfig>);
    /**
     * Returns the current number of drawers in the stack.
     *
     * @public
     * @readonly
     */
    get stackSize(): number;
    /**
     * Returns the current stack configuration.
     *
     * @public
     * @readonly
     */
    get config(): Readonly<IDrawerStackBehaviorConfig>;
    /**
     * Returns an array of all drawer references in stack order (oldest first).
     *
     * @public
     * @readonly
     */
    get stack(): ReadonlyArray<IDrawerRef>;
    /**
     * Configures the drawer options before opening.
     * Calculates the appropriate width based on stack position.
     *
     * @public
     * @param options - The drawer options to configure.
     */
    configure(_options: Partial<IDrawerOptions>): void;
    /**
     * Attaches a drawer to the stack and applies stack styling.
     *
     * @public
     * @param ref - The drawer reference to attach.
     */
    attach(ref: IDrawerRef): void;
    /**
     * Detaches a drawer from the stack.
     *
     * @public
     * @param ref - The drawer reference to detach.
     */
    detach(ref: IDrawerRef): void;
    /**
     * Disposes of all resources and clears the stack.
     *
     * @public
     */
    dispose(): void;
    /**
     * Calculates the width for a drawer at a specific stack level.
     *
     * @public
     * @param stackLevel - The zero-based index of the drawer in the stack.
     * @param baseWidthOverride - Optional override for the base width.
     * @returns The calculated CSS width string.
     */
    calculateWidth(stackLevel: number, baseWidthOverride?: string): string;
    /**
     * Applies the stacked CSS class to all drawers except the topmost one.
     *
     * @private
     */
    private applyStackedClasses;
    /**
     * Recalculates and applies widths for all remaining drawers in the stack.
     * After a drawer is closed, we need to restore each drawer to its original width
     * (which may have been grown when larger drawers were opened on top).
     *
     * @private
     */
    private recalculateStackWidths;
    /**
     * Converts a CssLength to a string representation.
     * If the value is a number, it's treated as pixels and not suitable for percentage-based calculations.
     *
     * @private
     * @param value - The CssLength value to convert.
     * @returns The string representation, or undefined if it's a number (pixels).
     */
    private cssLengthToString;
    /**
     * Parses a percentage-based width string into a numeric value.
     *
     * @private
     * @param width - The CSS width string (e.g. "50%").
     * @returns The numeric percentage value, or null if not a percentage.
     */
    private parseWidthToPercentage;
    /**
     * Grows smaller drawers in the stack to match the size of a newly opened larger drawer.
     * Each existing drawer gets the new base width plus an offset based on its distance from the top.
     *
     * @private
     * @param newDrawerBaseWidth - The base width of the newly opened drawer.
     */
    private growSmallerDrawersToMatchLargest;
    /**
     * Calculates the z-index for a drawer at a specific stack level.
     *
     * @private
     * @param stackLevel - The zero-based index of the drawer in the stack.
     * @returns The calculated z-index value.
     */
    private calculateZIndex;
    /**
     * Applies stack-related styles to a drawer element.
     *
     * @private
     * @param ref - The drawer reference.
     * @param stackLevel - The stack level for this drawer.
     * @param computedWidth - The computed width for this drawer.
     */
    private applyStackStyles;
}
//# sourceMappingURL=DrawerStackBehavior.d.ts.map