import { ReactNode } from 'react';
import { IColorsKeys, typography } from '../theme';
import { textDecorations } from './constants';
export type IBreakpoints = {
    SM: string;
    MD: string;
    LG: string;
    XL: string;
    XXL: string;
    [key: string]: string;
};
export type IBreakpointPropNames = 'breakpointSM' | 'breakpointMD' | 'breakpointLG' | 'breakpointXL' | 'breakpointXXL';
export type GenericProps = {
    /**
     * If false, stylings for this Component will be disabled, and rendered with plain, default browser styles. Default is `true`.
     */
    isStyled?: boolean;
    /**
     * Prop to add custom classes to the Component. Use themes where possible. Default is `an empty string`.
     */
    className?: string;
    /**
     * Prop to add an id to a Component. Default is `an empty string`.
     */
    id?: string;
};
export type MultiChildProp = {
    /**
     * Support for having one more more child elements for the parent component
     */
    children?: ReactNode | ReactNode[];
};
type StateStyle = {
    [key: string]: string;
};
export type ControlProps = {
    /**
     * Prop to control what happens when a Component is Hovered. Default is `an empty object`.
     */
    onHover?: StateStyle;
    /**
     * Prop to control what happens when a Component is set as Active. Default is `an empty object`.
     */
    onActive?: StateStyle;
    /**
     * Prop to control what happens when a Component is Hovered OR Focused. Default is `an empty object`.
     */
    onHocus?: StateStyle;
    /**
     * Prop to control what happens when a Component is Hovered OR set as Active. Default is `an empty object`.
     */
    onHacus?: StateStyle;
    /**
     * Prop to control what happens when a Component is Focused OR set as Active. Default is `an empty object`.
     */
    onFacus?: StateStyle;
};
export type TextDecorations = (typeof textDecorations)[number];
export type FontControls = {
    /**
     * Prop to control the fontFamily applied.
     */
    fontFamily?: keyof typeof typography.fontFamily;
    /**
     * Prop to control the fontSize applied.
     */
    fontSize?: keyof typeof typography.fontSize;
    /**
     * Prop to control the fontWeight applied.
     */
    fontWeight?: keyof typeof typography.fontWeight;
    /**
     * Prop to control the letterSpacing applied.
     */
    letterSpacing?: keyof typeof typography.letterSpacing;
    /**
     * Prop to control the lineHeight applied.
     */
    lineHeight?: keyof typeof typography.lineHeight;
    /**
     * Prop to control the color of the text.
     */
    color?: IColorsKeys | `${IColorsKeys}/${number}`;
};
export {};
