import { ClassProp } from 'class-variance-authority/types';
import { ClassValue } from 'clsx';
import { default as default_2 } from 'react';
import { GridProps as GridProps_2 } from '@radix-ui/themes';
import { icons } from 'lucide-react';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import * as LabelPrimitive from '@radix-ui/react-label';
import * as React_2 from 'react';
import { ReactNode } from 'react';
import { SetStateAction } from 'react';
import * as SwitchPrimitives from '@radix-ui/react-switch';
import * as TabsPrimitive from '@radix-ui/react-tabs';
import { VariantProps } from 'class-variance-authority';

export declare const AnimatedLoader: ({ text, className, }: {
    text?: string;
    className?: string;
}) => JSX_2.Element;

export declare const Avatar: default_2.ForwardRefExoticComponent<AvatarProps & default_2.RefAttributes<HTMLImageElement>>;

export declare interface AvatarProps extends default_2.ImgHTMLAttributes<HTMLImageElement>, VariantProps<typeof avatarVariants> {
}

declare const avatarVariants: (props?: ({
    variant?: "rounded" | "square" | null | undefined;
    size?: "sm" | "md" | "lg" | "xl" | "2xl" | "3xl" | null | undefined;
    bordered?: "border" | "none" | null | undefined;
} & ClassProp) | undefined) => string;

export declare const Button: React_2.ForwardRefExoticComponent<ButtonProps & React_2.RefAttributes<HTMLButtonElement>>;

export declare const ButtonGroup: React_2.FC<ButtonGroupProps>;

/**
 * TODO: WIP
 */
export declare interface ButtonGroupProps {
    children?: React_2.ReactNode[];
    className?: string;
}

export declare interface ButtonProps extends React_2.ButtonHTMLAttributes<HTMLButtonElement>, VariantProps<typeof buttonVariants> {
    toggleLeftIcon?: boolean;
    toggleRightIcon?: boolean;
    onClick?: (event: React_2.MouseEvent<HTMLButtonElement, MouseEvent>) => void;
    leftIcon?: keyof typeof UltimateIcons;
    rightIcon?: keyof typeof UltimateIcons;
    isLoading?: boolean;
    elevation?: number;
}

declare const buttonVariants: (props?: ({
    variant?: "default" | "danger" | "secondary" | "ghost" | null | undefined;
    size?: "sm" | "md" | "lg" | null | undefined;
} & ClassProp) | undefined) => string;

export declare const Card: React_2.ForwardRefExoticComponent<CardProps & React_2.RefAttributes<HTMLDivElement>>;

export declare const CardContent: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>>;

export declare const CardDescription: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLParagraphElement> & React_2.RefAttributes<HTMLParagraphElement>>;

export declare const CardFooter: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>>;

export declare const CardHeader: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLDivElement> & React_2.RefAttributes<HTMLDivElement>>;

export declare interface CardProps extends React_2.HTMLAttributes<HTMLDivElement> {
    title?: string;
    size?: CardSize;
    type?: FileType;
    url?: string;
    likeCount?: number;
    text?: string;
    className?: string;
    canShare?: boolean;
}

export declare type CardSize = "sm" | "md" | "lg";

export declare const CardTitle: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLHeadingElement> & React_2.RefAttributes<HTMLParagraphElement>>;

export declare const Checkbox: ({ checked, onCheckedChange, className, disabled, }: CheckboxProps) => JSX_2.Element;

export declare interface CheckboxProps {
    checked?: boolean;
    onCheckedChange?: (event: default_2.ChangeEvent<HTMLInputElement>) => void;
    className?: string;
    label?: string;
    labelPosition?: "left" | "right";
    disabled?: boolean;
}

export declare function cn(...inputs: ClassValue[]): string;

export declare const Divider: {
    ({ direction, size, className, ...props }: DividerProps): JSX_2.Element;
    displayName: string;
};

export declare interface DividerProps extends React_2.HTMLAttributes<HTMLDivElement> {
    direction?: "horizontal" | "vertical";
    size?: "sm" | "md" | "lg" | "xlg";
}

export declare type DocType = "pdf" | "xls" | "doc" | "ppt" | "3d";

export declare type FileType = "dDoc" | "dPage" | "whiteboard" | "note" | "link" | "media";

export declare const FloatingToolbar: default_2.ForwardRefExoticComponent<FloatingToolbarProps & default_2.RefAttributes<HTMLDivElement>>;

export declare interface FloatingToolbarProps extends default_2.AllHTMLAttributes<HTMLDivElement> {
    options: ReactNode[][];
    alignment?: "vertical" | "horizontal";
}

export declare const formatCounter: (number: number) => string;

export declare const GridLayout: (props: GridProps) => JSX_2.Element;

