import * as _emotion_react from '@emotion/react';
import { Theme } from '@emotion/react';
import { CSSInterpolation } from '@emotion/css';
import { getTypography, App } from './fonts/typographyTokens.js';

declare const darkGradient = "#1d1d1d linear-gradient(180deg, #090909 63.08%, #1d1d1d 100.52%)";
declare enum Themes {
    Light = "light",
    Dark = "dark"
}
declare const colors: {
    uma: {
        background: string;
        black: string;
        blue: string;
        blue50: string;
        blue80: string;
        blue90: string;
        blue95: string;
        grey300: string;
        secondary: string;
        stroke: string;
        strokeProminent: string;
        fill: string;
    };
    success: string;
    blue43: string;
    blue22: string;
    blue58: string;
    blue95: string;
    primary: string;
    warning: string;
    danger: string;
    secondary: string;
    tier1: string;
    tier2: string;
    tier3: string;
    black: string;
    gray5: string;
    gray10: string;
    gray15: string;
    gray20: string;
    gray25: string;
    gray30: string;
    gray40: string;
    gray50: string;
    gray60: string;
    gray70: string;
    gray80: string;
    gray85: string;
    gray90: string;
    gray95: string;
    white: string;
};
interface BaseTheme {
    type: Themes;
    app: App;
    bg: string;
    smBg: string;
    c05Neutral: string;
    c1Neutral: string;
    c15Neutral: string;
    c2Neutral: string;
    c3Neutral: string;
    c4Neutral: string;
    c5Neutral: string;
    c6Neutral: string;
    c7Neutral: string;
    c8Neutral: string;
    c9Neutral: string;
    danger: string;
    hcNeutral: string;
    hcNeutralFromBg: (hex: string) => string;
    info: string;
    lcNeutral: string;
    link: string;
    mcNeutral: string;
    onInfoText: string;
    onPrimaryText: string;
    onSuccessText: string;
    primary: string;
    secondary: string;
    success: string;
    text: string;
    typography: ReturnType<typeof getTypography>;
    vlcNeutral: string;
    warning: string;
}
type LightsparkSurfaces = {
    header: BaseTheme;
    nav: BaseTheme;
    content: BaseTheme;
    controls: BaseTheme;
};
type LightsparkTheme = BaseTheme & LightsparkSurfaces;
declare module "@emotion/react" {
    interface Theme extends LightsparkTheme {
    }
}
/**
 * Allows setting typography in cases where a custom font is needed.
 * Setting custom fonts should only be necessary for next fonts.
 */
declare const themeWithTypography: (theme: Theme, typography: ReturnType<typeof getTypography>) => BaseTheme;
declare const themes: {
    light: LightsparkTheme;
    dark: LightsparkTheme;
    uma: {
        light: LightsparkTheme;
    };
};
declare const isDark: (theme: Theme) => boolean;
declare const isLight: (theme: Theme) => boolean;
declare const themeOr: (lightValue: string, darkValue: string) => ({ theme }: {
    theme: Theme;
}) => string;
declare function ifLight(style: CSSInterpolation): ({ theme }: {
    theme: LightsparkTheme;
}) => _emotion_react.SerializedStyles | "";
declare function ifDark(style: CSSInterpolation): ({ theme }: {
    theme: LightsparkTheme;
}) => _emotion_react.SerializedStyles | "";
declare function luminance(r: number, g: number, b: number): number;
type RGB = [number, number, number];
declare function contrast(rgb1: RGB, rgb2: RGB): number;
declare function componentToHex(c: number): string;
declare function rgbToHex(r: number, g: number, b: number): string;
declare function hexToRGB(hex: string): RGB;
declare function hexToRGBAStr(hex: string, alpha: number): string;
declare function useThemeBg(): string;
type ThemeProp = {
    theme: Theme;
};
type WithTheme<T extends Record<string, unknown>> = T & ThemeProp;

export { LightsparkTheme, ThemeProp, Themes, WithTheme, colors, componentToHex, contrast, darkGradient, hexToRGB, hexToRGBAStr, ifDark, ifLight, isDark, isLight, luminance, rgbToHex, themeOr, themeWithTypography, themes, useThemeBg };
