import type { GlobalTheme } from '../theme';
import type { ValueOrArray } from '../types';
import { BorderStyle } from './BorderStyle';
import { BorderWidth } from './BorderWidth';
import { ColorName, ColorValue, SxColor } from './Color';
import { Duration } from './Duration';
import { Shadow } from './Shadow';
import { TimingFunction } from './TimingFunction';
import { TransitionProperty } from './TransitionProperty';
/**
 * Helper function for use in Theme UI's `sx` prop to build a single color from a series of overlaid colors.
 * For instance, `bg: buildColor(['Background', 'White4'])` will render `background-color: rgb(22, 20, 38)`,
 * which is the color you get when you overlay a 4% opacity `White` layer on a fully opaque `Background` layer.
 * Any number of colors can be overlaid, and the resulting color can be translucent (`rgba` with alpha < 1)
 * if all the passed colors are translucent.
 */
export declare const buildColor: (colors: (ColorName | ColorValue)[]) => (theme: GlobalTheme) => ColorValue;
/**
 * Helper function for use in Theme UI's `sx` prop to build a value for the `border` shorthand
 * (e.g. `1px solid black`) from the passed `color`, `width` (optional, defaults to `1px`), and
 * `style` (optional, defaults to `SOLID`).
 */
export declare const buildBorder: (color: SxColor | ((theme: GlobalTheme) => SxColor), width?: keyof typeof BorderWidth, style?: keyof typeof BorderStyle) => (theme: GlobalTheme) => string;
/**
 * Helper function for use in Theme UI's `sx` prop to build a color-mode-aware value for the `box-shadow`,
 * `text-shadow`, or `filter` property from the passed shadow token.
 */
export declare const buildShadow: (shadowKey: ValueOrArray<keyof typeof Shadow | null>, property?: 'box-shadow' | 'text-shadow' | 'filter') => (theme: GlobalTheme) => string | string[];
/**
 * Helper function for use in Theme UI's `sx` prop to build a value for the `transition` shorthand
 * (e.g. `box-shadow 200ms ease, text-shadow 200ms ease`) from the passed `property` (optional, defaults to `ALL`),
 * `duration` (optional, defaults to `200ms`), and `timingFunction` (optional, defaults to `EASE_DEFAULT`).
 */
export declare const buildTransition: (property?: keyof typeof TransitionProperty, duration?: keyof typeof Duration, timingFunction?: keyof typeof TimingFunction) => string;