export declare type GridProps = GridProps_2;

export declare const Icon: default_2.ForwardRefExoticComponent<Omit<IconProps, "ref"> & default_2.RefAttributes<SVGSVGElement>>;

export declare const IconButton: ({ icon, variant, size, className, elevation, rounded, ...props }: IconButtonProps) => JSX_2.Element;

export declare interface IconButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement>, Pick<ButtonProps, "variant"> {
    icon: keyof typeof UltimateIcons | string;
    size?: "sm" | "md" | "lg";
    isLoading?: boolean;
    elevation?: number;
    rounded?: boolean;
}

export declare interface IconProps extends SvgProps_2, VariantProps<typeof iconVariants_2> {
    name: keyof typeof Icons;
    className?: string;
}

declare const Icons: {
    Camera: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Check: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    CheckboxEmpty: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Comment: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    ExternalLink: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    FilePlus: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    FileText: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Download: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Grid: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Heart: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    HeartBeat: ({ width, height, ...props }: IconProps) => JSX_2.Element;
    ImagePlus: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    InfoCircle: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Dashboard: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Link: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    List: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Notification: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    PanelLeft: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Paperclip: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    PenLine: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Pencil: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Placeholder: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Play: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Plus: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Question: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Search: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Section: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Settings: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Share2: default_2.ForwardRefExoticComponent<Omit<IconProps, "ref"> & default_2.RefAttributes<SVGSVGElement>>;
    Share: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Facebook: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Instagram: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Linkedin: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    X: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Trash: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Type: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Upload: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Users: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
    Close: ({ fill, width, height, ...props }: IconProps) => JSX_2.Element;
};

declare const iconVariants: (props?: ({
    size?: "sm" | "md" | "lg" | null | undefined;
} & ClassProp) | undefined) => string;

declare const iconVariants_2: (props?: ({
    size?: "sm" | "md" | "lg" | null | undefined;
} & ClassProp) | undefined) => string;

export declare const Label: React_2.ForwardRefExoticComponent<LabelProps & React_2.RefAttributes<HTMLLabelElement>>;

export declare interface LabelProps extends React_2.ComponentPropsWithoutRef<typeof LabelPrimitive.Root>, VariantProps<typeof labelVariants> {
    required?: boolean;
}

declare const labelVariants: (props?: ClassProp | undefined) => string;

export declare enum LayoutModes {
    LIST = "LIST",
    CARD = "CARD"
}

export declare const LucideIcon: default_2.ForwardRefExoticComponent<Omit<LucideIconProps, "ref"> & default_2.RefAttributes<SVGSVGElement>>;

export declare interface LucideIconProps extends SvgProps, VariantProps<typeof iconVariants> {
    name: keyof typeof UltimateIcons;
    className?: string;
    strokeWidth?: number;
}

export declare const SegmentedControl: default_2.ForwardRefExoticComponent<SegmentedControlProps & default_2.RefAttributes<HTMLDivElement>>;

export declare interface SegmentedControlProps extends default_2.AllHTMLAttributes<HTMLDivElement> {
    options: ReactNode[];
    container: boolean;
    currentState?: number;
    setCurrentState: default_2.Dispatch<SetStateAction<number>>;
    showActiveState?: boolean;
    disabled?: boolean;
    contentType?: "icon" | "text";
}

export declare type SortState = {
    keyName: string | null;
    order: "default" | "asc" | "desc";
};

export declare const StaticLoader: ({ text }: {
    text?: string;
}) => JSX_2.Element;

declare interface SvgProps extends default_2.SVGProps<SVGSVGElement> {
    fill?: string;
    stroke?: string;
}

declare interface SvgProps_2 extends default_2.SVGProps<SVGSVGElement> {
    fill?: string;
    stroke?: string;
}

export declare const Table: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableElement> & React_2.RefAttributes<HTMLTableElement>>;

export declare const TableBody: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;

export declare const TableCaption: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableCaptionElement> & React_2.RefAttributes<HTMLTableCaptionElement>>;

export declare const TableCell: React_2.ForwardRefExoticComponent<React_2.TdHTMLAttributes<HTMLTableCellElement> & React_2.RefAttributes<HTMLTableCellElement>>;

export declare type TableDataProps = {
    [key: string]: any;
};

export declare const TableFooter: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;

export declare const TableHead: React_2.ForwardRefExoticComponent<TableHeadProps & React_2.RefAttributes<HTMLTableCellElement>>;

export declare const TableHeader: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableSectionElement> & React_2.RefAttributes<HTMLTableSectionElement>>;

declare interface TableHeadProps extends React_2.ThHTMLAttributes<HTMLTableCellElement> {
    enableSorting?: boolean;
    sortOrder?: "default" | "asc" | "desc";
}

