import { AfterViewInit, EventEmitter, Injector, QueryList } from '@angular/core';
import { CoreBaseComponent } from '../common/base.component';
import { Layout } from '../common/layout';
import { SmeResponsiveWindowBreakpoints } from '../common/sme-responsive-window-manager.component';
import { LayoutConfig, LayoutDrivenType } from './layout-config';
import { LayoutDefinitionComponent } from './layout-definition.component';
import { LayoutItemComponent } from './layout-item.component';
import * as i0 from "@angular/core";
/**
 * Layout component
 */
export declare class LayoutComponent extends CoreBaseComponent implements AfterViewInit {
    /**
     * The source name to use for logging
     */
    protected get logSourceName(): string;
    /**
     * The layout items content children.
     */
    private layoutItems;
    /**
     * The layout definition content children.
     */
    private definitions;
    /**
     * The current layout definition value based on custom layout definition and the browser window size.
     */
    currentLayoutDefinition: LayoutDefinitionComponent;
    /**
     * The default horizontal space in between layout items.
     */
    itemHorizontalSpace: number;
    /**
     * The default vertical space in between layout items.
     */
    itemVerticalSpace: number;
    /**
     * If true, will always use full width of the row for rendering.
     */
    oneColumn: boolean;
    /**
     * If true, will always try to fill the whole row for each layout item.
     */
    tryToFillWholeRow: boolean;
    /**
     * The layout definition.
     */
    definition: {
        [columnCount: number]: {
            lowerWidth?: number;
            upperWidth?: number;
        };
    };
    /**
     * If false, it will not assign extra paddings to the right for the last layout item.
     */
    padLastItem: boolean;
    /**
     * If true, not extra right padding when there is only one item that uses the whole width of the row.
     */
    noExtraRightPaddingOneItemPerRow: boolean;
    /**
     * It determines whether the layout is for settings where it contains a left and right layout item.
     * If true, will apply special design for settings layout.
     * On phone-up, the left side navigation layout item will be using a fixed width by default 300px,
     * the right side layout item will be using the remaining width by default.
     *
     * On phone-down or 400% zoom, nothing is different from the regular settings page,
     * the left right layout will be transformed to top bottom layout.
     */
    layoutConfig: LayoutConfig;
    /**
     * Implementation of the Layout interface
     */
    layoutChanged: EventEmitter<void>;
    /**
     * Implementation of the Layout interface
     */
    windowBreakpointChanged: EventEmitter<void>;
    private columnCount;
    private columnSpanTotal;
    private layoutResponsiveWindowManager;
    private layoutDrivenType;
    private currentLayoutItemConfig;
    private readonly stylePixel;
    get currentLayoutDefinitionName(): string;
    get currentLayoutDrivenType(): LayoutDrivenType;
    get currentWindowBreakpoint(): SmeResponsiveWindowBreakpoints;
    get currentLayoutItems(): QueryList<LayoutItemComponent>;
    constructor(injector: Injector, layout: Layout);
    ngAfterViewInit(): void;
    /**
     * The open API for refreshing the control externally.
     */
    refresh(): void;
    /**
     * On layout changed event handler, occurs every time the layout has been changed.
     */
    onLayoutChanged(): void;
    /**
     * The deferred layout changed handler.
     */
    private deferredOnLayoutChanged;
    /**
     * The on window breakpoint changed handler.
     * Adding yield for component to get ElementRef after initialization.
     */
    onWindowBreakpointChanged(): void;
    protected getInitialHostClasses(): string[];
    protected updateLayout(): void;
    private updateLayoutConfig;
    private resetFlex;
    private setLayoutDrivenType;
    private getTotalColumnSpan;
    private updateCurrentLayoutDefinition;
    private layoutDefinitionWithColumnSpanCalculation;
    private configDrivenCalculation;
    /**
     * It deal with configurations that only has either percentage or number.
     * Aiming at performance optimization.
     *
     * @param layoutItems The layout item object array
     * @param availableLayoutWidthInPixel available width in pixel horizontally.
     */
    private configDrivenCalculationDefault;
    /**
     * It deal with configurations that only has both percentage and number.
     * Aiming at performance optimization.
     *
     * @param layoutItems The layout item object array
     * @param availableLayoutWidthInPixel available width in pixel horizontally.
     */
    private configDrivenCalculationHybrid;
    private updateCustomConfig;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutComponent, "sme-layout", never, { "itemHorizontalSpace": "itemHorizontalSpace"; "itemVerticalSpace": "itemVerticalSpace"; "oneColumn": "oneColumn"; "tryToFillWholeRow": "tryToFillWholeRow"; "definition": "definition"; "padLastItem": "padLastItem"; "noExtraRightPaddingOneItemPerRow": "noExtraRightPaddingOneItemPerRow"; "layoutConfig": "layoutConfig"; }, { "layoutChanged": "layoutChanged"; "windowBreakpointChanged": "windowBreakpointChanged"; }, ["layoutItems", "definitions"], ["sme-layout-item"], false, never>;
}
