import { ReactNode } from 'react';
/**
 * Describes the directional arrow used in the Add Resource Button component.
 * The arrow specifies its direction (top, right, down) and associated menu options.
 *
 * @property {('top' | 'right' | 'down')} direction - Specifies the direction of the arrow.
 * @property {(Object | null)[]} menuOptions - The list of menu options displayed when the arrow button is active.
 * If null, no menu options will be shown.
 */
export interface DirectionalArrow {
    direction: string | 'top' | 'right' | 'down';
    menuOptions: {
        label: string;
        value: string | string[];
        icon?: string;
        disable?: boolean;
        tooltipForOption?: string;
        tooltipPlacementForOption?: 'top' | 'left' | 'right' | 'bottom' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined;
    }[];
}
/**
 * Props for the Add Resource Button component.
 *
 * @property {string} [id] - An optional unique identifier for the Add Resource Button.
 * @property {('primary' | 'secondary')} [variant] - Optional button style variant.
 * @property {DirectionalArrow[]} directionalArrow - An array of directional arrows, each specifying the direction and associated menu options. Default values will be provided if not passed.
 * @property {number} [zIndex] - An optional z-index value for positioning, defaults to 99.
 */
export interface AddResourceButtonProps {
    id?: string;
    variant?: 'primary' | 'secondary';
    directionalArrow: {
        /**
         * direction option: 'top' | 'right' | 'down'
         */
        direction: string;
        menuOptions: {
            label: string;
            value: string | string[];
            icon?: string;
            disable?: boolean;
            tooltipForOption?: string;
            tooltipPlacementForOption?: 'top' | 'left' | 'right' | 'bottom' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined;
        }[];
    }[];
    zIndex?: number;
    treeRowRef?: React.RefObject<HTMLDivElement | null>;
    menuOptionZIndex?: number;
    onMenuOptionClick?: (option: {
        label: string | ReactNode;
        value: any;
    }) => void;
    isFromTree?: boolean;
}
/**
 * Props for individual directional arrow buttons.
 *
 * @property {('top' | 'right' | 'down')} direction - The direction of the arrow button (top, right, or down).
 * @property {(Object | any)} menuOptions - The list of menu options or a generic value for dynamic content.
 * @property {() => void} onArrowClick - Callback function triggered when the arrow button is clicked.
 * @property {boolean} isActive - Specifies if the button is in an active state (highlighted when selected).
 */
export interface DirectionalArrowButtonProps {
    direction: 'top' | 'right' | 'down';
    menuOptions: {
        label: string;
        value: string | string[];
        icon?: string;
        disable?: boolean;
        tooltipForOption?: string;
        tooltipPlacementForOption?: 'top' | 'left' | 'right' | 'bottom' | 'top-start' | 'top-end' | 'bottom-start' | 'bottom-end' | undefined;
    }[];
    onArrowClick: () => void;
    onMenuOptionClick?: (option: {
        label: string | ReactNode;
        value: any;
    }) => void;
    isActive: boolean;
    variant?: 'primary' | 'secondary';
    treeRowRef?: React.RefObject<HTMLDivElement | null>;
    menuOptionZIndex?: number;
}
/**
 * Utility function to validate an array of directional arrows.
 * Ensures there is at least one valid arrow in the array.
 * If the array is empty, it returns a default arrow object.
 */
export declare const validateArrows: (arrows: DirectionalArrow[]) => DirectionalArrow[];
