import { ReactNode } from 'react';
export interface BtnPropsCommon {
    /**
     * Label for the button
     */
    label?: string;
    /**
     * Boolean value to disable the button
     */
    disabled?: boolean;
    /**
     * Onclick function for button
     */
    onClick?: () => void;
    /**
     * Button type
     * @default 'button'
     * @example 'submit'
     * @example 'button'
     */
    type?: 'button' | 'submit';
    /**
     *  form to accept id of form in string format
     */
    form?: string;
}
export interface DrawerProps {
    /**
     * To Open the Drawer
     */
    isOpen: boolean;
    /**
     * To Expand the Drawer
     */
    _isExpanded?: boolean;
    /**
     * To show and  hide the back button of the Drawer
     */
    isBackButtonVisible?: boolean;
    /**
     * To show and  hide the close button of the Drawer
     */
    _isCloseModalButtonVisible?: boolean;
    /**
     * Function to close the drawer
     */
    onClose?: () => void;
    /**
     * Function to go back in the drawer
     */
    onBackButtonClick?: () => void;
    /**
     * Size of the drawer medium = 550px large = 850px
     */
    size?: 'small' | 'medium' | 'large' | 'x-large';
    /**
     * Body Content of the drawer
     */
    children: ReactNode;
    /**
     * Header title for the drawer
     */
    title?: string | ReactNode;
    /**
     * To show the edit button on the header
     */
    showEditButton?: boolean;
    /**
     * To show the transition effect while the drawer comes
     */
    showTransition?: boolean;
    /**
     * Primary | Success button props
     */
    primaryButtonProps?: BtnPropsCommon;
    /**
     * Secondary | Cancel button props
     */
    secondaryButtonProps?: BtnPropsCommon;
    /**
     * Left side Primary Button | Cancel button props
     */
    leftPrimaryButtonProps?: BtnPropsCommon;
    /**
     * Left side Secondary | Cancel button props
     */
    leftSecondaryButtonProps?: BtnPropsCommon;
    /**
     * Left side Tertiary Button | Help button props
     */
    leftTertiaryButtonProps?: BtnPropsCommon;
    /**
     * Right side Tertiary Button | More Info button props
     */
    rightTertiaryButtonProps?: BtnPropsCommon;
    /**
     * Onclick function for edit button
     */
    onEdit?: () => void;
    /**
     * Background overlay for the drawer
     */
    overlay?: boolean;
    /**
     * displays footer if its true, default true
     */
    isFooterRequired?: boolean;
    /**
     * footer Content
     */
    footerContent?: ReactNode;
    /**
     * To show or hide the header
     */
    showHeader?: boolean;
    /**
     *  Custom back button icon
     * The icon to display for the back button.
     * If not provided, a default icon will be used.
     */
    backButtonIcon?: ReactNode;
    /**
     * Callback function when the close icon is clicked
     */
    onCloseIconClick?: () => void;
    /**
     * Custom header for the drawer, replacing the default header.
     * If provided, this will render in place of the default header.
     */
    customHeader?: ReactNode;
    /**
     * Custom footer for the drawer, replacing the default footer.
     * If provided, this will render in place of the default footer.
     */
    customFooter?: ReactNode;
    /**
     * Custom z-index for the drawer
     */
    zIndex?: number;
    /**
     * Custom top for the drawer
     */
    top?: string;
    /**
     * Height of the drawer
     */
    height?: string;
    /**
     *
     * width of the drawer
     */
    width?: string;
    /**
     * Position from right
     */
    right?: string | number;
    /**
     * Custom overflow for the drawer
     */
    overflow?: string;
    /**
     * Callback function returns a boolean value when the drawer is collapsed.
     */
    onCollapse?: (value: boolean) => void;
    /**This optional boolean prop determines whether the drawer body displays a scrollbar when its content overflows. */
    isScrollBar?: boolean;
    /**
     *To  Close the drawer when clicking outside of it.
     */
    isClickOutside?: boolean;
    ignoreRefs?: Array<React.RefObject<HTMLElement>>;
}
