import { ButtonHTMLAttributes } from 'react';
import { ClassProp } from 'class-variance-authority/types';
import { ComponentProps } from 'react';
import { ComponentPropsWithRef } from 'react';
import { ComponentType } from 'react';
import { Context } from 'react';
import { default as default_2 } from 'react';
import { ForwardRefExoticComponent } from 'react';
import { FunctionComponent } from 'react';
import { HTMLAttributes } from 'react';
import { JSX as JSX_2 } from 'react/jsx-runtime';
import { LinkProps } from 'react-router-dom';
import { Location as Location_2 } from 'react-router-dom';
import { MouseEvent as MouseEvent_2 } from 'react';
import { NavigateFunction } from 'react-router-dom';
import { NavLinkProps } from 'react-router-dom';
import { OutletProps } from 'react-router-dom';
import { Params } from 'react-router-dom';
import { PropsWithChildren } from 'react';
import { ReactNode } from 'react';
import { RefAttributes } from 'react';
import { RefObject } from 'react';
import { SetURLSearchParams } from 'react-router-dom';
import { SVGProps } from 'react';
import * as TooltipPrimitive from '@radix-ui/react-tooltip';
import { UIMatch } from 'react-router-dom';
import { VariantProps } from 'class-variance-authority';

declare interface ActionData {
    iconName?: IconPropsV2['name'];
    to?: string;
    title: string;
    onClick?: () => void;
    isDanger?: boolean;
    disabled?: boolean;
    tooltip?: Pick<TooltipProps, 'title' | 'content'>;
}

declare interface BaseIconPropsV2 extends Omit<SVGProps<SVGSVGElement>, 'color'> {
    size?: VariantProps<typeof iconVariants>['size'];
    skipSize?: boolean;
    color?: IconV2Color;
}

declare type ButtonProps = CommonButtonProps & (ButtonPropsIconOnlyRequired | ButtonPropsIconOnlyIgnored | ButtonPropsRegular);

declare type ButtonPropsIconOnlyIgnored = {
    iconOnly: true;
    ignoreIconOnlyTooltip: true;
    tooltipProps?: never;
};

declare type ButtonPropsIconOnlyRequired = {
    iconOnly: true;
    tooltipProps: ButtonTooltipProps;
};

declare type ButtonPropsRegular = {
    iconOnly?: boolean;
    tooltipProps?: ButtonTooltipProps;
};

declare type ButtonSizes = VariantProps<typeof buttonVariants>['size'];

declare type ButtonTooltipProps = Pick<TooltipProps, 'title' | 'content' | 'side' | 'align'>;

declare type ButtonVariants = VariantProps<typeof buttonVariants>['variant'];

declare const buttonVariants: (props?: ({
    variant?: "transparent" | "primary" | "secondary" | "outline" | "link" | "ai" | "ghost" | null | undefined;
    size?: "sm" | "md" | "3xs" | "2xs" | "xs" | null | undefined;
    rounded?: boolean | null | undefined;
    theme?: "default" | "danger" | "success" | null | undefined;
} & ClassProp) | undefined) => string;

export declare enum ColorType {
    Standard = "std",
    Tritanopia = "tri",
    ProtanopiaAndDeuteranopia = "pnd"
}

declare type CommonButtonProps = Omit<ButtonHTMLAttributes<HTMLButtonElement>, 'onClick'> & VariantProps<typeof buttonVariants> & {
    asChild?: boolean;
    loading?: boolean;
    rounded?: boolean;
    onClick?: (event: React.MouseEvent<HTMLButtonElement>) => void | Promise<unknown>;
};

declare interface ComponentContextValue {
    RbacButton: default_2.ComponentType<RbacButtonProps & RefAttributes<HTMLButtonElement>>;
    RbacSplitButton: <T extends string>(props: RbacSplitButtonProps<T>) => JSX.Element;
    RbacMoreActionsTooltip: default_2.ForwardRefExoticComponent<RbacMoreActionsTooltipProps & RefAttributes<HTMLButtonElement>>;
}

export declare const ComponentProvider: ({ components, children }: {
    components: ComponentContextValue;
    children: ReactNode;
}) => JSX_2.Element;

export declare enum ContrastType {
    Standard = "std",
    Low = "low",
    High = "high"
}

export declare const defaultTheme: FullTheme;

export declare const DialogOpenContext: Context<DialogOpenContextValue | undefined>;

declare interface DialogOpenContextValue {
    open?: boolean;
}

/**
 * DialogProvider component manages focus for dialog triggers.
 * It ensures that the last focused element is restored when the dialog is closed.
 */
export declare const DialogProvider: ({ children }: {
    children: ReactNode;
}) => JSX_2.Element;

