import { SplitButtonPassThrough, SplitButtonIconPosition } from 'primeng/types/splitbutton';
export * from 'primeng/types/splitbutton';
import * as _angular_core from '@angular/core';
import { ElementRef, TemplateRef } from '@angular/core';
import { MotionOptions } from '@primeuix/motion';
import { MenuItem, TooltipOptions } from 'primeng/api';
import { BaseComponent } from 'primeng/basecomponent';
import * as i1 from 'primeng/bind';
import { Bind } from 'primeng/bind';
import { TieredMenu } from 'primeng/tieredmenu';
import { ButtonSeverity, ButtonSize, ButtonDirectiveOptions } from 'primeng/types/button';
import { CSSProperties, AppendTo } from 'primeng/types/shared';
import { BaseStyle } from 'primeng/base';

/**
 *
 * SplitButton groups a set of commands in an overlay with a default command.
 *
 * [Live Demo](https://www.primeng.org/splitbutton/)
 *
 * @module splitbuttonstyle
 *
 */
declare enum SplitButtonClasses {
    /**
     * Class name of the root element
     */
    root = "p-splitbutton",
    /**
     * Class name of the button element
     */
    pcButton = "p-splitbutton-button",
    /**
     * Class name of the dropdown element
     */
    pcDropdown = "p-splitbutton-dropdown"
}
declare class SplitButtonStyle extends BaseStyle {
    name: string;
    style: string;
    classes: {
        root: ({ instance }: {
            instance: any;
        }) => (string | {
            [x: string]: any;
            'p-splitbutton-raised': any;
            'p-splitbutton-rounded': any;
            'p-splitbutton-outlined': any;
            'p-splitbutton-text': any;
        })[];
        pcButton: string;
        pcDropdown: string;
    };
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonStyle, never>;
    static ɵprov: _angular_core.ɵɵInjectableDeclaration<SplitButtonStyle>;
}
interface SplitButtonStyle extends BaseStyle {
}

/**
 * SplitButton groups a set of commands in an overlay with a default command.
 * @group Components
 */
