import { EventEmitter } from '@angular/core';
import * as i0 from "@angular/core";
type MaterialColor = 'primary' | 'accent' | 'warn';
type CustomColor = 'success' | 'caution';
/**
* Defines the visual style variant of the button based on Material Design specifications.
* - 'button': Basic text button with no elevation
* - 'raised': Button with elevation shadow
* - 'flat': Button with filled background (default)
* - 'stroked': Button with outlined border
* - 'icon': Compact icon-only button
* - 'fab': Large circular floating action button
* - 'mini-fab': Small circular floating action button
*/
export type ButtonVariant = 'button' | 'raised' | 'flat' | 'stroked' | 'icon' | 'fab' | 'mini-fab';
/**
* Color scheme for the button. Can be Material theme colors or custom colors.
*/
export type ButtonColor = MaterialColor | CustomColor | undefined;
/**
* HTML button type attribute value.
*/
export type ButtonType = 'button' | 'submit' | 'reset';
/**
* Size variant for textual buttons (button, raised, flat, stroked).
* Note: Size does not apply to icon, fab, or mini-fab variants.
*/
export type ButtonSize = 'normal' | 'mini';
/**
* A versatile button component based on Angular Material that supports multiple variants,
* colors, states, and accessibility features.
*
* @example
* ```html
*
*
* ```
*
* @example Icon button with accessibility label
* ```html
*
*
* ```
*/
export declare class ButtonComponent {
/**
* Material Symbol icon name to display in the button.
* Uses Material Symbols Outlined font.
*/
icon: string;
/**
* Text label to display on the button.
* Not displayed on icon-only variants (icon, fab, mini-fab).
*/
label: string;
/**
* Visual variant of the button.
* @default 'flat'
*/
variant: ButtonVariant;
/**
* Color scheme of the button. Supports Material theme colors
* (primary, accent, warn) and custom colors (success, caution).
* @default 'primary'
*/
color: ButtonColor;
/**
* HTML button type attribute.
* @default 'button'
*/
type: ButtonType;
/**
* Size variant. Only applies to textual buttons (button, raised, flat, stroked).
* @default 'normal'
*/
size: ButtonSize;
/**
* Whether the button is disabled. Prevents user interaction.
* @default false
*/
disabled: boolean;
/**
* Whether the button is in loading state. Shows a spinner and prevents interaction.
* @default false
*/
isLoading: boolean;
/**
* Whether the button should expand to fill its container width.
* @default false
*/
fullWidth: boolean;
/**
* Accessible label for the button. Required for icon-only buttons
* (icon, fab, mini-fab variants) to provide context for screen readers.
*/
ariaLabel?: string;
/**
* @internal
* Host binding for full-width styling.
*/
get isFullWidth(): boolean;
/**
* @internal
* Diameter of the loading spinner in pixels.
*/
spinnerDiameter: number;
/**
* Event emitted when the button is clicked and not disabled or loading.
*/
clicked: EventEmitter;
/**
* Returns the Material color if the current color is a Material theme color,
* otherwise returns undefined.
* @internal
*/
get materialColor(): 'primary' | 'accent' | 'warn' | undefined;
/**
* Returns the CSS class for custom colors, or empty string for Material colors.
* @internal
*/
get customColorClass(): string;
/**
* Returns the CSS class for mini size on textual variants, or empty string otherwise.
* @internal
*/
get sizeClass(): string;
/**
* Handles button click events. Only emits the clicked event if the button
* is not disabled and not in loading state.
* @internal
*/
handleClick(): void;
static ɵfac: i0.ɵɵFactoryDeclaration;
static ɵcmp: i0.ɵɵComponentDeclaration;
static ngAcceptInputType_disabled: unknown;
static ngAcceptInputType_isLoading: unknown;
static ngAcceptInputType_fullWidth: unknown;
}
export {};