import { AfterViewInit, ElementRef, EventEmitter, InjectionToken, OnChanges, OnInit, SimpleChanges } from '@angular/core';
import { UnaryFunction } from 'rxjs';
import { ActionTypes } from '../../../../core';
import * as i0 from "@angular/core";
export interface ButtonClickEvent {
    event: MouseEvent;
    setLoading: (state?: boolean) => void;
    pipe: <T>() => UnaryFunction<T, T>;
}
export type ButtonAppearanceType = 'stroked' | 'filled' | 'text';
export type ButtonThemeType = 'primary' | 'secondary' | 'tertiary' | 'error' | 'custom';
export type ButtonComponentType = InstanceType<typeof CacButtonComponent>;
export declare const BUTTON_COMPONENT_CONFIG: InjectionToken<Partial<CacButtonComponent>>;
export declare class CacButtonComponent implements OnInit, AfterViewInit, OnChanges {
    btnElement?: ElementRef<HTMLButtonElement>;
    icon?: string;
    iconPosition: 'prefix' | 'suffix';
    appearance: ButtonAppearanceType;
    tonal: boolean;
    elevated: boolean;
    theme: ButtonThemeType;
    disabled?: boolean | null;
    loadingProp?: boolean;
    iconSize: string;
    padding: string;
    fitContent: boolean;
    align?: 'start' | 'end' | 'center';
    route?: string[];
    tab: number;
    permission?: string;
    action?: ActionTypes | ActionTypes[];
    onClick: EventEmitter<ButtonClickEvent>;
    filledClass: boolean;
    strokedClass: boolean;
    textClass: boolean;
    isElevated: boolean;
    isTonal: boolean;
    isClicking: boolean;
    primaryClass: boolean;
    secondaryClass: boolean;
    tertiaryClass: boolean;
    errorClass: boolean;
    disabledClass: boolean;
    cursorNotAllowed: boolean;
    loading: import("@angular/core").WritableSignal<boolean>;
    insufficientPermission: import("@angular/core").WritableSignal<boolean>;
    constructor();
    ngOnInit(): void;
    ngAfterViewInit(): void;
    ngOnChanges(changes: SimpleChanges): void;
    onPointerDown(): void;
    onPointerCancel(): void;
    onPointerLeave(): void;
    onPointerUp(): void;
    onClickEvent(e: MouseEvent): void;
    createClickEvent(mouseEvent: MouseEvent | undefined): ButtonClickEvent;
    private setTheme;
    private checkPermission;
    private setDisabledClass;
    static ɵfac: i0.ɵɵFactoryDeclaration<CacButtonComponent, never>;
    static ɵcmp: i0.ɵɵComponentDeclaration<CacButtonComponent, "cac-button", never, { "icon": { "alias": "icon"; "required": false; }; "iconPosition": { "alias": "iconPosition"; "required": false; }; "appearance": { "alias": "appearance"; "required": false; }; "tonal": { "alias": "tonal"; "required": false; }; "elevated": { "alias": "elevated"; "required": false; }; "theme": { "alias": "theme"; "required": false; }; "disabled": { "alias": "disabled"; "required": false; }; "loadingProp": { "alias": "loading"; "required": false; }; "iconSize": { "alias": "iconSize"; "required": false; }; "padding": { "alias": "padding"; "required": false; }; "fitContent": { "alias": "fitContent"; "required": false; }; "align": { "alias": "align"; "required": false; }; "route": { "alias": "route"; "required": false; }; "tab": { "alias": "tab"; "required": false; }; "permission": { "alias": "permission"; "required": false; }; "action": { "alias": "action"; "required": false; }; }, { "onClick": "onClick"; }, never, ["*"], true, never>;
}
