import { type CharacterPrefixSuffixCleanString, type CssClass, type DashPrefixString, type Maybe } from '@dereekb/util';
/**
 * An kebab-case style name that uniquely identifies a styling for an app.
 *
 * Examples: 'doc-app'
 */
export type DbxStyleName = string;
/**
 * A suffix that can be added to a style class to differentiate a separate mode.
 *
 * Dark mode is an example, with the suffix 'dark' or '-dark'. The suffix does not have to
 */
export type DbxStyleClassSuffix = DbxStyleClassCleanSuffix | DbxStyleClassDashSuffix;
/**
 * A DbxStyleClassSuffix that does not start with a dash.
 *
 * Dark mode is an example, with the suffix 'dark'.
 */
export type DbxStyleClassCleanSuffix = CharacterPrefixSuffixCleanString;
/**
 * A DbxStyleClassSuffix that starts with a dash.
 *
 * Dark mode is an example, with the suffix '-dark'.
 */
export type DbxStyleClassDashSuffix = DashPrefixString;
export declare const dbxStyleClassCleanSuffix: {
    <T extends string>(input: T | `-${T}` | `${T}`): T;
    (input: string): string;
};
/**
 * A style class that is a combination of a style name and a suffix.
 *
 * Examples:
 * - 'doc-app': the default style of an app
 * - 'doc-app-dark': the dark mode style of an app
 */
export type DbxStyleClass = string | `${DbxStyleName}${DbxStyleClassSuffix}`;
export declare const DBX_DARK_STYLE_CLASS_SUFFIX: DbxStyleClassSuffix;
export interface DbxStyleConfig {
    /**
     * Root style class name.
     */
    readonly style: DbxStyleClass;
    /**
     * Set of all allowed DbxStyleClassSuffixes for the DbxStyleClass in the config, if applicable.
     */
    readonly suffixes?: Set<DbxStyleClassSuffix>;
}
export type DbxThemeColorMain = 'primary' | 'accent' | 'warn';
export type DbxThemeColorExtra = 'notice' | 'ok' | 'success' | 'grey';
export type DbxThemeColorExtraSecondary = 'background' | 'disabled';
export type DbxThemeColorMainOrExtra = DbxThemeColorMain | DbxThemeColorExtra;
export type DbxThemeColor = DbxThemeColorMainOrExtra | DbxThemeColorExtraSecondary;
export declare const DBX_THEME_COLORS_MAIN: DbxThemeColorMain[];
export declare const DBX_THEME_COLORS_EXTRA: DbxThemeColorExtra[];
export declare const DBX_THEME_COLORS_EXTRA_SECONDARY: DbxThemeColorExtraSecondary[];
export declare const DBX_THEME_COLORS: DbxThemeColor[];
export declare function dbxColorBackground(color: Maybe<DbxThemeColor | ''>): CssClass;
