declare type SvgPath = string;
/**
 * An icon with a single path.
 *
 * This icon will never be flipped horizontally in RTL mode.
 */
export declare type Icon = SvgPath;
/**
 * An icon with a single path that should flip horizontally in RTL mode.
 */
export interface IconFlipForRtl {
    /** SVG path string. */
    path: SvgPath;
    /** Indicates that the icon should be flipped via CSS in RTL mode. */
    shouldFlip: true;
    /**
     * Language codes that are exceptions to the above property (e.g. the help
     * icon should flip in RTL mode, but not for Hebrew or Yiddish).
     */
    shouldFlipExceptions?: string[];
}
/**
 * An icon that varies per language.
 */
export interface IconVariedByLang {
    /** HTMLElement.lang code with corresponding icon. */
    langCodeMap: Record<string, Icon | IconFlipForRtl>;
    /** The default icon. */
    default: Icon | IconFlipForRtl;
}
/**
 * An icon that varies per text direction (but can't just be flipped).
 */
export interface IconVariedByDir {
    /** Icon for RTL dir. */
    rtl: Icon;
    /** The default icon. */
    default: Icon;
}
export declare type AnyIcon = Icon | IconFlipForRtl | IconVariedByLang | IconVariedByDir;
/**
 * @param icon The icon string or object.
 * @param langCode The HTMLElement.lang code.
 * @param dir The HTMLElement.dir (ltr, rtl, or auto).
 * @return The appropriate SVG path.
 */
export declare function getIconPath(icon: AnyIcon, langCode: string, dir: string): string;
/**
 * @param icon The icon string or object.
 * @param langCode The HTMLElement.lang code.
 * @return Whether the icon should be flipped horizontally in RTL mode.
 */
export declare function shouldFlip(icon: AnyIcon, langCode: string): boolean;
export {};
