import type * as CSS from 'csstype';
import { Inset, Spacing } from './spectrum-theme';
import type { MacroContext } from '@parcel/macros';
import { StyleString } from './types';
export { baseColor, color, lightDark, colorMix, size, style } from './spectrum-theme';
export { css } from './style-macro';
export { centerPadding, setColorScheme } from '../src/style-utils';
export type { StyleString } from './types';
/**
 * Converts a pixel value to a Spectrum spacing token in `rem` units.
 *
 * @param px - The spacing in pixels.
 * @returns A `rem` value wrapped as an arbitrary style value.
 *
 * @example
 * ```tsx
 * import {space} from '@react-spectrum/s2/style' with {type: 'macro'};
 *
 * const styles = style({
 *   gap: space(12) // 12/16 = 0.75rem
 * });
 * ```
 */
export declare function space(px: number): `[${string}]`;
/**
 * Converts a pixel value to a font-relative `em` length. Useful for sizing elements
 * relative to the current font size. Defaults to a 14px base.
 *
 * @param base - The pixel value to convert.
 * @param baseFontSize - The base font size in pixels to divide by. Defaults to `14`.
 * @returns A CSS `em` value wrapped as an arbitrary style value.
 *
 * @example
 * ```tsx
 * import {fontRelative} from '@react-spectrum/s2/style' with {type: 'macro'};
 *
 * const styles = style({
 *   gap: fontRelative(2)  // 2/14 = ~0.143em
 * });
 * ```
 */
export declare function fontRelative(base: number, baseFontSize?: number): `[${string}]`;
/**
 * Returns consistent Spectrum focus ring outline styles for interactive components.
 *
 * @example
 * ```tsx
 * import {focusRing, style} from '@react-spectrum/s2/style' with {type: 'macro'};
 *
 * const styles = style({
 *   ...focusRing(),
 *   borderRadius: 'lg'
 * });
 * ```
 */
export declare const focusRing: () => {
    readonly outlineStyle: {
        readonly default: "none";
        readonly isFocusVisible: "solid";
    };
    readonly outlineColor: {
        readonly default: "focus-ring";
        readonly forcedColors: "Highlight";
    };
    readonly outlineWidth: 2;
    readonly outlineOffset: 2;
};
export interface IconStyle {
    size?: 'XS' | 'S' | 'M' | 'L' | 'XL';
    color?: 'white' | 'black' | 'accent' | 'neutral' | 'negative' | 'informative' | 'positive' | 'notice' | 'gray' | 'red' | 'orange' | 'yellow' | 'chartreuse' | 'celery' | 'green' | 'seafoam' | 'cyan' | 'blue' | 'indigo' | 'purple' | 'fuchsia' | 'magenta' | 'pink' | 'turquoise' | 'cinnamon' | 'brown' | 'silver';
    margin?: Spacing;
    marginStart?: Spacing;
    marginEnd?: Spacing;
    marginTop?: Spacing;
    marginBottom?: Spacing;
    marginX?: Spacing;
    marginY?: Spacing;
    alignSelf?: 'auto' | 'start' | 'end' | 'center' | 'stretch' | 'baseline';
    justifySelf?: 'auto' | 'start' | 'end' | 'center' | 'stretch';
    order?: number;
    gridArea?: CSS.Property.GridArea;
    gridColumnStart?: CSS.Property.GridColumnStart;
    gridColumnEnd?: CSS.Property.GridColumnEnd;
    gridRowStart?: CSS.Property.GridRowStart;
    gridRowEnd?: CSS.Property.GridRowStart;
    position?: 'absolute' | 'fixed' | 'relative' | 'sticky' | 'static';
    zIndex?: number;
    top?: Inset;
    bottom?: Inset;
    inset?: Inset;
    insetX?: Inset;
    insetY?: Inset;
    insetStart?: Inset;
    insetEnd?: Inset;
    rotate?: number | `${number}deg` | `${number}rad` | `${number}grad` | `${number}turn`;
}
/**
 * Generates styles for an icon element with the given size, color, and layout options.
 * Must be imported with `{type: 'macro'}`.
 *
 * @param options - Icon styling options including `size` (XS–XL), `color`, and layout properties.
 * @returns A `StyleString` that can be applied to an icon element.
 *
 * @example
 * ```tsx
 * import {iconStyle} from '@react-spectrum/s2/style' with {type: 'macro'};
 * import Edit from '@react-spectrum/s2/icons/Edit';
 *
 * <Edit styles={iconStyle({size: 'XL', color: 'positive'})} />
 * ```
 */
export declare function iconStyle(this: MacroContext | void, options: IconStyle): StyleString<Exclude<keyof IconStyle, 'color' | 'size'>>;
