import * as i0 from '@angular/core';
import { OnChanges, OnInit, OnDestroy, ElementRef, InjectionToken } from '@angular/core';
import { CssClassBuilder } from '@fundamental-ngx/cdk/utils';
import { ContentDensityObserver } from '@fundamental-ngx/core/content-density';
import { BooleanInput } from '@angular/cdk/coercion';
import { BaseButton, ButtonType, ButtonComponent } from '@fundamental-ngx/core/button';

type SizeType = '' | 's' | 'm_l' | 'xl';
type BarDesignType = 'header' | 'subheader' | 'header-with-subheader' | 'footer' | 'floating-footer';
/**
 * The Bar component is a container that holds titles, buttons and input controls.
 * Its content is distributed in three areas - left, middle and right.
 * The Bar has 2 modes - Desktop (default) and Tablet/Mobile (cozy).
 */
declare class BarComponent implements OnChanges, OnInit, CssClassBuilder, OnDestroy {
    readonly elementRef: ElementRef;
    private _contentDensityObserver;
    /** user's custom classes */
    class: string;
    /** Whether the Bar component is used as a header, subheader, header-with-subheader,
     * footer or floating-footer.
     * Types available: 'header' | 'subheader' | 'header-with-subheader' | 'footer' | 'floating-footer' */
    barDesign: BarDesignType;
    /** Whether the Bar component is used in Page Layout. */
    inPage: boolean;
    /** Whether the Bar component is used in Home Page Layout. */
    inHomePage: boolean;
    /** Whether the Bar component should remove the box-shadow on the bottom. */
    clear: boolean;
    /** The size of the Page in Page responsive design.
     * Available sizes: 's' | 'm_l' | 'xl'
     */
    size: SizeType;
    /** Aria role for the Bar
     * default is toolbar
     */
    role: i0.InputSignal<string>;
    /** @hidden */
    private _subscriptions;
    /** @hidden */
    constructor(elementRef: ElementRef, _contentDensityObserver: ContentDensityObserver);
    /** @hidden
     * CssClassBuilder interface implementation
     * function must return single string
     * function is responsible for order which css classes are applied
     */
    buildComponentCssClass(): string[];
    /** @hidden */
    ngOnInit(): void;
    /** @hidden */
    ngOnDestroy(): void;
    /** @hidden */
    ngOnChanges(): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<BarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<BarComponent, "[fd-bar]", never, { "class": { "alias": "class"; "required": false; }; "barDesign": { "alias": "barDesign"; "required": false; }; "inPage": { "alias": "inPage"; "required": false; }; "inHomePage": { "alias": "inHomePage"; "required": false; }; "clear": { "alias": "clear"; "required": false; }; "size": { "alias": "size"; "required": false; }; "role": { "alias": "role"; "required": false; "isSignal": true; }; }, {}, never, ["[fd-bar-left]", "[fd-bar-middle]", "[fd-bar-right]", "*"], true, never>;
}

/**
 * The left side area of the Bar component.
 */
declare class BarLeftDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<BarLeftDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BarLeftDirective, "[fd-bar-left]", never, {}, {}, never, never, true, never>;
}

/**
 * The middle section of the Bar component.
 */
declare class BarMiddleDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<BarMiddleDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BarMiddleDirective, "[fd-bar-middle]", never, {}, {}, never, never, true, never>;
}

/**
 * The right side area of the Bar component.
 */
declare class BarRightDirective {
    static ɵfac: i0.ɵɵFactoryDeclaration<BarRightDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BarRightDirective, "[fd-bar-right]", never, {}, {}, never, never, true, never>;
}

/**
 * An element of the Bar.
 */
declare class BarElementDirective {
    /** Whether the element should take the whole width of the container. */
    fullWidth: boolean;
    /** @hidden */
    barElement: boolean;
    static ɵfac: i0.ɵɵFactoryDeclaration<BarElementDirective, never>;
    static ɵdir: i0.ɵɵDirectiveDeclaration<BarElementDirective, "fd-bar-element", never, { "fullWidth": { "alias": "fullWidth"; "required": false; }; }, {}, never, never, true, never>;
}

declare class ButtonBarComponent extends BaseButton {
    /** Whether the element should take the whole width of the container. */
    readonly fullWidth: i0.InputSignalWithTransform<boolean, BooleanInput>;
    /** The type of the button. Types include:
     * 'standard' | 'positive' | 'negative' | 'attention' | 'half' | 'ghost' | 'transparent' | 'emphasized' | 'menu'.
     * Default value is set to 'transparent'
     */
    readonly fdType: i0.InputSignal<ButtonType>;
    /** adding title to the button */
    readonly title: i0.InputSignal<string | undefined>;
    /** the aria-labelledby ids to be associated with this element */
    readonly ariaLabelledby: i0.InputSignal<string | undefined>;
    /** id for this element */
    readonly id: i0.InputSignal<string>;
    /** @hidden */
    readonly buttonComponent: i0.Signal<ButtonComponent | undefined>;
    static ɵfac: i0.ɵɵFactoryDeclaration<ButtonBarComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<ButtonBarComponent, "fd-button-bar", never, { "fullWidth": { "alias": "fullWidth"; "required": false; "isSignal": true; }; "fdType": { "alias": "fdType"; "required": false; "isSignal": true; }; "title": { "alias": "title"; "required": false; "isSignal": true; }; "ariaLabelledby": { "alias": "ariaLabelledby"; "required": false; "isSignal": true; }; "id": { "alias": "id"; "required": false; "isSignal": true; }; }, {}, never, ["*"], true, never>;
}

/**
 * @deprecated
 * Use direct imports of components and directives.
 */
declare class BarModule {
    static ɵfac: i0.ɵɵFactoryDeclaration<BarModule, never>;
    static ɵmod: i0.ɵɵNgModuleDeclaration<BarModule, never, [typeof BarComponent, typeof BarLeftDirective, typeof BarMiddleDirective, typeof BarRightDirective, typeof BarElementDirective, typeof ButtonBarComponent], [typeof BarComponent, typeof BarLeftDirective, typeof BarMiddleDirective, typeof BarRightDirective, typeof BarElementDirective, typeof ButtonBarComponent]>;
    static ɵinj: i0.ɵɵInjectorDeclaration<BarModule>;
}

declare const FD_BUTTON_BAR_COMPONENT: InjectionToken<unknown>;

export { BarComponent, BarElementDirective, BarLeftDirective, BarMiddleDirective, BarModule, BarRightDirective, ButtonBarComponent, FD_BUTTON_BAR_COMPONENT };
export type { BarDesignType, SizeType };
