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

/**
 * Layout Panel level actions such as add, remove, delete, sort, etc.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-header>
 *         <fd-layout-panel-actions>
 *             <button fd-button (click)="action()">Action</button>
 *         </fd-layout-panel-actions>
 *     </fd-layout-panel-header>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelActionsComponent {
    /** @hidden */
    fdLayoutPanelActionsClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelActionsComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelActionsComponent, "fd-layout-panel-actions", never, {}, {}, never, ["*"], true, never>;
}

/**
 * Main content of the panel can that hold lists, table, tree, text, form or any other information.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-body>
 *         Some text can go here!
 *     </fd-layout-panel-body>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelBodyComponent {
    /** @hidden */
    fdLayoutPanelBodyClass: boolean;
    /** Whether the edges of the panel should have bleeding padding. */
    bleed: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelBodyComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelBodyComponent, "fd-layout-panel-body", never, { "bleed": { "alias": "bleed"; "required": false; }; }, {}, never, ["*"], true, never>;
}

/**
 * Description of the panel title.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-header>
 *         <fd-layout-panel-head>
 *             <fd-layout-panel-description>This is a description for a panel title!</fd-layout-panel-description>
 *         </fd-layout-panel-head>
 *     </fd-layout-panel-header>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelDescriptionComponent {
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelDescriptionComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelDescriptionComponent, "fd-layout-panel-description", never, {}, {}, never, ["*"], true, never>;
}

/**
 * Layout Panel level filters that is specific to the data being displayed within the panel.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-filters>
 *         Some text can go here!
 *     </fd-layout-panel-filters>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelFiltersComponent {
    /** @hidden */
    fdLayoutPanelFiltersClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelFiltersComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelFiltersComponent, "fd-layout-panel-filters", never, {}, {}, never, ["*"], true, never>;
}

type FooterPosition = 'start' | 'end';
declare class LayoutPanelFooterComponent implements OnInit, OnChanges, CssClassBuilder {
    readonly elementRef: ElementRef<HTMLElement>;
    /** Apply user custom styles */
    class: string;
    /**
     * Footer variations, can be start (left aligned), end (right aligned) or null for default.
     * The default value will render the content of the footer in the middle.
     */
    position: Nullable<FooterPosition>;
    /** @hidden */
    constructor(elementRef: ElementRef<HTMLElement>);
    /** @hidden */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelFooterComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelFooterComponent, "fd-layout-panel-footer", never, { "class": { "alias": "class"; "required": false; }; "position": { "alias": "position"; "required": false; }; }, {}, never, ["*"], true, never>;
}

/**
 * Container for title and description.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-header>
 *         <fd-layout-panel-head>
 *             <fd-layout-panel-title>Title!</fd-layout-panel-title>
 *         </fd-layout-panel-head>
 *     </fd-layout-panel-header>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelHeadComponent {
    /** @hidden */
    fdLayoutPanelHeadClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelHeadComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelHeadComponent, "fd-layout-panel-head", never, {}, {}, never, ["*"], true, never>;
}

/**
 * Header of the panel. Contains a head and actions.
 *
 * ```html
 * <fd-layout-panel>
 *     <fd-layout-panel-header>
 *         <fd-layout-panel-head>
 *             <fd-layout-panel-title>Title!</fd-layout-panel-title>
 *         </fd-layout-panel-head>
 *     </fd-layout-panel-header>
 * </fd-layout-panel>
 * ```
 */
declare class LayoutPanelHeaderComponent {
    /** @hidden */
    fdLayoutPanelHeaderClass: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelHeaderComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelHeaderComponent, "fd-layout-panel-header", never, {}, {}, never, ["fd-layout-panel-head", "fd-layout-panel-actions"], true, never>;
}

/**
 * Applies the panel title style to a header element. It can be used with any header level.
 *
 * ```html
 * <h1 fd-layout-panel-title>Layout Panel Title</h1>
 * <h3 fd-layout-panel-title>Layout Panel Title</h3>
 * ```
 */
declare class LayoutPanelTitleDirective {
    /** @hidden */
    fdLayoutPanelTitleClass: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelTitleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<LayoutPanelTitleDirective, "[fd-layout-panel-title]", never, {}, {}, never, never, true, never>;
}

/**
 * Layout Panels are used to encapsulate part of the content, form elements, lists, collections, etc., on a page.
 */
declare class LayoutPanelComponent implements OnChanges, OnInit {
    private elRef;
    /** @Input Background image of the panel. */
    backgroundImage: string;
    /** Id for the layout panel element. */
    id: string;
    /** @hidden */
    fdLayoutPanelClass: boolean;
    /** Whether the background of the panel should be transparent. */
    transparent: boolean;
    /** @hidden */
    constructor(elRef: ElementRef);
    /** @hidden */
    ngOnChanges(): void;
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    private _applyBackgroundImage;
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<LayoutPanelComponent, "fd-layout-panel", never, { "backgroundImage": { "alias": "backgroundImage"; "required": false; }; "id": { "alias": "id"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; }; }, {}, never, ["fd-layout-panel-header", "fd-layout-panel-filters", "fd-layout-panel-body", "fd-layout-panel-footer", "*"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class LayoutPanelModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<LayoutPanelModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<LayoutPanelModule, never, [typeof LayoutPanelComponent, typeof LayoutPanelHeaderComponent, typeof LayoutPanelHeadComponent, typeof LayoutPanelTitleDirective, typeof LayoutPanelDescriptionComponent, typeof LayoutPanelActionsComponent, typeof LayoutPanelFiltersComponent, typeof LayoutPanelBodyComponent, typeof LayoutPanelFooterComponent], [typeof LayoutPanelComponent, typeof LayoutPanelHeaderComponent, typeof LayoutPanelHeadComponent, typeof LayoutPanelTitleDirective, typeof LayoutPanelDescriptionComponent, typeof LayoutPanelActionsComponent, typeof LayoutPanelFiltersComponent, typeof LayoutPanelBodyComponent, typeof LayoutPanelFooterComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<LayoutPanelModule>;
}

export { LayoutPanelActionsComponent, LayoutPanelBodyComponent, LayoutPanelComponent, LayoutPanelDescriptionComponent, LayoutPanelFiltersComponent, LayoutPanelFooterComponent, LayoutPanelHeadComponent, LayoutPanelHeaderComponent, LayoutPanelModule, LayoutPanelTitleDirective };
export type { FooterPosition };
