import { CSSProperties } from 'react';
import { CSSLength } from '../../theme';
import { colors, opacities } from './theme';
type Type = 'values' | 'number' | 'length' | 'color';
type CSSPropValue = string | number | boolean;
type CSSPropNumber = number;
type CSSPropLength = CSSLength;
type CSSPropColor = (typeof colors)[number] | `${Exclude<(typeof colors)[number], 'current' | 'transparent'>}/${Exclude<(typeof opacities)[number], 100>}`;
type TypeToValue<T extends Type, V extends CSSPropValue = CSSPropValue> = T extends 'values' ? V : T extends 'number' ? CSSPropNumber : T extends 'length' ? CSSPropLength : CSSPropColor;
export type CSSProp<T extends Type = Type, V extends CSSPropValue[] = CSSPropValue[], D extends TypeToValue<T, V[number]> = TypeToValue<T, V[number]>> = T extends 'values' ? {
    type: T;
    values: V;
    defaultValue: D & TypeToValue<T, V[number]>;
} : T extends 'length' ? {
    type: T;
    values?: never;
    defaultValue: D & TypeToValue<T>;
} : {
    type: T;
    values?: never;
    defaultValue: D & TypeToValue<T>;
};
export type CSSProps = Record<string, CSSProp>;
export type CSSPropType<P extends CSSProp> = P['values'] extends CSSPropValue[] ? TypeToValue<P['type'], P['values'][number]> : TypeToValue<P['type']>;
export declare const componentsCSSProps: {
    /**
     * Not a real component; used to define the general order of some `@prop-*` utilities
     * (e.g. without this, if the first component with a `size` prop only had `small` and `medium` values, `xsmall` would be sorted after them).
     */
    dummy: {
        size: {
            type: "values";
            values: ["2xsmall", "xsmall", "small", "medium", "large", "xlarge", "2xlarge"];
            defaultValue: "medium";
        };
        variant: {
            type: "values";
            values: ["primary", "secondary", "tertiary", "inverse", "danger", "naked", "enclosed"];
            defaultValue: "primary";
        };
    };
    'action-list': {};
    address: {
        variant: {
            type: "values";
            values: ["primary", "secondary", "enclosed"];
            defaultValue: "primary";
        };
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    'app-launcher': {};
    avatar: {
        size: {
            type: "values";
            values: ["xsmall", "small", "medium", "large", "xlarge", "2xlarge"];
            defaultValue: "medium";
        };
    };
    'avatar-group': {
        size: {
            type: "values";
            values: ["xsmall", "small", "medium", "large", "xlarge"];
            defaultValue: "medium";
        };
    };
    button: {
        variant: {
            type: "values";
            values: ["primary", "secondary", "tertiary", "inverse", "danger", "naked"];
            defaultValue: "secondary";
        };
        size: {
            type: "values";
            values: ["xsmall", "small", "medium", "large"];
            defaultValue: "medium";
        };
        hideLabel: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
    };
    'button-group': {
        variant: {
            type: "values";
            values: ["primary", "secondary", "tertiary", "inverse", "danger", "naked"];
            defaultValue: "secondary";
        };
        size: {
            type: "values";
            values: ["xsmall", "small", "medium", "large"];
            defaultValue: "medium";
        };
        orientation: {
            type: "values";
            values: ["horizontal", "vertical"];
            defaultValue: "horizontal";
        };
        fullWidth: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
    };
    card: {
        variant: {
            type: "values";
            values: ["primary", "secondary"];
            defaultValue: "secondary";
        };
        padding: {
            type: "length";
            values?: never;
            defaultValue: 6;
        };
    };
    checkable: {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    checkbox: {};
    radio: {};
    switch: {};
    chip: {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    cluster: {
        shape: {
            type: "values";
            values: ["circle", "square"];
            defaultValue: "circle";
        };
        size: {
            type: "values";
            values: ["xsmall", "small", "medium", "large", "xlarge"];
            defaultValue: "medium";
        };
    };
    'code-block': {
        wrap: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
        lineNumbers: {
            type: "values";
            values: [false, true];
            defaultValue: true;
        };
        rows: {
            type: "number";
            values?: never;
            defaultValue: 0;
        };
    };
    'code-block-tabs': {};
    'code-inline': {};
    'description-list': {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
        orientation: {
            type: "values";
            values: ["horizontal", "vertical"];
            defaultValue: "vertical";
        };
    };
    'description-list-item': {
        variant: {
            type: "values";
            values: ["default", "caption", "mono"];
            defaultValue: "default";
        };
    };
    divider: {
        variant: {
            type: "values";
            values: ["subtle", "default", "strong"];
            defaultValue: "default";
        };
        orientation: {
            type: "values";
            values: ["horizontal", "vertical"];
            defaultValue: "horizontal";
        };
        diamonds: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
    };
    icon: {
        size: {
            type: "length";
            values?: never;
            defaultValue: "1em";
        };
        color: {
            type: "color";
            values?: never;
            defaultValue: "current";
        };
    };
    field: {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    input: {};
    'currency-input': {};
    'otc-input': {};
    select: {};
    'text-area': {};
    label: {
        variant: {
            type: "values";
            values: ["primary", "secondary"];
            defaultValue: "primary";
        };
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    link: {
        variant: {
            type: "values";
            values: ["primary", "secondary"];
            defaultValue: "primary";
        };
    };
    'locale-switcher': {
        displayFormat: {
            type: "values";
            values: ["short", "full"];
            defaultValue: "full";
        };
    };
    'mega-menu': {
        layout: {
            type: "values";
            values: ["compact", "full"];
            defaultValue: "full";
        };
    };
    menu: {};
    modal: {
        variant: {
            type: "values";
            values: ["dialog", "drawer"];
            defaultValue: "dialog";
        };
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    navbar: {
        layout: {
            type: "values";
            values: ["compact", "full"];
            defaultValue: "full";
        };
    };
    'nav-link': {
        variant: {
            type: "values";
            values: ["primary", "secondary"];
            defaultValue: "primary";
        };
        hideLabel: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
    };
    search: {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    'segmented-control': {
        size: {
            type: "values";
            values: ["small", "medium", "large"];
            defaultValue: "medium";
        };
    };
    status: {
        variant: {
            type: "values";
            values: ["default", "info", "success", "warning", "error", "muted"];
            defaultValue: "default";
        };
    };
    stepper: {
        labelPosition: {
            type: "values";
            values: ["top", "bottom", "hidden"];
            defaultValue: "top";
        };
    };
    'tab-set': {
        size: {
            type: "values";
            values: ["small", "medium"];
            defaultValue: "medium";
        };
        fullWidth: {
            type: "values";
            values: [false, true];
            defaultValue: false;
        };
    };
    tag: {
        variant: {
            type: "values";
            values: ["purple", "galactic", "starfield", "solar", "sonja", "space", "space-dark"];
            defaultValue: "purple";
        };
        size: {
            type: "values";
            values: ["xsmall", "small", "medium"];
            defaultValue: "medium";
        };
    };
};
export declare const componentsCSSPropsContainerName: Record<Exclude<keyof typeof componentsCSSProps, 'dummy'>, null | keyof typeof componentsCSSProps>;
export type ComponentCSSPropType<C extends keyof typeof componentsCSSProps, P extends keyof (typeof componentsCSSProps)[C], D extends (typeof componentsCSSProps)[C][P] extends CSSProp ? (typeof componentsCSSProps)[C][P]['defaultValue'] : never> = (typeof componentsCSSProps)[C][P] extends CSSProp ? D extends any ? CSSPropType<(typeof componentsCSSProps)[C][P]> : never : never;
type RequirePotentiallyUndefinedValues<T extends Record<any, any>> = {
    [K in keyof T]: undefined extends T[K] ? T[K] : never;
};
type Exact<T, Shape> = T extends Shape ? (Exclude<keyof T, keyof Shape> extends never ? T : never) : never;
type PassedValues<P extends CSSProps> = {
    [K in keyof P]: CSSPropType<P[K]> | undefined;
};
export declare function getCSSPropsAttributes<C extends keyof typeof componentsCSSProps, V extends PassedValues<(typeof componentsCSSProps)[C]>>(componentName: C, passedValues: Exact<RequirePotentiallyUndefinedValues<V>, V>, style: CSSProperties | undefined): {
    style: Record<string, string | number>;
};
export declare function getCSSPropRawValue<P extends CSSProp>(prop: P, value: CSSPropType<P>): string;
export {};
//# sourceMappingURL=cssProps.d.ts.map