import { ElementRef, OnDestroy, OnInit } from '@angular/core';
import * as i0 from "@angular/core";
/**
 * Directive that automatically resizes an element to fill its parent container.
 * This directive calculates and sets dimensions based on the parent container's size,
 * accounting for the element's position within the parent and any specified margins.
 *
 * It listens for window resize events and custom MJ application events to update dimensions.
 * The directive is context-aware and will automatically skip resizing in certain conditions.
 *
 * @example
 * <!-- Basic usage (fills both width and height) -->
 * <div mjFillContainer>Content</div>
 *
 * <!-- With custom settings -->
 * <div mjFillContainer [fillWidth]="true" [fillHeight]="true" [rightMargin]="10" [bottomMargin]="20">
 *   Content with margins
 * </div>
 */
export declare class FillContainer implements OnInit, OnDestroy {
    private elementRef;
    /** Whether to fill the parent's width. Default is true. */
    fillWidth: boolean;
    /** Whether to fill the parent's height. Default is true. */
    fillHeight: boolean;
    /** Right margin in pixels. Default is 0. */
    rightMargin: number;
    /** Bottom margin in pixels. Default is 0. */
    bottomMargin: number;
    /** Flag to globally disable resize functionality for all instances */
    static DisableResize: boolean;
    /** Flag to enable debug logging for resize operations */
    static OutputDebugInfo: boolean;
    /**
     * Outputs a debug message if OutputDebugInfo is enabled
     * @param message The message to output
     */
    protected static OutputDebugMessage(message: string): void;
    constructor(elementRef: ElementRef);
    /** Debounce time for resize events during active resizing (milliseconds) */
    private _resizeDebounceTime;
    /** Debounce time for resize end events (milliseconds) */
    private _resizeEndDebounceTime;
    /** Subscription for resize end events */
    private _resizeSubscription;
    /** Subscription for immediate resize events */
    private _resizeImmediateSubscription;
    /**
     * Initializes the directive, sets up resize event listeners and performs initial resize
     */
    ngOnInit(): void;
    /**
     * Cleans up subscriptions when the directive is destroyed
     */
    ngOnDestroy(): void;
    /**
     * Finds the nearest block-level parent element
     * @param element The element to find the parent for
     * @returns The parent element or null if none found
     */
    protected getParent(element: HTMLElement): HTMLElement | null;
    /**
     * Performs the actual resize calculation and applies dimensions to the element
     */
    protected resizeElement(): void;
    /**
     * Determines if resizing should be skipped for this element
     * @param el The element to check
     * @returns True if resizing should be skipped, false otherwise
     */
    protected shouldSkipResize(el: HTMLElement): boolean;
    /**
     * Checks if element is below a hidden tab
     * @param element The element to check
     * @returns True if element is below a hidden tab, false otherwise
     */
    protected elementBelowHiddenTab(element: HTMLElement): boolean;
    /**
     * Checks if element is within a grid
     * @param element The element to check
     * @returns True if element is within a grid, false otherwise
     */
    protected elementWithinGrid(element: HTMLElement): boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<FillContainer, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<FillContainer, "[mjFillContainer]", never, { "fillWidth": { "alias": "fillWidth"; "required": false; }; "fillHeight": { "alias": "fillHeight"; "required": false; }; "rightMargin": { "alias": "rightMargin"; "required": false; }; "bottomMargin": { "alias": "bottomMargin"; "required": false; }; }, {}, never, never, false, never>;
}
//# sourceMappingURL=ng-fill-container-directive.d.ts.map