import { Styles } from '../styles/types';
import type { ProcessedStyle, StyleDetails } from '../parser/types';
export type StyleValue<T = string> = T | boolean | number | null | undefined;
export type StyleValueStateMap<T = string> = {
    [key: string]: StyleValue<T>;
};
export type ResponsiveStyleValue<T = string> = StyleValue<T> | StyleValue<T>[] | StyleValueStateMap<T> | StyleValueStateMap<T>[];
export type ComputeModel = string | number;
export type CSSMap = {
    $?: string | string[];
} & {
    [key: string]: string | string[];
};
export type StyleHandlerResult = CSSMap | CSSMap[] | void;
export type RawStyleHandler = (value: StyleValueStateMap, suffix?: string) => StyleHandlerResult;
export type StyleHandler = RawStyleHandler & {
    __lookupStyles: string[];
};
export interface StyleStateData {
    model?: ComputeModel;
    tokens?: string[];
    value: ResponsiveStyleValue;
    /** The list of mods to apply */
    mods: string[];
    /** The list of **not** mods to apply (e.g. `:not(:hover)`) */
    notMods: string[];
}
export interface ParsedColor {
    color?: string;
    name?: string;
    opacity?: number;
}
export type StyleStateDataList = StyleStateData[];
export type StyleStateDataListMap = {
    [key: string]: StyleStateDataList;
};
export type StyleMap = {
    [key: string]: ResponsiveStyleValue;
};
export type StyleStateMap = {
    [key: string]: StyleStateData;
};
export declare const CUSTOM_UNITS: {
    r: string;
    cr: string;
    bw: string;
    ow: string;
    x: string;
    fs: string;
    lh: string;
    rp: string;
    gp: string;
    sf: (num: any) => string;
    dvh: (num: any) => string;
    sp: (num: any) => string;
};
export declare const DIRECTIONS: string[];
export declare function getModSelector(modName: string): string;
export declare function customFunc(name: string, fn: (groups: StyleDetails[]) => string): void;
/**
 *
 * @param {String} value
 * @param {Number} mode
 * @returns {Object<String,String|Array>}
 */
export declare function parseStyle(value: StyleValue): ProcessedStyle;
/**
 * Parse color. Find it value, name and opacity.
 * Optimized to avoid heavy parseStyle calls for simple color patterns.
 */
export declare function parseColor(val: string, ignoreError?: boolean): ParsedColor;
export declare function strToRgb(color: any, ignoreAlpha?: boolean): any;
export declare function getRgbValuesFromRgbaString(str: any): any;
export declare function hexToRgb(hex: any): string | null;
export declare function filterMods(mods: any, allowedMods: any): any;
export declare function extendStyles(defaultStyles: any, newStyles: any): {};
/**
 * Split properties into style and non-style properties.
 * @param props - Component prop map.
 * @param [styleList] - List of all style properties.
 * @param [defaultStyles] - Default style map of the component.
 * @param [propMap] - Props to style alias map.
 * @param [ignoreList] - A list of properties to ignore.
 */
export declare function extractStyles(props: {
    [key: string]: any;
}, styleList?: readonly string[], defaultStyles?: Styles, propMap?: {
    [key: string]: string;
}, ignoreList?: readonly string[]): Styles;
export declare const STATE_OPERATORS: {
    NOT: string;
    AND: string;
    OR: string;
    XOR: string;
};
export declare const STATE_OPERATOR_LIST: string[];
/**
 * Parse state notation and return tokens, modifiers and compute model.
 */
declare function parseStateNotationInner(notation: string, value: any): StyleStateData;
export declare const parseStateNotation: typeof parseStateNotationInner;
/**
 * Parse state notation and return tokens, modifiers and compute model.
 */
export declare function styleStateMapToStyleStateDataList(styleStateMap: StyleStateMap | ResponsiveStyleValue): {
    states: StyleStateDataList;
    mods: string[];
};
export declare const COMPUTE_FUNC_MAP: {
    '!': (a: any) => boolean;
    '^': (a: any, b: any) => any;
    '|': (a: any, b: any) => any;
    '&': (a: any, b: any) => any;
};
/**
 * Compute a result based on a model and incoming map.
 */
export declare function computeState(computeModel: ComputeModel, valueMap: (number | boolean)[] | {
    [key: string]: boolean;
} | Function): any;
export declare function stringifyStyles(styles: any): string;
export {};