declare interface ExtendedRouteProps {
    path?: string;
    exact?: boolean;
    render?: (props: object) => ReactNode;
    children?: ReactNode;
}

export declare type FullTheme = `${ModeType}-${ColorType}-${ContrastType}`;

export declare const getT: (translator: TFunction) => {
    t: (key: string, fallback?: string, options?: Options) => string;
};

declare const iconColorVariants: (props?: ({
    color?: "inherit" | "danger" | "warning" | "success" | "info" | "merged" | "risk" | "neutral" | null | undefined;
} & ClassProp) | undefined) => string;

declare interface IconDefaultPropsV2 extends BaseIconPropsV2 {
    name: IconV2NamesType;
    fallback?: never;
}

declare interface IconFallbackPropsV2 extends BaseIconPropsV2 {
    name?: IconV2NamesType;
    fallback: IconV2NamesType;
}

/**
 * Harness Design System
 * Generated icon map - DO NOT EDIT DIRECTLY
 */
declare const IconNameMapV2: {
    'account-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    account: FunctionComponent<SVGProps<SVGSVGElement>>;
    agents: FunctionComponent<SVGProps<SVGSVGElement>>;
    agile: FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-deep-research': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-ml-ops-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-ml-ops': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-test-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-test': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ai-verify': FunctionComponent<SVGProps<SVGSVGElement>>;
    ai: FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-discovery-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-discovery': FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-layer-img-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-layer-img': FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-security-tests-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'app-security-tests': FunctionComponent<SVGProps<SVGSVGElement>>;
    'apple-shortcut': FunctionComponent<SVGProps<SVGSVGElement>>;
    architect: FunctionComponent<SVGProps<SVGSVGElement>>;
    archive: FunctionComponent<SVGProps<SVGSVGElement>>;
    'area-search': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down-left-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down-right-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-email-forward': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-left-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-long-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-long-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-long-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-long-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-right-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up-left-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up-right-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrow-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'arrows-updown': FunctionComponent<SVGProps<SVGSVGElement>>;
    'artifacts-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    artifacts: FunctionComponent<SVGProps<SVGSVGElement>>;
    'at-sign': FunctionComponent<SVGProps<SVGSVGElement>>;
    atom: FunctionComponent<SVGProps<SVGSVGElement>>;
    'attachment-image': FunctionComponent<SVGProps<SVGSVGElement>>;
    attachment: FunctionComponent<SVGProps<SVGSVGElement>>;
    'base-img-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'base-img': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bell-off': FunctionComponent<SVGProps<SVGSVGElement>>;
    bell: FunctionComponent<SVGProps<SVGSVGElement>>;
    'bold-squere': FunctionComponent<SVGProps<SVGSVGElement>>;
    bold: FunctionComponent<SVGProps<SVGSVGElement>>;
    'bookmark-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    bookmark: FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-download': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-income': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-outcome': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-search': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-star': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-upload': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-warning': FunctionComponent<SVGProps<SVGSVGElement>>;
    'bubble-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    'builds-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    builds: FunctionComponent<SVGProps<SVGSVGElement>>;
    calculator: FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-arrow-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-arrow-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-minus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-plus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-rotate': FunctionComponent<SVGProps<SVGSVGElement>>;
    'calendar-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    calendar: FunctionComponent<SVGProps<SVGSVGElement>>;
    cell2x2: FunctionComponent<SVGProps<SVGSVGElement>>;
    'chaos-tests-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chaos-tests': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-empty': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-question': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-translate': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-warning': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-bubble': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-lines': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-minus-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-plus-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-position-full': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-position-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'chat-position-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'check-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'check-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    check: FunctionComponent<SVGProps<SVGSVGElement>>;
    'circle-with-sector': FunctionComponent<SVGProps<SVGSVGElement>>;
    circle: FunctionComponent<SVGProps<SVGSVGElement>>;
    'clipboard-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'clock-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    clock: FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-bookmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-costs-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-costs': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-desync': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-download': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-sync': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-upload': FunctionComponent<SVGProps<SVGSVGElement>>;
    'cloud-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    cloud: FunctionComponent<SVGProps<SVGSVGElement>>;
    cluster: FunctionComponent<SVGProps<SVGSVGElement>>;
    'code-brackets-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    'code-brackets': FunctionComponent<SVGProps<SVGSVGElement>>;
    'code-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'code-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    code: FunctionComponent<SVGProps<SVGSVGElement>>;
    'collapse-code': FunctionComponent<SVGProps<SVGSVGElement>>;
    'collapse-sidebar': FunctionComponent<SVGProps<SVGSVGElement>>;
    collapse: FunctionComponent<SVGProps<SVGSVGElement>>;
    'collapsed-items': FunctionComponent<SVGProps<SVGSVGElement>>;
    community: FunctionComponent<SVGProps<SVGSVGElement>>;
    'connectors-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    connectors: FunctionComponent<SVGProps<SVGSVGElement>>;
    'containers-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    containers: FunctionComponent<SVGProps<SVGSVGElement>>;
    cookie: FunctionComponent<SVGProps<SVGSVGElement>>;
    copy: FunctionComponent<SVGProps<SVGSVGElement>>;
    'cpu-warning': FunctionComponent<SVGProps<SVGSVGElement>>;
    cpu: FunctionComponent<SVGProps<SVGSVGElement>>;
    cron: FunctionComponent<SVGProps<SVGSVGElement>>;
    crop: FunctionComponent<SVGProps<SVGSVGElement>>;
    'cursor-pointer': FunctionComponent<SVGProps<SVGSVGElement>>;
    'custom-deployment-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'custom-remote': FunctionComponent<SVGProps<SVGSVGElement>>;
    'custom-secret-manager': FunctionComponent<SVGProps<SVGSVGElement>>;
    'custom-trigger': FunctionComponent<SVGProps<SVGSVGElement>>;
    'customize-navigation': FunctionComponent<SVGProps<SVGSVGElement>>;
    'dashboard-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'dashboard-speed': FunctionComponent<SVGProps<SVGSVGElement>>;
    dashboard: FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-backup': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-export': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-monitor': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-restore': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-script': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-search': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-star': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-stats': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-tag': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-warning': FunctionComponent<SVGProps<SVGSVGElement>>;
    'database-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    database: FunctionComponent<SVGProps<SVGSVGElement>>;
    'databases-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    databases: FunctionComponent<SVGProps<SVGSVGElement>>;
    'default-secret-manager': FunctionComponent<SVGProps<SVGSVGElement>>;
    delegates: FunctionComponent<SVGProps<SVGSVGElement>>;
    'deploy-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    deploy: FunctionComponent<SVGProps<SVGSVGElement>>;
    'deployments-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    deployments: FunctionComponent<SVGProps<SVGSVGElement>>;
    developer: FunctionComponent<SVGProps<SVGSVGElement>>;
    'doc-magnifying-glass': FunctionComponent<SVGProps<SVGSVGElement>>;
    'doc-star': FunctionComponent<SVGProps<SVGSVGElement>>;
    docs: FunctionComponent<SVGProps<SVGSVGElement>>;
    'double-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    'download-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'download-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'download-data-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    download: FunctionComponent<SVGProps<SVGSVGElement>>;
    'drag-hand-gesture': FunctionComponent<SVGProps<SVGSVGElement>>;
    drag: FunctionComponent<SVGProps<SVGSVGElement>>;
    earth: FunctionComponent<SVGProps<SVGSVGElement>>;
    'edit-pencil': FunctionComponent<SVGProps<SVGSVGElement>>;
    edit: FunctionComponent<SVGProps<SVGSVGElement>>;
    'empty-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'empty-page': FunctionComponent<SVGProps<SVGSVGElement>>;
    'energy-usage-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'engineering-insights-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'engineering-insights': FunctionComponent<SVGProps<SVGSVGElement>>;
    enlarge: FunctionComponent<SVGProps<SVGSVGElement>>;
    'env-infrastructure': FunctionComponent<SVGProps<SVGSVGElement>>;
    environments: FunctionComponent<SVGProps<SVGSVGElement>>;
    erase: FunctionComponent<SVGProps<SVGSVGElement>>;
    'error-tracking': FunctionComponent<SVGProps<SVGSVGElement>>;
    executions: FunctionComponent<SVGProps<SVGSVGElement>>;
    'expand-code': FunctionComponent<SVGProps<SVGSVGElement>>;
    'expand-sidebar': FunctionComponent<SVGProps<SVGSVGElement>>;
    expand: FunctionComponent<SVGProps<SVGSVGElement>>;
    'external-tickets': FunctionComponent<SVGProps<SVGSVGElement>>;
    'eye-closed': FunctionComponent<SVGProps<SVGSVGElement>>;
    eye: FunctionComponent<SVGProps<SVGSVGElement>>;
    'fast-arrow-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'fast-arrow-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'fast-arrow-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'fast-arrow-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'favourite-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'feature-flags-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'feature-flags': FunctionComponent<SVGProps<SVGSVGElement>>;
    'filter-alt': FunctionComponent<SVGProps<SVGSVGElement>>;
    'filter-list-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'filter-list': FunctionComponent<SVGProps<SVGSVGElement>>;
    'filter-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    filter: FunctionComponent<SVGProps<SVGSVGElement>>;
    'fingerprint-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'flag-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-minus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-opened-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-opened': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-plus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-settings': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'folder-warning': FunctionComponent<SVGProps<SVGSVGElement>>;
    folder: FunctionComponent<SVGProps<SVGSVGElement>>;
    'forward-message': FunctionComponent<SVGProps<SVGSVGElement>>;
    'frame-alt-empty': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-branch': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-cherry-pick-commit': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-commit': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-compare': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-fork': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-merge': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-pull-request-closed': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-pull-request-draft': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-pull-request': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-rebase': FunctionComponent<SVGProps<SVGSVGElement>>;
    'git-squash-merge': FunctionComponent<SVGProps<SVGSVGElement>>;
    'github-action': FunctionComponent<SVGProps<SVGSVGElement>>;
    globe: FunctionComponent<SVGProps<SVGSVGElement>>;
    'grip-dots': FunctionComponent<SVGProps<SVGSVGElement>>;
    'group-1': FunctionComponent<SVGProps<SVGSVGElement>>;
    'half-moon': FunctionComponent<SVGProps<SVGSVGElement>>;
    'harness-plugins': FunctionComponent<SVGProps<SVGSVGElement>>;
    header: FunctionComponent<SVGProps<SVGSVGElement>>;
    'headset-help': FunctionComponent<SVGProps<SVGSVGElement>>;
    'health-shield-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'health-shield': FunctionComponent<SVGProps<SVGSVGElement>>;
    'heart-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    heart: FunctionComponent<SVGProps<SVGSVGElement>>;
    'help-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'help-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    import: FunctionComponent<SVGProps<SVGSVGElement>>;
    'incidents-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    incidents: FunctionComponent<SVGProps<SVGSVGElement>>;
    'info-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'info-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'infrastructure-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    infrastructure: FunctionComponent<SVGProps<SVGSVGElement>>;
    instances: FunctionComponent<SVGProps<SVGSVGElement>>;
    internet: FunctionComponent<SVGProps<SVGSVGElement>>;
    'italic-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    italic: FunctionComponent<SVGProps<SVGSVGElement>>;
    'kanban-board': FunctionComponent<SVGProps<SVGSVGElement>>;
    'key-back': FunctionComponent<SVGProps<SVGSVGElement>>;
    key: FunctionComponent<SVGProps<SVGSVGElement>>;
    'label-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    label: FunctionComponent<SVGProps<SVGSVGElement>>;
    lamp: FunctionComponent<SVGProps<SVGSVGElement>>;
    'laptop-dev-mode': FunctionComponent<SVGProps<SVGSVGElement>>;
    'light-bulb-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'light-bulb-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'light-bulb-off': FunctionComponent<SVGProps<SVGSVGElement>>;
    'light-bulb-on-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'light-bulb-on': FunctionComponent<SVGProps<SVGSVGElement>>;
    'line-space': FunctionComponent<SVGProps<SVGSVGElement>>;
    link: FunctionComponent<SVGProps<SVGSVGElement>>;
    'list-select': FunctionComponent<SVGProps<SVGSVGElement>>;
    list: FunctionComponent<SVGProps<SVGSVGElement>>;
    loader: FunctionComponent<SVGProps<SVGSVGElement>>;
    'lock-slash': FunctionComponent<SVGProps<SVGSVGElement>>;
    'lock-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    lock: FunctionComponent<SVGProps<SVGSVGElement>>;
    logout: FunctionComponent<SVGProps<SVGSVGElement>>;
    'magic-wand': FunctionComponent<SVGProps<SVGSVGElement>>;
    'mail-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'mail-open': FunctionComponent<SVGProps<SVGSVGElement>>;
    'mail-out': FunctionComponent<SVGProps<SVGSVGElement>>;
    mail: FunctionComponent<SVGProps<SVGSVGElement>>;
    maximize: FunctionComponent<SVGProps<SVGSVGElement>>;
    'menu-more-horizontal': FunctionComponent<SVGProps<SVGSVGElement>>;
    'menu-scale': FunctionComponent<SVGProps<SVGSVGElement>>;
    menu: FunctionComponent<SVGProps<SVGSVGElement>>;
    'minus-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'minus-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'minus-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    minus: FunctionComponent<SVGProps<SVGSVGElement>>;
    'monitored-service': FunctionComponent<SVGProps<SVGSVGElement>>;
    'more-horiz-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'more-horizontal': FunctionComponent<SVGProps<SVGSVGElement>>;
    'more-vert-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'more-vert': FunctionComponent<SVGProps<SVGSVGElement>>;
    'multi-bubble': FunctionComponent<SVGProps<SVGSVGElement>>;
    'multiple-pages-empty': FunctionComponent<SVGProps<SVGSVGElement>>;
    'multiple-pages-minus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'multiple-pages-plus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'multiple-pages-xmark': FunctionComponent<SVGProps<SVGSVGElement>>;
    'nav-arrow-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'nav-arrow-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'nav-arrow-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'nav-arrow-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'new-thread': FunctionComponent<SVGProps<SVGSVGElement>>;
    notes: FunctionComponent<SVGProps<SVGSVGElement>>;
    'numbered-list-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'numbered-list-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    okrs: FunctionComponent<SVGProps<SVGSVGElement>>;
    'one-finger-select-hand-gesture': FunctionComponent<SVGProps<SVGSVGElement>>;
    'open-in-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'open-new-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'open-select-hand-gesture': FunctionComponent<SVGProps<SVGSVGElement>>;
    'organization-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    organizations: FunctionComponent<SVGProps<SVGSVGElement>>;
    overrides: FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-left': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-minus-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-minus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-plus-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-plus-minus-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-plus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-right': FunctionComponent<SVGProps<SVGSVGElement>>;
    'page-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'paste-clipboard': FunctionComponent<SVGProps<SVGSVGElement>>;
    'path-arrow': FunctionComponent<SVGProps<SVGSVGElement>>;
    pause: FunctionComponent<SVGProps<SVGSVGElement>>;
    'peace-hand': FunctionComponent<SVGProps<SVGSVGElement>>;
    phone: FunctionComponent<SVGProps<SVGSVGElement>>;
    'physical-data-center': FunctionComponent<SVGProps<SVGSVGElement>>;
    'pin-slash-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'pin-slash': FunctionComponent<SVGProps<SVGSVGElement>>;
    'pin-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    pin: FunctionComponent<SVGProps<SVGSVGElement>>;
    'pipeline-executions': FunctionComponent<SVGProps<SVGSVGElement>>;
    'pipeline-group': FunctionComponent<SVGProps<SVGSVGElement>>;
    'pipeline-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    pipeline: FunctionComponent<SVGProps<SVGSVGElement>>;
    'play-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    play: FunctionComponent<SVGProps<SVGSVGElement>>;
    'plus-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'plus-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'plus-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    plus: FunctionComponent<SVGProps<SVGSVGElement>>;
    'portal-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    portal: FunctionComponent<SVGProps<SVGSVGElement>>;
    'pr-comment': FunctionComponent<SVGProps<SVGSVGElement>>;
    presentation: FunctionComponent<SVGProps<SVGSVGElement>>;
    prohibition: FunctionComponent<SVGProps<SVGSVGElement>>;
    project: FunctionComponent<SVGProps<SVGSVGElement>>;
    'question-mark': FunctionComponent<SVGProps<SVGSVGElement>>;
    quote: FunctionComponent<SVGProps<SVGSVGElement>>;
    'redo-action': FunctionComponent<SVGProps<SVGSVGElement>>;
    'redo-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'redo-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    redo: FunctionComponent<SVGProps<SVGSVGElement>>;
    reduce: FunctionComponent<SVGProps<SVGSVGElement>>;
    'refresh-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'refresh-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'refresh-double': FunctionComponent<SVGProps<SVGSVGElement>>;
    refresh: FunctionComponent<SVGProps<SVGSVGElement>>;
    regex: FunctionComponent<SVGProps<SVGSVGElement>>;
    'reload-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'reminder-hand-gesture': FunctionComponent<SVGProps<SVGSVGElement>>;
    'reply-to-message': FunctionComponent<SVGProps<SVGSVGElement>>;
    reply: FunctionComponent<SVGProps<SVGSVGElement>>;
    'repository-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    repository: FunctionComponent<SVGProps<SVGSVGElement>>;
    restart: FunctionComponent<SVGProps<SVGSVGElement>>;
    roles: FunctionComponent<SVGProps<SVGSVGElement>>;
    ruler: FunctionComponent<SVGProps<SVGSVGElement>>;
    'run-test': FunctionComponent<SVGProps<SVGSVGElement>>;
    run: FunctionComponent<SVGProps<SVGSVGElement>>;
    'runtime-security-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'runtime-security': FunctionComponent<SVGProps<SVGSVGElement>>;
    satellite: FunctionComponent<SVGProps<SVGSVGElement>>;
    scale: FunctionComponent<SVGProps<SVGSVGElement>>;
    'scissor-alt': FunctionComponent<SVGProps<SVGSVGElement>>;
    scissor: FunctionComponent<SVGProps<SVGSVGElement>>;
    'search-engine': FunctionComponent<SVGProps<SVGSVGElement>>;
    'search-shield': FunctionComponent<SVGProps<SVGSVGElement>>;
    'search-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    search: FunctionComponent<SVGProps<SVGSVGElement>>;
    'secret-ssh-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'secret-ssh': FunctionComponent<SVGProps<SVGSVGElement>>;
    'secure-shell-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'security-pass': FunctionComponent<SVGProps<SVGSVGElement>>;
    'security-tests-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'security-tests': FunctionComponent<SVGProps<SVGSVGElement>>;
    'select-window': FunctionComponent<SVGProps<SVGSVGElement>>;
    'send-mail': FunctionComponent<SVGProps<SVGSVGElement>>;
    send: FunctionComponent<SVGProps<SVGSVGElement>>;
    'service-accounts': FunctionComponent<SVGProps<SVGSVGElement>>;
    services: FunctionComponent<SVGProps<SVGSVGElement>>;
    'settings-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    settings: FunctionComponent<SVGProps<SVGSVGElement>>;
    'share-ios': FunctionComponent<SVGProps<SVGSVGElement>>;
    'share-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    share: FunctionComponent<SVGProps<SVGSVGElement>>;
    shield: FunctionComponent<SVGProps<SVGSVGElement>>;
    sidebar: FunctionComponent<SVGProps<SVGSVGElement>>;
    'single-view': FunctionComponent<SVGProps<SVGSVGElement>>;
    'slash-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    slash: FunctionComponent<SVGProps<SVGSVGElement>>;
    snowflake: FunctionComponent<SVGProps<SVGSVGElement>>;
    'solid-arrow-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'solid-arrow-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'sort-2': FunctionComponent<SVGProps<SVGSVGElement>>;
    'sort-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'sort-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'sparks-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    sparks: FunctionComponent<SVGProps<SVGSVGElement>>;
    'split-view': FunctionComponent<SVGProps<SVGSVGElement>>;
    'square-dashed': FunctionComponent<SVGProps<SVGSVGElement>>;
    'ssh-key': FunctionComponent<SVGProps<SVGSVGElement>>;
    'star-dashed': FunctionComponent<SVGProps<SVGSVGElement>>;
    'star-half-dashed': FunctionComponent<SVGProps<SVGSVGElement>>;
    'star-minus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'star-plus': FunctionComponent<SVGProps<SVGSVGElement>>;
    'star-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    star: FunctionComponent<SVGProps<SVGSVGElement>>;
    'stats-down-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    'stats-report': FunctionComponent<SVGProps<SVGSVGElement>>;
    'stats-up-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    'stop-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    stop: FunctionComponent<SVGProps<SVGSVGElement>>;
    strategy: FunctionComponent<SVGProps<SVGSVGElement>>;
    'submit-document': FunctionComponent<SVGProps<SVGSVGElement>>;
    suggestion: FunctionComponent<SVGProps<SVGSVGElement>>;
    'sun-light': FunctionComponent<SVGProps<SVGSVGElement>>;
    'supply-chain-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'supply-chain': FunctionComponent<SVGProps<SVGSVGElement>>;
    'system-restart': FunctionComponent<SVGProps<SVGSVGElement>>;
    'table-rows': FunctionComponent<SVGProps<SVGSVGElement>>;
    'tag-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    tag: FunctionComponent<SVGProps<SVGSVGElement>>;
    target: FunctionComponent<SVGProps<SVGSVGElement>>;
    'tas-vars': FunctionComponent<SVGProps<SVGSVGElement>>;
    tas: FunctionComponent<SVGProps<SVGSVGElement>>;
    'task-list': FunctionComponent<SVGProps<SVGSVGElement>>;
    tasks: FunctionComponent<SVGProps<SVGSVGElement>>;
    templates: FunctionComponent<SVGProps<SVGSVGElement>>;
    'terminal-tag': FunctionComponent<SVGProps<SVGSVGElement>>;
    terminal: FunctionComponent<SVGProps<SVGSVGElement>>;
    'text-size': FunctionComponent<SVGProps<SVGSVGElement>>;
    'text-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    theme: FunctionComponent<SVGProps<SVGSVGElement>>;
    'thumbs-down-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'thumbs-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'thumbs-up-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'thumbs-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'time-zone': FunctionComponent<SVGProps<SVGSVGElement>>;
    'timer-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    timer: FunctionComponent<SVGProps<SVGSVGElement>>;
    trash: FunctionComponent<SVGProps<SVGSVGElement>>;
    'tree-view': FunctionComponent<SVGProps<SVGSVGElement>>;
    'underline-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    underline: FunctionComponent<SVGProps<SVGSVGElement>>;
    'undo-action': FunctionComponent<SVGProps<SVGSVGElement>>;
    'undo-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'undo-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    undo: FunctionComponent<SVGProps<SVGSVGElement>>;
    unlink: FunctionComponent<SVGProps<SVGSVGElement>>;
    'up-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    upload: FunctionComponent<SVGProps<SVGSVGElement>>;
    'user-badge-check': FunctionComponent<SVGProps<SVGSVGElement>>;
    user: FunctionComponent<SVGProps<SVGSVGElement>>;
    variables: FunctionComponent<SVGProps<SVGSVGElement>>;
    version: FunctionComponent<SVGProps<SVGSVGElement>>;
    'video-call': FunctionComponent<SVGProps<SVGSVGElement>>;
    'view-columns-2': FunctionComponent<SVGProps<SVGSVGElement>>;
    'view-columns-3': FunctionComponent<SVGProps<SVGSVGElement>>;
    'view-grid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'view-structure-down': FunctionComponent<SVGProps<SVGSVGElement>>;
    'view-structure-up': FunctionComponent<SVGProps<SVGSVGElement>>;
    'warning-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'warning-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'warning-triangle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'warning-triangle': FunctionComponent<SVGProps<SVGSVGElement>>;
    webhook: FunctionComponent<SVGProps<SVGSVGElement>>;
    'workspaces-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    workspaces: FunctionComponent<SVGProps<SVGSVGElement>>;
    'wrap-text': FunctionComponent<SVGProps<SVGSVGElement>>;
    'xmark-circle-solid': FunctionComponent<SVGProps<SVGSVGElement>>;
    'xmark-circle': FunctionComponent<SVGProps<SVGSVGElement>>;
    'xmark-square': FunctionComponent<SVGProps<SVGSVGElement>>;
    xmark: FunctionComponent<SVGProps<SVGSVGElement>>;
    yaml: FunctionComponent<SVGProps<SVGSVGElement>>;
    'zoom-in': FunctionComponent<SVGProps<SVGSVGElement>>;
    'zoom-out': FunctionComponent<SVGProps<SVGSVGElement>>;
};

