import { type DeepPartial } from "./utils";
declare const THEME_COLOR_KEYS: readonly ["grey-100", "grey-200", "grey-300", "grey-400", "grey-500", "grey-600", "grey-700", "grey-800", "grey-900", "royal-300", "royal-400", "royal-500", "royal-600", "royal-700", "highlight-700", "status-positive", "status-negative", "status-partial", "button-lg-primary-bg", "button-lg-primary-text", "button-lg-secondary-bg", "button-lg-secondary-text", "button-lg-tertiary-bg", "button-lg-tertiary-text", "button-md-primary-bg", "button-md-primary-text", "button-md-secondary-bg", "button-md-secondary-text", "button-md-tertiary-bg", "button-md-tertiary-text", "button-sm-primary-bg", "button-sm-primary-text", "button-sm-secondary-bg", "button-sm-secondary-text", "button-sm-tertiary-bg", "button-sm-tertiary-text", "input-placeholder", "input-text", "input-selection", "input-bg", "animation-bg", "animation-text", "modal-backdrop", "menu-bg", "menu-text", "menu-backdrop", "material-light-thin", "material-light-average", "material-light-thick", "material-dark-thin", "material-dark-average", "material-dark-thick", "grey-100-005", "material-light-blend-grey-900", "material-light-blend-grey-800"];
declare const THEME_BORDER_RADIUS_KEYS: readonly ["button-lg-primary", "button-lg-secondary", "button-lg-tertiary", "button-md-primary", "button-md-secondary", "button-md-tertiary", "button-sm-primary", "button-sm-secondary", "button-sm-tertiary", "container", "input", "menu-sm", "menu-lg", "modal"];
declare const THEME_FONT_SIZE_KEYS: readonly ["caption", "body-large", "body-medium", "body-small", "heading-small", "heading-medium", "heading-large"];
declare const THEME_FONT_WEIGHT_KEYS: readonly ["caption", "body-small", "body-medium", "body-large", "heading-small", "heading-medium", "heading-large"];
declare const THEME_FONT_FAMILY_KEYS: readonly ["squid-main"];
declare const THEME_BOX_SHADOW_KEYS: readonly ["container"];
type ThemeColors = Record<(typeof THEME_COLOR_KEYS)[number], string>;
type ThemeFontSize = Record<(typeof THEME_FONT_SIZE_KEYS)[number], string>;
type ThemeFontWeight = Record<(typeof THEME_FONT_WEIGHT_KEYS)[number], string>;
type ThemeBorderRadius = Record<(typeof THEME_BORDER_RADIUS_KEYS)[number], string>;
type ThemeFontFamily = Record<(typeof THEME_FONT_FAMILY_KEYS)[number], string>;
type ThemeBoxShadow = Record<(typeof THEME_BOX_SHADOW_KEYS)[number], string>;
/**
 * Full theme, includes internal colors.
 */
export interface InternalTheme {
    color: ThemeColors;
    fontSize: ThemeFontSize;
    fontWeight: ThemeFontWeight;
    borderRadius: ThemeBorderRadius;
    fontFamily: ThemeFontFamily;
    boxShadow: ThemeBoxShadow;
}
/**
 * These colors are optional
 * and will be generated internally using the base colors if not provided
 */
type OptionalColorsKeys = "button-lg-primary-bg" | "button-lg-primary-text" | "button-lg-secondary-bg" | "button-lg-secondary-text" | "button-lg-tertiary-bg" | "button-lg-tertiary-text" | "button-md-primary-bg" | "button-md-primary-text" | "button-md-secondary-bg" | "button-md-secondary-text" | "button-md-tertiary-bg" | "button-md-tertiary-text" | "button-sm-primary-bg" | "button-sm-primary-text" | "button-sm-secondary-bg" | "button-sm-secondary-text" | "button-sm-tertiary-bg" | "button-sm-tertiary-text" | "input-placeholder" | "input-text" | "input-selection" | "input-bg" | "animation-bg" | "animation-text" | "modal-backdrop" | "menu-bg" | "menu-text" | "menu-backdrop";
/**
 * These colors are generated internally using the base colors
 */
type HiddenColorsKeys = "material-light-thin" | "material-light-average" | "material-light-thick" | "material-dark-thin" | "material-dark-average" | "material-dark-thick" | "grey-100-005" | "material-light-blend-grey-900" | "material-light-blend-grey-800";
/**
 * Public theme, excluding some colors that are generated internally
 * and making some colors optional.
 */
export interface PublicTheme extends Omit<InternalTheme, "color"> {
    color: // Remove the hidden colors and the optional colors
    Omit<InternalTheme["color"], HiddenColorsKeys | OptionalColorsKeys> & Partial<Pick<InternalTheme["color"], OptionalColorsKeys>>;
}
/**
 * The theme interface exposed for the end user
 * Everything is optional, any missing config will be generated internally
 */
export type Theme = DeepPartial<PublicTheme>;
interface CssVariable {
    cssVariable: string;
}
type ThemeCssVariables = {
    [K in keyof InternalTheme]: Record<keyof InternalTheme[K], CssVariable>;
};
/**
 * 'st' = Squid Theme
 */
export declare const THEME_CSS_VARIABLE_PREFIX = "--st-";
export declare const themeKeysToCssVariables: ThemeCssVariables;
export interface Settings {
    showProgressAnimation: boolean;
}
export {};
