import type { IElementRef, OnInit } from '@melodicdev/core';
import type { Size } from '../../../types/index.js';
import type { ButtonVariant, ButtonType } from './button.types.js';
import '../../feedback/spinner/spinner.component.js';
/**
 * ml-button - A versatile button component with multiple variants and sizes
 *
 * @example
 * ```html
 * <ml-button>Click me</ml-button>
 * <ml-button variant="secondary">Secondary</ml-button>
 * <ml-button variant="outline" size="lg">Large Outline</ml-button>
 * <ml-button loading>Loading...</ml-button>
 * <ml-button disabled>Disabled</ml-button>
 * ```
 *
 * @slot default - Button label content
 * @slot icon-start - Icon before the label
 * @slot icon-end - Icon after the label
 *
 * @fires ml:click - Emitted when button is clicked (not disabled/loading)
 */
export declare class ButtonComponent implements IElementRef, OnInit {
    elementRef: HTMLElement;
    /** Button variant style */
    variant: ButtonVariant;
    /** Button size */
    size: Size;
    /** HTML button type */
    type: ButtonType;
    /** Disable the button */
    disabled: boolean;
    /** Show loading state */
    loading: boolean;
    /** Make button full width */
    fullWidth: boolean;
    onInit(): void;
    /** Whether the button is effectively disabled */
    get isDisabled(): boolean;
    /** Handle click events */
    handleClick: (event: MouseEvent) => void;
}
//# sourceMappingURL=button.component.d.ts.map