import { ChangeDetectorRef, ElementRef, EventEmitter, OnDestroy, OnInit, Renderer2 } from '@angular/core';
import { TsWindowService } from '@terminus/ngx-tools/browser';
import { TsStyleThemeTypes } from '@terminus/ui/utilities';
/**
* Define the allowed {@link TsButtonComponent} action types
*/
export declare type TsButtonActionTypes = 'Button' | 'Submit' | 'Menu' | 'Reset';
/**
* Define the allowed {@link TsButtonComponent} action types
*/
export declare type TsButtonFunctionTypes = 'button' | 'search' | 'submit';
/**
* Define the allowed {@link TsButtonComponent} format types
*/
export declare type TsButtonFormatTypes = 'filled' | 'hollow' | 'collapsable' | 'collapsible';
/**
* @internal
*/
export declare const tsButtonFormatTypesArray: string[];
/**
* A presentational component to render a button
*
* #### QA CSS CLASSES
* - `qa-button`: Placed on the button element used for this component
*
* @example
* Click Me!
*
* https://getterminus.github.io/ui-demos-release/components/button
*/
export declare class TsButtonComponent implements OnInit, OnDestroy {
private changeDetectorRef;
private windowService;
private renderer;
/**
* Store a reference to the timeout needed for collapsible buttons
*/
private collapseTimeoutId;
/**
* Define the delay before the rounded button automatically collapses
*/
collapseDelay: number | undefined;
/**
* The flag that defines if the button is collapsed or expanded
*/
isCollapsed: boolean;
/**
* A flag to determine if click events should be intercepted.
*
* Set by {@link TsConfirmationDirective}
*/
interceptClick: boolean;
/**
* Store the original event from a click (used when `interceptClick` is true)
*
* @internal
*
* Used by {@link TsConfirmationDirective}
*/
originalClickEvent: MouseEvent;
/**
* Define the default component ID
*/
readonly uid: string;
/**
* Getter returning a boolean based on both the component `isDisabled` flag and the FormControl's disabled status
*/
get shouldBeDisabled(): boolean;
/**
* Provide access to the inner button element
*/
button: ElementRef;
/**
* Define the action for the aria-label. {@link TsButtonActionTypes}
*/
actionName: TsButtonActionTypes;
/**
* Define the button type. {@link TsButtonFunctionTypes}
*/
buttonType: TsButtonFunctionTypes;
/**
* Define the collapsed value and trigger the delay if needed
*
* @param value
*/
set collapsed(value: boolean);
/**
* Define the button format. {@link TsButtonFormatTypes}
*
* @param value
*/
set format(value: TsButtonFormatTypes);
get format(): TsButtonFormatTypes;
private _format;
/**
* Define a Material icon to include
*/
iconName: string | undefined;
/**
* Define if the button is disabled
*/
isDisabled: boolean;
/**
* Define an ID for the component
*
* @param value
*/
set id(value: string);
get id(): string;
protected _id: string;
/**
* Define if the progress indicator should show
*/
showProgress: boolean;
/**
* Define the tabindex for the button
*/
tabIndex: number;
/**
* Define the theme
*
* @param value
*/
set theme(value: TsStyleThemeTypes);
get theme(): TsStyleThemeTypes;
private _theme;
/**
* Pass the click event through to the parent
*/
readonly clicked: EventEmitter;
constructor(changeDetectorRef: ChangeDetectorRef, windowService: TsWindowService, renderer: Renderer2);
/**
* Collapse after delay (if set)
*/
ngOnInit(): void;
/**
* Clear any existing timeout
*/
ngOnDestroy(): void;
/**
* Handle button clicks
*
* @internal
*
* @param event - The MouseEvent
*/
clickedButton(event: MouseEvent): void;
/**
* Collapse the button after a delay
*
* NOTE: I'm not entirely sure why this `detectChanges` is needed. Supposedly zone.js should be patching setTimeout automatically.
*
* @param delay - The time to delay before collapsing the button
* @returns The ID of the timeout
*/
private collapseWithDelay;
/**
* Update button classes (theme|format)
*
* @param classname - The classname to add to the button
*/
private updateClasses;
}