declare type IconPropsV2 = IconDefaultPropsV2 | IconFallbackPropsV2;

declare type IconV2Color = VariantProps<typeof iconColorVariants>['color'];

declare type IconV2NamesType = keyof typeof IconNameMapV2;

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

export declare interface IThemeStore {
    theme?: FullTheme;
    setTheme: (theme: FullTheme) => void;
    isLightTheme: boolean;
}

declare const LinkDefault: ForwardRefExoticComponent<LinkProps & RefAttributes<HTMLAnchorElement>>;

export { LinkProps }

export declare enum ModeType {
    Dark = "dark",
    Light = "light",
    System = "system"
}

declare interface MoreActionsTooltipProps {
    theme?: ButtonProps['theme'];
    actions: ActionData[];
    isInTable?: boolean;
    iconName?: IconPropsV2['name'];
    sideOffset?: number;
    alignOffset?: number;
    className?: string;
    buttonVariant?: ButtonVariants;
    buttonSize?: ButtonSizes;
    disabled?: boolean;
}

declare const NavLinkDefault: ForwardRefExoticComponent<NavLinkProps & RefAttributes<HTMLAnchorElement>>;

export { NavLinkProps }

declare type Options = Record<string, any>;

declare enum PermissionIdentifier {
    CODE_REPO_CREATE = "code_repo_create",
    CODE_REPO_DELETE = "code_repo_delete",
    UPDATE_SECRET = "core_secret_edit",
    DELETE_SECRET = "core_secret_delete"
}

