/**
 * Copyright (c) OpenLens Maintainers. All rights reserved.
 * Licensed under MIT License. See LICENSE in root directory for more information.
 */
import "./icon.scss";
import React from "react";
import type { LocationDescriptor } from "history";
import type { StrictReactNode } from "@openlens/utilities";
export type NamedSvg = "configuration" | "crane" | "group" | "helm" | "install" | "kube" | "lens-logo" | "license" | "logo-lens" | "logout" | "nodes" | "push_off" | "push_pin" | "spinner" | "ssh" | "storage" | "terminal" | "user" | "users" | "wheel" | "workloads";
export interface BaseIconProps {
    /**
    * One of the names from https://material.io/icons/
    */
    material?: string;
    /**
     * Either an SVG XML or one of {@link NamedSvg}
     */
    svg?: NamedSvg | string;
    /**
     * render icon as NavLink from react-router-dom
     */
    link?: LocationDescriptor;
    /**
     * render icon as hyperlink
     */
    href?: string;
    /**
     * The icon size (css units)
     */
    size?: string | number;
    /**
     * A pre-defined icon-size
     */
    small?: boolean;
    /**
     * A pre-defined icon-size
     */
    smallest?: boolean;
    /**
     * A pre-defined icon-size
     */
    big?: boolean;
    /**
     * apply active-state styles
     */
    active?: boolean;
    /**
     * indicates that icon is interactive and highlight it on focus/hover
     */
    interactive?: boolean;
    /**
     * Allow focus to the icon to show `.active` styles. Only applicable if {@link IconProps.interactive} is `true`.
     *
     * @default true
     */
    focusable?: boolean;
    sticker?: boolean;
    disabled?: boolean;
    "data-testid"?: string;
}
export interface IconProps extends React.HTMLAttributes<any>, BaseIconProps {
    children?: StrictReactNode;
}
export declare function isSvg(content: string): boolean;
export declare const Icon: React.FunctionComponent<IconProps & import("@openlens/tooltip").TooltipDecoratorProps> & {
    isSvg: typeof isSvg;
};