declare class SplitButton extends BaseComponent<SplitButtonPassThrough> {
    componentName: string;
    $pcSplitButton: SplitButton | undefined;
    bindDirectiveInstance: Bind;
    onAfterViewChecked(): void;
    /**
     * MenuModel instance to define the overlay items.
     * @group Props
     */
    model_: _angular_core.InputSignal<MenuItem[] | undefined>;
    /**
     * Defines the style of the button.
     * @group Props
     */
    severity: _angular_core.InputSignal<ButtonSeverity>;
    /**
     * Add a shadow to indicate elevation.
     * @group Props
     */
    raised: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Add a circular border radius to the button.
     * @group Props
     */
    rounded: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Add a textual class to the button without a background initially.
     * @group Props
     */
    text: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Add a border class without a background initially.
     * @group Props
     */
    outlined: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Defines the size of the button.
     * @group Props
     */
    size: _angular_core.InputSignal<ButtonSize | undefined>;
    /**
     * Add a plain textual class to the button without a background initially.
     * @group Props
     */
    plain: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Name of the icon.
     * @group Props
     */
    icon: _angular_core.InputSignal<string | undefined>;
    /**
     * Position of the icon.
     * @group Props
     */
    iconPos: _angular_core.InputSignal<SplitButtonIconPosition>;
    /**
     * Text of the button.
     * @group Props
     */
    label: _angular_core.InputSignal<string | undefined>;
    /**
     * Tooltip for the main button.
     * @group Props
     */
    tooltip: _angular_core.InputSignal<string | undefined>;
    /**
     * Tooltip options for the main button.
     * @group Props
     */
    tooltipOptions: _angular_core.InputSignal<TooltipOptions | undefined>;
    /**
     * Inline style of the overlay menu.
     * @group Props
     */
    menuStyle: _angular_core.InputSignal<CSSProperties>;
    /**
     * Style class of the overlay menu.
     * @group Props
     */
    menuStyleClass: _angular_core.InputSignal<string | undefined>;
    /**
     * Name of the dropdown icon.
     * @group Props
     */
    dropdownIcon: _angular_core.InputSignal<string | undefined>;
    /**
     * Target element to attach the overlay, valid values are "body" or a local ng-template variable of another element (note: use binding with brackets for template variables, e.g. [appendTo]="mydiv" for a div element having #mydiv as variable name).
     * @defaultValue 'body'
     * @group Props
     */
    appendTo: _angular_core.InputSignal<AppendTo>;
    /**
     * Indicates the direction of the element.
     * @group Props
     */
    dir: _angular_core.InputSignal<string | undefined>;
    /**
     * Defines a string that labels the expand button for accessibility.
     * @group Props
     */
    expandAriaLabel: _angular_core.InputSignal<string | undefined>;
    /**
     * The motion options.
     * @group Props
     */
    motionOptions: _angular_core.InputSignal<MotionOptions | undefined>;
    computedMotionOptions: _angular_core.Signal<MotionOptions>;
    /**
     * Button Props
     */
    buttonProps: _angular_core.InputSignal<ButtonDirectiveOptions | undefined>;
    /**
     * Menu Button Props
     */
    menuButtonProps: _angular_core.InputSignal<ButtonDirectiveOptions | undefined>;
    /**
     * When present, it specifies that the component should automatically get focus on load.
     * @group Props
     */
    autofocus: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When present, it specifies that the element should be disabled.
     * @group Props
     */
    disabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Index of the element in tabbing order.
     * @group Props
     */
    tabindex: _angular_core.InputSignalWithTransform<number | undefined, unknown>;
    /**
     * When present, it specifies that the menu button element should be disabled.
     * @group Props
     */
    menuButtonDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * When present, it specifies that the button element should be disabled.
     * @group Props
     */
    buttonDisabled: _angular_core.InputSignalWithTransform<boolean, unknown>;
    /**
     * Callback to invoke when default command button is clicked.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onClick: _angular_core.OutputEmitterRef<MouseEvent>;
    /**
     * Callback to invoke when overlay menu is hidden.
     * @group Emits
     */
    onMenuHide: _angular_core.OutputEmitterRef<void>;
    /**
     * Callback to invoke when overlay menu is shown.
     * @group Emits
     */
    onMenuShow: _angular_core.OutputEmitterRef<void>;
    /**
     * Callback to invoke when dropdown button is clicked.
     * @param {MouseEvent} event - Mouse event.
     * @group Emits
     */
    onDropdownClick: _angular_core.OutputEmitterRef<MouseEvent>;
    buttonViewChild: _angular_core.Signal<ElementRef<any> | undefined>;
    menu: _angular_core.Signal<TieredMenu | undefined>;
    /**
     * Custom content template.
     * @group Templates
     */
    contentTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    /**
     * Custom dropdown icon template.
     * @group Templates
     **/
    dropdownIconTemplate: _angular_core.Signal<TemplateRef<void> | undefined>;
    ariaId: string;
    isExpanded: _angular_core.WritableSignal<boolean>;
    _componentStyle: SplitButtonStyle;
    $appendTo: _angular_core.Signal<AppendTo>;
    $buttonDisabled: _angular_core.Signal<boolean>;
    $menuButtonDisabled: _angular_core.Signal<boolean>;
    onDefaultButtonClick(event: MouseEvent): void;
    onDropdownButtonClick(event?: MouseEvent): void;
    onDropdownButtonKeydown(event: KeyboardEvent): void;
    onHide(): void;
    onShow(): void;
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButton, never>;
    static ɵcmp: _angular_core.ɵɵComponentDeclaration<SplitButton, "p-splitbutton, p-split-button", never, { "model_": { "alias": "model"; "required": false; "isSignal": true; }; "severity": { "alias": "severity"; "required": false; "isSignal": true; }; "raised": { "alias": "raised"; "required": false; "isSignal": true; }; "rounded": { "alias": "rounded"; "required": false; "isSignal": true; }; "text": { "alias": "text"; "required": false; "isSignal": true; }; "outlined": { "alias": "outlined"; "required": false; "isSignal": true; }; "size": { "alias": "size"; "required": false; "isSignal": true; }; "plain": { "alias": "plain"; "required": false; "isSignal": true; }; "icon": { "alias": "icon"; "required": false; "isSignal": true; }; "iconPos": { "alias": "iconPos"; "required": false; "isSignal": true; }; "label": { "alias": "label"; "required": false; "isSignal": true; }; "tooltip": { "alias": "tooltip"; "required": false; "isSignal": true; }; "tooltipOptions": { "alias": "tooltipOptions"; "required": false; "isSignal": true; }; "menuStyle": { "alias": "menuStyle"; "required": false; "isSignal": true; }; "menuStyleClass": { "alias": "menuStyleClass"; "required": false; "isSignal": true; }; "dropdownIcon": { "alias": "dropdownIcon"; "required": false; "isSignal": true; }; "appendTo": { "alias": "appendTo"; "required": false; "isSignal": true; }; "dir": { "alias": "dir"; "required": false; "isSignal": true; }; "expandAriaLabel": { "alias": "expandAriaLabel"; "required": false; "isSignal": true; }; "motionOptions": { "alias": "motionOptions"; "required": false; "isSignal": true; }; "buttonProps": { "alias": "buttonProps"; "required": false; "isSignal": true; }; "menuButtonProps": { "alias": "menuButtonProps"; "required": false; "isSignal": true; }; "autofocus": { "alias": "autofocus"; "required": false; "isSignal": true; }; "disabled": { "alias": "disabled"; "required": false; "isSignal": true; }; "tabindex": { "alias": "tabindex"; "required": false; "isSignal": true; }; "menuButtonDisabled": { "alias": "menuButtonDisabled"; "required": false; "isSignal": true; }; "buttonDisabled": { "alias": "buttonDisabled"; "required": false; "isSignal": true; }; }, { "onClick": "onClick"; "onMenuHide": "onMenuHide"; "onMenuShow": "onMenuShow"; "onDropdownClick": "onDropdownClick"; }, ["contentTemplate", "dropdownIconTemplate"], never, true, [{ directive: typeof i1.Bind; inputs: {}; outputs: {}; }]>;
}
declare class SplitButtonModule {
    static ɵfac: _angular_core.ɵɵFactoryDeclaration<SplitButtonModule, never>;
    static ɵmod: _angular_core.ɵɵNgModuleDeclaration<SplitButtonModule, never, [typeof SplitButton], [typeof SplitButton]>;
    static ɵinj: _angular_core.ɵɵInjectorDeclaration<SplitButtonModule>;
}

export { SplitButton, SplitButtonClasses, SplitButtonModule, SplitButtonStyle };
