import { NumberInput } from '@angular/cdk/coercion';
import * as i0 from '@angular/core';
import { OnInit, OnChanges, ElementRef, QueryList } from '@angular/core';
import { CssClassBuilder } from '@fundamental-ngx/cdk/utils';

/** Describes number of columns in grid horizontal dimension */
declare const GRID_COLUMNS_NUMBER = 12;
declare const CSS_CLASS_NAME: {
    readonly layoutGrid: "fd-container";
    readonly layoutGridNoHorizontalGap: "fd-container--no-horizontal-gap";
    readonly layoutGridNoVerticalGap: "fd-container--no-vertical-gap";
    readonly layoutGridNoGap: "fd-container--no-gap";
    readonly col: "fd-col";
    readonly colGrow: "fd-col--full";
    readonly colSizePrefix: "fd-col--";
    readonly mdColSizePrefix: "fd-col-md--";
    readonly lgColSizePrefix: "fd-col-lg--";
    readonly xlColSizePrefix: "fd-col-xl--";
    readonly colOffsetPrefix: "fd-col--offset-";
    readonly mdColOffsetPrefix: "fd-col-md--offset-";
    readonly lgColOffsetPrefix: "fd-col-lg--offset-";
    readonly xlColOffsetPrefix: "fd-col-xl--offset-";
};

declare class LayoutGridColDirective implements CssClassBuilder, OnInit, OnChanges {
    readonly elementRef: ElementRef;
    /** Defines the width of the element on the layout grid. */
    fdLayoutGridCol: NumberInput;
    /** Weather the column should take all available width */
    colGrow: boolean;
    /** Defines the width of the element on the layout grid for middle-size screen devices. */
    colMd: number;
    /** Defines the width of the element on the layout grid for large screen devices. */
    colLg: number;
    /** Defines the width of the element on the layout grid for extra-large screen devices. */
    colXl: number;
    /** Defines the offset width of the element on the layout grid. */
    colOffset: number;
    /** Defines the offset width of the element on the layout grid for middle-sized screen devices. */
    colOffsetMd: number;
    /** Defines the offset width of the element on the layout grid for large screen devices. */
    colOffsetLg: number;
    /** Defines the offset width of the element on the layout grid for extra-large screen devices. */
    colOffsetXl: number;
    /** @hidden */
    class: string;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    getCssClassWithColWidth(classPrefix: string, colWidth: NumberInput): string | null;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutGridColDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutGridColDirective, "[fd-layout-grid-col], [fdLayoutGridCol]", never, { "fdLayoutGridCol": { "alias": "fdLayoutGridCol"; "required": false; }; "colGrow": { "alias": "colGrow"; "required": false; }; "colMd": { "alias": "colMd"; "required": false; }; "colLg": { "alias": "colLg"; "required": false; }; "colXl": { "alias": "colXl"; "required": false; }; "colOffset": { "alias": "colOffset"; "required": false; }; "colOffsetMd": { "alias": "colOffsetMd"; "required": false; }; "colOffsetLg": { "alias": "colOffsetLg"; "required": false; }; "colOffsetXl": { "alias": "colOffsetXl"; "required": false; }; "class": { "alias": "class"; "required": false; }; }, {}, never, never, true, never>;
    static ngAcceptInputType_colGrow: unknown;
}

declare class LayoutGridRowDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutGridRowDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutGridRowDirective, "[fd-layout-grid-row], [fdLayoutGridRow]", never, {}, {}, never, never, true, never>;
}

/**
 * Use a layout grid to arrange components evenly in a grid layout.
 */
declare class LayoutGridComponent implements OnInit, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef;
    /** Custom classes */
    set class(userClass: string);
    /** Whether the grid should have a gap. */
    noGap: boolean;
    /** Whether the grid should have a horizontal gap. */
    noHorizontalGap: boolean;
    /** Whether the grid should have a vertical gap. */
    noVerticalGap: boolean;
    /** @hidden */
    _rowsQueryList: QueryList<LayoutGridRowDirective>;
    /** @hidden */
    private _class;
    /** @hidden */
    constructor(elementRef: ElementRef);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutGridComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutGridComponent, "fd-layout-grid, [fdLayoutGrid]", never, { "class": { "alias": "class"; "required": false; }; "noGap": { "alias": "noGap"; "required": false; }; "noHorizontalGap": { "alias": "noHorizontalGap"; "required": false; }; "noVerticalGap": { "alias": "noVerticalGap"; "required": false; }; }, {}, ["_rowsQueryList"], ["*"], true, never>;
}

declare class LayoutGridModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutGridModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<LayoutGridModule, never, [typeof LayoutGridComponent, typeof LayoutGridColDirective, typeof LayoutGridRowDirective], [typeof LayoutGridComponent, typeof LayoutGridColDirective, typeof LayoutGridRowDirective]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<LayoutGridModule>;
}

export { CSS_CLASS_NAME, GRID_COLUMNS_NUMBER, LayoutGridColDirective, LayoutGridComponent, LayoutGridModule, LayoutGridRowDirective };