export declare const TableRow: React_2.ForwardRefExoticComponent<React_2.HTMLAttributes<HTMLTableRowElement> & React_2.RefAttributes<HTMLTableRowElement>>;

export declare const Tabs: React_2.ForwardRefExoticComponent<TabsPrimitive.TabsProps & React_2.RefAttributes<HTMLDivElement>>;

export declare const TabsContent: React_2.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsContentProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;

export declare const TabsList: React_2.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsListProps & React_2.RefAttributes<HTMLDivElement>, "ref"> & React_2.RefAttributes<HTMLDivElement>>;

export declare const TabsTrigger: React_2.ForwardRefExoticComponent<Omit<TabsPrimitive.TabsTriggerProps & React_2.RefAttributes<HTMLButtonElement>, "ref"> & React_2.RefAttributes<HTMLButtonElement>>;

export declare const Tag: React_2.ForwardRefExoticComponent<TagProps & React_2.RefAttributes<HTMLDivElement>>;

export declare interface TagProps extends React_2.HTMLAttributes<HTMLDivElement>, VariantProps<typeof tagVariants> {
    isRemovable?: boolean;
    onRemove?: () => void;
    icon?: keyof typeof icons | string | undefined;
}

declare const tagVariants: (props?: ({
    variant?: "transparent" | "gray" | "brand" | null | undefined;
} & ClassProp) | undefined) => string;

export declare const TextAreaField: React_2.ForwardRefExoticComponent<TextAreaFieldProps & React_2.RefAttributes<HTMLTextAreaElement>>;

export declare interface TextAreaFieldProps extends React_2.TextareaHTMLAttributes<HTMLTextAreaElement> {
    /**
     * The label for the textarea.
     */
    label?: string;
    /**
     * The helper text for the textarea.
     */
    message?: string;
    /**
     * Whether the textarea is valid.
     */
    isValid?: boolean;
}

export declare const TextField: React_2.ForwardRefExoticComponent<TextFieldProps & React_2.RefAttributes<HTMLInputElement>>;

export declare interface TextFieldProps extends React_2.InputHTMLAttributes<HTMLInputElement> {
    /**
     * The label for the text field.
     */
    label?: string;
    /**
     * The left icon for the text field.
     */
    leftIcon?: React_2.ReactNode;
    /**
     * The right icon for the text field.
     */
    rightIcon?: React_2.ReactNode;
    /**
     * Whether the text field is valid.
     */
    isValid?: boolean;
    /**
     * The helper text for the text field.
     */
    message?: string;
    /**
     * Event handler for the onChange event.
     */
    onChange?: (e: React_2.ChangeEvent<HTMLInputElement>) => void;
}

export declare const Toggle: React_2.ForwardRefExoticComponent<ToggleProps & React_2.RefAttributes<HTMLButtonElement>>;

export declare interface ToggleProps extends React_2.ComponentPropsWithoutRef<typeof SwitchPrimitives.Root>, VariantProps<typeof toggleVariants> {
    label?: string;
    labelPosition?: "left" | "right";
}

declare const toggleVariants: (props?: ({
    variant?: "default" | "hover" | "focus" | null | undefined;
} & ClassProp) | undefined) => string;

export declare const Tooltip: React_2.ForwardRefExoticComponent<TooltipProps & React_2.RefAttributes<HTMLElement>>;

export declare interface TooltipProps extends React_2.HTMLAttributes<HTMLElement>, VariantProps<typeof tooltipVariants> {
    text: string;
}

declare const tooltipVariants: (props?: ({
    position?: "left" | "right" | "bottom" | "top" | null | undefined;
    beakAlignment?: "end" | "center" | "start" | null | undefined;
    defaultVariants?: "variant" | "beakPosition" | null | undefined;
} & ClassProp) | undefined) => string;

declare const UltimateIcons: typeof icons & {
    File3d: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    FileWord: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    FilePdf: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    FilePpt: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    FileExcel: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Section: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    XSocial: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Farcaster: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Warpcast: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Orb: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Lens: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
    Hey: ({ width, height, ...props }: LucideIconProps) => JSX_2.Element;
};

export declare const useHoverAndLongPress: ({ delay, }: UseHoverAndLongPressProps) => {
    onMouseEnter: () => void;
    onMouseLeave: () => void;
    onTouchStart: () => void;
    onTouchEnd: () => void;
    isActive: boolean;
};

declare interface UseHoverAndLongPressProps {
    delay?: number;
}

export declare function useSortableData(initialData: TableDataProps[], defaultSortState?: SortState): {
    data: TableDataProps[];
    sortState: SortState;
    sortData: (keyName: string) => void;
};

export { }
