import { Sizes } from '@m4l/styles';
import { Theme } from '@mui/material';
import { ButtonProps } from '../../../extended/mui/Button/types';
import { ACTION_FORM_SUBMIT_PROGRAMMATIC_KEY_COMPONENT } from './constanst';
import { ActionFormSubmitProgrammaticSlots } from './slots/ActionFormSubmitProgrammaticEnum';
import { M4LOverridesStyleRules } from '../../../../@types/augmentations';
import { FieldValues } from 'react-hook-form';
export interface ActionFormSubmitProgrammaticProps extends Omit<ButtonProps, 'label' | 'type'> {
    /**
     * Función que se ejecuta cuando el formulario se envía exitosamente.
     * Esta función recibe los datos del formulario validados.
     */
    onSubmit: (data: FieldValues) => void | Promise<void>;
    /**
     * Tamaño del botón (opcional).
     * @default 'medium'
     */
    size?: Extract<Sizes, 'small' | 'medium'>;
    /**
     * Clase CSS adicional para el componente.
     */
    className?: string;
    /**
     * Ancho del skeleton cuando está en estado de carga.
     */
    skeletonWidth?: string;
    /**
     * Etiqueta aria-label para accesibilidad.
     */
    'aria-label'?: string;
}
export type OwnerState = Pick<ButtonProps, 'size'>;
export interface ActionFormSubmitProgrammaticOwnerState extends ButtonProps, OwnerState {
}
export type ActionFormSubmitProgrammaticType = keyof typeof ActionFormSubmitProgrammaticSlots;
export type ActionFormSubmitProgrammaticStyles = M4LOverridesStyleRules<ActionFormSubmitProgrammaticSlots, typeof ACTION_FORM_SUBMIT_PROGRAMMATIC_KEY_COMPONENT, Theme>;
//# sourceMappingURL=types.d.ts.map