declare interface PermissionsRequest {
    resource: Resource;
    permissions: PermissionIdentifier[];
}

declare interface PortalContextProps {
    portalContainer?: Element | null;
}

export declare const PortalProvider: ({ children, portalContainer }: {
    children: ReactNode;
    portalContainer?: PortalContextProps["portalContainer"];
}) => JSX_2.Element;

/**
 * Types for RBAC-enabled components.
 * These components will automatically handle RBAC checks based on the provided `rbac` prop.
 */
declare interface RbacButtonProps extends Omit<ButtonProps, 'resource' | 'tooltipProps'>, RBACProps {
    tooltip?: Pick<TooltipProps, 'title' | 'content'>;
}

declare interface RbacMoreActionsTooltipActionData extends ActionData, RBACProps {
}

declare interface RbacMoreActionsTooltipProps extends Omit<MoreActionsTooltipProps, 'actions'>, RefAttributes<HTMLButtonElement> {
    actions: RbacMoreActionsTooltipActionData[];
}

declare interface RBACProps {
    rbac?: PermissionsRequest;
}

declare type RbacSplitButtonProps<T extends string> = SplitButtonProps<T> & RBACSplitProps & {
    tooltip?: Pick<TooltipProps, 'title' | 'content'>;
};

declare interface RBACSplitProps extends RBACProps {
    buttonRbac?: PermissionsRequest;
    dropdownRbac?: PermissionsRequest;
}

