import * as _angular_core from '@angular/core';
import { ElementRef, InjectionToken } from '@angular/core';
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 {
    readonly elementRef: ElementRef;
    private _contentDensityObserver;
    /** 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' */
    readonly barDesign: _angular_core.InputSignal<BarDesignType | undefined>;
    /** Whether the Bar component is used in Page Layout. */
    readonly inPage: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether the Bar component is used in Home Page Layout. */
    readonly inHomePage: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether the Bar component should remove the box-shadow on the bottom. */
    readonly clear: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** The size of the Page in Page responsive design.
     * Available sizes: 's' | 'm_l' | 'xl'
     */
    readonly size: _angular_core.InputSignal<SizeType>;
    /** Whether this bar is to be used for the search results initial suggestion title. */
    readonly initialSuggestionTitle: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Whether this bar is to be used for the search results initial suggestion subline. */
    readonly initialSuggestionSubline: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /** Aria role for the Bar
     * default is toolbar
     */
    readonly role: _angular_core.InputSignal<string>;
    /** @hidden */
    protected readonly cssClass: _angular_core.Signal<string>;
    /** @hidden */
    constructor(elementRef: ElementRef, _contentDensityObserver: ContentDensityObserver);
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarComponent, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<BarComponent, "[fd-bar]", never, { "barDesign": { "alias": "barDesign"; "required": false; "isSignal": true; }; "inPage": { "alias": "inPage"; "required": false; "isSignal": true; }; "inHomePage": { "alias": "inHomePage"; "required": false; "isSignal": true; }; "clear": { "alias": "clear"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "initialSuggestionTitle": { "alias": "initialSuggestionTitle"; "required": false; "isSignal": true; }; "initialSuggestionSubline": { "alias": "initialSuggestionSubline"; "required": false; "isSignal": true; }; "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 {
    /** Whether to stack the contents of this portion of the bar vertically. */
    readonly stackContentsVertically: _angular_core.InputSignalWithTransform<boolean, unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarLeftDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BarLeftDirective, "[fd-bar-left]", never, { "stackContentsVertically": { "alias": "stackContentsVertically"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * The middle section of the Bar component.
 */
declare class BarMiddleDirective {
    /** Whether to stack the contents of this portion of the bar vertically. */
    readonly stackContentsVertically: _angular_core.InputSignalWithTransform<boolean, unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarMiddleDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BarMiddleDirective, "[fd-bar-middle]", never, { "stackContentsVertically": { "alias": "stackContentsVertically"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

/**
 * The right side area of the Bar component.
 */
declare class BarRightDirective {
    /** Whether to stack the contents of this portion of the bar vertically. */
    readonly stackContentsVertically: _angular_core.InputSignalWithTransform<boolean, unknown>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<BarRightDirective, never>;
    static ɵdir: _angular_core.ɵɵDirectiveDeclaration<BarRightDirective, "[fd-bar-right]", never, { "stackContentsVertically": { "alias": "stackContentsVertically"; "required": false; "isSignal": true; }; }, {}, never, never, true, never>;
}

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

declare class ButtonBarComponent extends BaseButton {
    /** Whether the element should take the whole width of the container. */
    readonly fullWidth: _angular_core.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: _angular_core.InputSignal<ButtonType>;
    /** adding title to the button */
    readonly title: _angular_core.InputSignal<string | undefined>;
    /** the aria-labelledby ids to be associated with this element */
    readonly ariaLabelledby: _angular_core.InputSignal<string | undefined>;
    /** id for this element */
    readonly id: _angular_core.InputSignal<string>;
    /** @hidden */
    readonly buttonComponent: _angular_core.Signal<ButtonComponent | undefined>;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<ButtonBarComponent, never>;
    static ɵcmp: _angular_core.ɵɵ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: _angular_core.ɵɵFactoryDeclaration<BarModule, never>;
    static ɵmod: _angular_core.ɵɵ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: _angular_core.ɵɵ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 };
