export declare const brandColors: readonly ["brand", "brandBg"];
export type BrandColors = typeof brandColors;
export declare const additionalColors: readonly ["additionalPink", "additionalPurple", "additionalDeepPurple", "additionalIndigo", "additionalLightBlue", "additionalCyan", "additionalTeal", "additionalLightGreen", "additionalLime", "additionalAmber", "additionalOrange", "additionalDeepOrange"];
export type AdditionalColors = typeof additionalColors;
export declare const attentionColors: readonly ["attentionErrorRed", "attentionWarningYellow", "attentionInfoBlue", "attentionSuccessGreen"];
export type AttentionColors = typeof attentionColors;
export declare const contrastColors: readonly ["contrastBlue", "contrastYellow", "contrastOrange", "contrastGreen", "contrastDeepPurple", "contrastPink", "contrastCyan", "contrastPurple"];
export type ContrastColors = typeof contrastColors;
export declare const themeColors: readonly ["brand", "brandBg", "additionalPink", "additionalPurple", "additionalDeepPurple", "additionalIndigo", "additionalLightBlue", "additionalCyan", "additionalTeal", "additionalLightGreen", "additionalLime", "additionalAmber", "additionalOrange", "additionalDeepOrange", "attentionErrorRed", "attentionWarningYellow", "attentionInfoBlue", "attentionSuccessGreen", "contrastBlue", "contrastYellow", "contrastOrange", "contrastGreen", "contrastDeepPurple", "contrastPink", "contrastCyan", "contrastPurple"];
export type GeneratedHandler = (theme: ThemeDefinition, colorVariable: CssColorVariables, options: ThemeOptions) => [Hue, Percentage, Percentage];
export type Initial = 'initial';
export type ConfigurableThemeColors = (typeof themeColors)[number];
export declare const generatedThemeColors: readonly ["core"];
export type GeneratedThemeColors = (typeof generatedThemeColors)[number];
/**
 * Theme Base Colors
 */
export type ThemeColors = (typeof themeColors)[number] | GeneratedThemeColors;
export type ShadeRange = IntRange<1, 19>;
/**
 * Shade offset keys
 */
export type Shades = `${'dark' | 'light'}${ShadeRange}` | Initial;
/**
 * Shade offset values
 */
export type ShadeValues = IntRange<0, 101> | Initial;
export declare const initialShade: {
    readonly key: "initial";
    readonly value: "initial";
};
export type ShadeDefinition = {
    key: Shades;
    value: ShadeValues;
} | typeof initialShade;
export type ShadeDefinitions = ShadeDefinition[];
export declare const stepCount: number;
export declare const generateShades: (every?: number) => ShadeDefinitions;
export declare const shades: ShadeDefinitions;
export declare const highContrastShades: ShadeDefinitions;
export declare const colorsWithoutShade: readonly [];
export type ThemeColorsWithoutShade = (typeof colorsWithoutShade)[number];
export type ThemeColorsWithShade = Exclude<ThemeColors, ThemeColorsWithoutShade>;
export declare const isThemeColorWithoutShade: (color: unknown) => color is ThemeColorsWithoutShade;
export declare const opacityMap: {
    readonly 1: 5;
    readonly 2: 10;
    readonly 3: 15;
    readonly 4: 20;
    readonly 5: 25;
    readonly 6: 30;
    readonly 7: 35;
    readonly 8: 40;
    readonly 9: 45;
    readonly 10: 50;
    readonly 11: 55;
    readonly 12: 60;
    readonly 13: 65;
    readonly 14: 70;
    readonly 15: 75;
    readonly 16: 80;
    readonly 17: 85;
    readonly 18: 90;
    readonly 19: 95;
    readonly 20: 100;
};
/**
 * Opacity keys
 */
export type Opacity = keyof typeof opacityMap;
/**
 * Opacity values
 */
export type OpacityValues = (typeof opacityMap)[Opacity];
export type HexString = `#${string}`;
export type HexStrings = `#${string}`[];
export declare const isHexString: (hex: string[] | string) => hex is HexString;
export declare const isHexStrings: (hex: string[] | string) => hex is HexStrings;
export type ThemeDefinition<Theme extends ThemeColors = ConfigurableThemeColors> = Record<Theme, HexString | HexStrings>;
export type ThemeDefinitionWithGenerated = ThemeDefinition<ConfigurableThemeColors | GeneratedThemeColors>;
export declare const shadeDelimiter: "_shade_";
export type ShadeDelimiter = typeof shadeDelimiter;
export declare const opacityDelimiter: "_opacity_";
export type OpacityDelimiter = typeof opacityDelimiter;
export type CssColorVariable<Color extends ThemeColors, Shade extends Shades = 'initial', OpacityValue extends Opacity = 20> = `${Color}${ShadeDelimiter}${Shade}${OpacityDelimiter}${OpacityValue}`;
export type CssColorVariables = CssColorVariable<ThemeColorsWithShade, Shades, Opacity> | CssColorVariable<ThemeColorsWithoutShade, 'initial', Opacity>;
export type GeneratedTheme = Record<CssColorVariables, HslaString>;
type Enumerate<N extends number, Acc extends number[] = []> = Acc['length'] extends N ? Acc[number] : Enumerate<N, [...Acc, Acc['length']]>;
export type IntRange<F extends number, T extends number> = Exclude<Enumerate<T>, Enumerate<F>>;
export type Hue = IntRange<0, 361>;
export type Percentage = IntRange<0, 101>;
export type HslaString = `hsla(${string})`;
export type AllowedOffset = IntRange<0, 16>;
export type BackgroundLuminosity = IntRange<0, 30>;
export interface ThemeOptions {
    offset?: AllowedOffset;
    inverse?: boolean;
    highContrast?: boolean;
    coreSaturation?: Percentage;
    backgroundLuminosity?: BackgroundLuminosity;
    useHct?: boolean;
    ignoreInverseForOffset?: boolean;
    matchClientTheme?: boolean;
}
export type ThemeWithOptions<PartialColors extends boolean = false, Theme = PartialColors extends true ? Partial<ThemeDefinition> : ThemeDefinition> = {
    theme: Theme;
    options?: ThemeOptions;
};
export type ThemeWithGeneratedAndOptions = {
    theme: ThemeDefinitionWithGenerated;
    options?: ThemeOptions;
};
/**
 * Eventually add loader
 */
export declare const initialTheme: ThemeDefinition;
export declare const initialOptions: ThemeOptions;
export {};