/**
 * @todo Replace with types from @harness/microfrontends once its accessible in the monorepo
 */
declare interface Resource {
    resourceType: ResourceType;
    resourceIdentifier?: string;
}

declare enum ResourceType {
    CODE_REPOSITORY = "CODE_REPOSITORY",
    SECRET = "SECRET"
}

export declare const RouterContextProvider: ({ children, Link, NavLink, Outlet, Switch, Route, location, navigate, useSearchParams, useMatches, useParams }: {
    children: ReactNode;
} & Partial<RouterContextType>) => JSX_2.Element;

declare interface RouterContextType {
    Link: ComponentType<ComponentPropsWithRef<typeof LinkDefault>>;
    NavLink: ComponentType<ComponentPropsWithRef<typeof NavLinkDefault>>;
    Outlet?: ComponentType<OutletProps>;
    Switch: ComponentType<SwitchProps>;
    Route: ComponentType<ExtendedRouteProps>;
    location: Location_2;
    navigate: NavigateFunction;
    useSearchParams: typeof useSearchParamsDefault;
    useMatches: typeof useMatchesDefault;
    useParams: typeof useParamsDefault;
}

declare interface SplitButtonBaseProps<T extends string> {
    handleButtonClick: (e: MouseEvent_2) => void;
    loading?: boolean;
    selectedValue?: T;
    options: SplitButtonOptionType<T>[];
    handleOptionChange: (val: T) => void;
    className?: string;
    buttonClassName?: string;
    disabled?: boolean;
    disableButton?: boolean;
    disableDropdown?: boolean;
    children: ReactNode;
    dropdownContentClassName?: string;
    size?: 'sm' | 'md' | 'xs';
}

