import * as i0 from '@angular/core';
import { ElementRef, EventEmitter } from '@angular/core';
import { Nullable } from '@fundamental-ngx/cdk/utils';
import * as i4 from '@fundamental-ngx/core/content-density';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';

/**
 * Applies the panel content style to a div element.
 *
 * ```html
 * <div fd-panel-content>Panel Content</div>
 * ```
 */
declare class PanelContentDirective {
    /** Custom height of the content container. */
    height: Nullable<string>;
    /** Custom min-height of the content container. */
    minHeight: Nullable<string>;
    /** Custom max-height of the content container. */
    maxHeight: Nullable<string>;
    /** aria-label attribute of the host element element. */
    ariaLabel: Nullable<string>;
    /** aria-labelledby attribute of the host element element. */
    ariaLabelledBy: Nullable<string>;
    /** role attribute of the host element. */
    role: string;
    /** Whether the content should have no padding. */
    noPadding: i0.InputSignalWithTransform<boolean, unknown>;
    /** Whether the content has transparent background. */
    transparent: i0.InputSignalWithTransform<boolean, unknown>;
    /** Id of the host element. */
    set id(value: string | undefined);
    get id(): string;
    /** @hidden */
    private readonly _defaultId;
    /** @hidden */
    private _id;
    static ɵfac: i0.ɵɵFactoryDeclaration<PanelContentDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PanelContentDirective, "[fd-panel-content]", never, { "height": { "alias": "height"; "required": false; }; "minHeight": { "alias": "minHeight"; "required": false; }; "maxHeight": { "alias": "maxHeight"; "required": false; }; "ariaLabel": { "alias": "ariaLabel"; "required": false; }; "ariaLabelledBy": { "alias": "ariaLabelledBy"; "required": false; }; "role": { "alias": "role"; "required": false; }; "noPadding": { "alias": "noPadding"; "required": false; "isSignal": true; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * Applies the panel title style to a header element. It can be used with any header level.
 *
 * ```html
 * <h5 fd-panel-title>Panel Title</h5>
 * ```
 */
declare class PanelTitleDirective {
    /** @hidden */
    readonly fdPanelTitleClass: boolean;
    /** Id of the host element. */
    id: string;
    static ɵfac: i0.ɵɵFactoryDeclaration<PanelTitleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<PanelTitleDirective, "[fd-panel-title]", never, { "id": { "alias": "id"; "required": false; }; }, {}, never, never, true, never>;
}

/**
 * The panel is a container for grouping and displaying information
 * Types: Expandable (default) and Fixed
 * Modes: Tablet/Mobile (default) and Desktop (compact)
 */
declare class PanelComponent {
    readonly elementRef: ElementRef;
    readonly _contentDensityObserver: ContentDensityObserver;
    /** User's custom classes */
    class: string;
    /** Whether the Panel is fixed */
    fixed: boolean;
    /** Id of the panel element. */
    id: string;
    /** Id of the expand button */
    expandId: string;
    /** aria-label of the expand button */
    expandAriaLabel: Nullable<string>;
    /** aria-labelledby of the expand button */
    expandAriaLabelledBy: Nullable<string>;
    /** Whether the Panel Content is expanded */
    set expanded(value: boolean);
    get expanded(): boolean;
    /** Output event triggered when the Expand button is clicked */
    expandedChange: EventEmitter<boolean>;
    /** Reference to panel content */
    panelContent: Nullable<PanelContentDirective>;
    /** Whether the panel (header and content) is transparent */
    transparent: i0.InputSignalWithTransform<boolean, unknown>;
    /** Whether the panel has no border radius */
    noRadius: i0.InputSignalWithTransform<boolean, unknown>;
    /** @hidden */
    protected readonly buttonIcon: i0.Signal<"slim-arrow-down" | "slim-arrow-left" | "slim-arrow-right">;
    /** @hidden */
    private readonly _expanded;
    /** @hidden */
    private readonly _rtlService;
    /** @hidden */
    constructor(elementRef: ElementRef, _contentDensityObserver: ContentDensityObserver);
    /** Methods that toggles the Panel Content */
    toggleExpand(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<PanelComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<PanelComponent, "fd-panel", never, { "class": { "alias": "class"; "required": false; }; "fixed": { "alias": "fixed"; "required": false; }; "id": { "alias": "id"; "required": false; }; "expandId": { "alias": "expandId"; "required": false; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; }; "expandAriaLabelledBy": { "alias": "expandAriaLabelledBy"; "required": false; }; "expanded": { "alias": "expanded"; "required": false; }; "transparent": { "alias": "transparent"; "required": false; "isSignal": true; }; "noRadius": { "alias": "noRadius"; "required": false; "isSignal": true; }; }, { "expandedChange": "expandedChange"; }, ["panelContent"], ["[fd-panel-title]", "*", "[fd-panel-content]"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of PanelComponent, PanelContentDirective, PanelTitleDirective
 */
declare class PanelModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<PanelModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<PanelModule, never, [typeof PanelComponent, typeof PanelContentDirective, typeof PanelTitleDirective, typeof i4.ContentDensityModule], [typeof PanelComponent, typeof PanelContentDirective, typeof PanelTitleDirective, typeof i4.ContentDensityModule]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<PanelModule>;
}

export { PanelComponent, PanelContentDirective, PanelModule, PanelTitleDirective };