declare interface SplitButtonOptionType<T extends string> {
    value: T;
    label: string;
    description?: string;
    disabled?: boolean;
}

declare interface SplitButtonProps<T extends string> extends SplitButtonBaseProps<T> {
    variant?: ButtonProps['variant'];
    theme?: ButtonProps['theme'];
}

declare interface SwitchProps {
    children?: React.ReactNode;
    location?: Location_2;
}

export declare type TFunction = (key: string, options?: Options) => string;

export declare type TFunctionWithFallback = (key: string, fallback?: string, options?: Options) => string;

export declare const ThemeProvider: ({ children, theme: themeProp, ...rest }: PropsWithChildren<IThemeStore>) => JSX_2.Element;

declare type TooltipPrimitiveContentType = ComponentProps<typeof TooltipPrimitive.Content>;

declare type TooltipPrimitiveRootType = ComponentProps<typeof TooltipPrimitive.Root>;

declare type TooltipProps = {
    children: ReactNode;
    title?: string;
    content: ReactNode;
    hideArrow?: boolean;
    delay?: TooltipPrimitiveRootType['delayDuration'];
    open?: boolean;
    /**
     * Theme variant of the tooltip
     * - 'default': High-contrast appearance with fixed colors
     * - 'themed': Follows the current theme's color palette
     * @default 'default'
     */
    theme?: 'default' | 'themed';
} & Pick<TooltipPrimitiveContentType, 'side' | 'align' | 'className' | 'sideOffset'>;

declare interface TranslationPayload {
    t: TFunctionWithFallback;
}

declare type TranslationProps = PropsWithChildren<{
    t?: TFunction;
}>;

export declare function TranslationProvider({ t: translator, children }: TranslationProps): JSX_2.Element;

/**
 * Dialog trigger component is essential for opening dialogs.
 * It registers the trigger element with the dialog focus manager.
 */
export declare const TriggerBase: ForwardRefExoticComponent<HTMLAttributes<HTMLDivElement> & {
children: ReactNode;
TriggerComponent: ComponentType<{
asChild?: boolean;
}>;
} & RefAttributes<HTMLButtonElement>>;

export declare const useComponents: () => ComponentContextValue;

/**
 * Custom hook to manage dialog trigger elements.
 * It provides a ref for the trigger element and a callback to register the trigger.
 * Useful when a dialog is opened from a complex components like dropdowns, etc.
 */
export declare const useCustomDialogTrigger: () => {
    triggerRef: RefObject<HTMLButtonElement>;
    registerTrigger: () => void;
};

declare const useMatchesDefault: () => UIMatch[];

declare const useParamsDefault: () => Params;

export declare const usePortal: () => PortalContextProps;

export declare const useRegisterDialog: () => {
    handleCloseAutoFocus: () => void;
};

export declare const useRouterContext: () => UseRouterContextType;

declare type UseRouterContextType = Required<RouterContextType> & {
    isRouterVersion5: boolean;
};

declare const useSearchParamsDefault: () => readonly [URLSearchParams, SetURLSearchParams];

export declare const useTheme: () => Required<IThemeStore>;

export declare function useTranslation(): TranslationPayload;

export { }
