import { CSSProperties } from 'react';
import { StyleString } from '../style/types';
/**
 * Calculates vertical padding to center a single line of text within a container.
 * Uses the CSS `self()` function and `1lh` unit to compute the padding based on
 * the container's minimum height and border widths.
 * This is useful for precise vertical centering without introducing a flex/grid layout to the container.
 *
 * @param minHeight - A CSS expression for the minimum height to center within. Defaults to `'self(minHeight)'`.
 * @returns A CSS `calc()` expression wrapped as an arbitrary style value.
 *
 * @example
 * ```tsx
 * import {centerPadding, style} from '@react-spectrum/s2/style' with {type: 'macro'};
 *
 * const styles = style({
 *   paddingY: centerPadding()
 * });
 * ```
 */
export declare function centerPadding(minHeight?: string): `[${string}]`;
export declare const field: () => {
    readonly display: "grid";
    readonly gridColumnStart: {
        readonly isInForm: 1;
    };
    readonly gridColumnEnd: {
        readonly isInForm: {
            readonly labelPosition: {
                readonly side: "span 2";
            };
        };
    };
    readonly gridTemplateColumns: {
        readonly default: {
            readonly labelPosition: {
                readonly top: readonly ["1fr"];
                readonly side: readonly ["auto", "1fr"];
            };
        };
        readonly isInForm: "subgrid";
    };
    readonly gridTemplateRows: {
        readonly labelPosition: {
            readonly top: readonly ["auto", "1fr", "auto"];
            readonly side: readonly ["auto", "1fr"];
        };
    };
    readonly gridTemplateAreas: {
        readonly labelPosition: {
            readonly top: readonly ["label", "input", "helptext"];
            readonly side: readonly ["label input", "label helptext"];
        };
    };
    readonly fontSize: {
        readonly default: "ui";
        readonly size: {
            readonly XS: "ui-xs";
            readonly S: "ui-sm";
            readonly L: "ui-lg";
            readonly XL: "ui-xl";
        };
    };
    readonly alignItems: "baseline";
    readonly lineHeight: "ui";
    readonly '--field-height': {
        readonly type: "height";
        readonly value: {
            readonly default: 32;
            readonly size: {
                readonly XS: 20;
                readonly S: 24;
                readonly L: 40;
                readonly XL: 48;
            };
        } | {
            readonly default: 16;
            readonly size: {
                readonly S: 14;
                readonly L: 18;
                readonly XL: 20;
            };
        };
    };
    readonly '--field-gap': {
        readonly type: "rowGap";
        readonly value: `[${string}]`;
    };
    readonly columnGap: 12;
    readonly disableTapHighlight: true;
};
export declare const fieldLabel: () => {
    readonly font: {
        readonly default: "ui";
        readonly size: {
            readonly XS: "ui-xs";
            readonly S: "ui-sm";
            readonly L: "ui-lg";
            readonly XL: "ui-xl";
        };
    };
    readonly cursor: "default";
    readonly color: {
        readonly default: "neutral-subdued";
        readonly isDisabled: "disabled";
        readonly isStaticColor: "transparent-overlay-1000";
        readonly forcedColors: "ButtonText";
    };
};
export declare const fieldInput: () => {
    readonly gridArea: "input";
    readonly minWidth: {
        readonly default: 32;
        readonly size: {
            readonly XS: 20;
            readonly S: 24;
            readonly L: 40;
            readonly XL: 48;
        };
    } | {
        readonly default: 16;
        readonly size: {
            readonly S: 14;
            readonly L: 18;
            readonly XL: 20;
        };
    };
    readonly contain: {
        readonly '@supports (contain-intrinsic-width: 1px)': "inline-size";
        readonly isQuiet: "none";
    };
    readonly '--defaultWidth': {
        readonly type: "width";
        readonly value: {
            readonly default: 208;
            readonly size: {
                readonly S: 192;
                readonly L: 224;
                readonly XL: 240;
            };
        };
    };
    readonly containIntrinsicWidth: "calc(var(--defaultWidth) - self(paddingStart, 0px) - self(paddingEnd, 0px) - self(borderStartWidth, 0px) - self(borderEndWidth, 0px))";
};
/**
 * Returns style properties that set the CSS `color-scheme` for a component.
 * Defaults to the page's color scheme and supports `'light'`, `'dark'`, and `'light dark'` values
 * via the `colorScheme` render prop condition.
 * Intended for root containers (e.g. providers, modals, and popovers), and not needed for individual components.
 *
 * @example
 * ```tsx
 * import {setColorScheme, style} from '@react-spectrum/s2/style' with {type: 'macro'};
 *
 * const styles = style({
 *   ...setColorScheme(),
 *   backgroundColor: 'layer-1'
 * });
 * ```
 */
export declare const setColorScheme: () => {
    readonly '--s2-color-scheme': {
        readonly type: "colorScheme";
        readonly value: {
            readonly colorScheme: {
                readonly 'light dark': "light dark";
                readonly light: "light";
                readonly dark: "dark";
            };
        };
    };
    readonly colorScheme: "--s2-color-scheme";
};
export declare function staticColor(): Record<string, any>;
export declare const controlFont: () => {
    readonly default: "ui";
    readonly size: {
        readonly XS: "ui-xs";
        readonly S: "ui-sm";
        readonly L: "ui-lg";
        readonly XL: "ui-xl";
    };
};
export declare const controlSize: (size?: "md" | "sm") => {
    readonly default: 32;
    readonly size: {
        readonly XS: 20;
        readonly S: 24;
        readonly L: 40;
        readonly XL: 48;
    };
} | {
    readonly default: 16;
    readonly size: {
        readonly S: 14;
        readonly L: 18;
        readonly XL: 20;
    };
};
export declare const controlBorderRadius: (size?: "default" | "sm") => {
    readonly '--size': {
        readonly type: "order";
        readonly value: {
            readonly default: 1;
            readonly size: {
                readonly XS: number;
                readonly S: number;
                readonly L: number;
                readonly XL: number;
            };
        };
    };
    readonly '--radius': {
        readonly type: "borderTopStartRadius";
        readonly value: "default" | "sm";
    };
    readonly borderRadius: "round(var(--radius) * var(--size), 1px)";
};
interface ControlOptions {
    shape?: 'default' | 'pill';
    wrap?: boolean;
    icon?: boolean;
}
interface ControlResult {
    font: ReturnType<typeof controlFont>;
    boxSizing?: 'border-box';
    borderRadius?: 'pill' | `[${string}]`;
    minWidth?: ReturnType<typeof controlSize>;
    minHeight?: ReturnType<typeof controlSize>;
    height?: ReturnType<typeof controlSize>;
    display?: 'flex';
    alignItems?: 'center' | {
        default: 'baseline';
        [iconOnly]: 'center';
    };
    columnGap?: 'text-to-visual';
    paddingX?: 'pill' | 'edge-to-text' | {
        default: 'pill' | 'edge-to-text';
        [iconOnly]: 0;
    };
    paddingY?: 0 | `[${string}]`;
}
declare const iconOnly = ":has([slot=icon]):not(:has([data-rsp-slot=text]))";
/**
 * Common styles for a pill or round rect shaped container with text and icon slots.
 * The text can optionally wrap, aligning the icon with the first line of text.
 */
export declare function control(options: ControlOptions): ControlResult;
declare const allowedOverrides: readonly ["margin", "marginStart", "marginEnd", "marginTop", "marginBottom", "marginX", "marginY", "flexGrow", "flexShrink", "flexBasis", "justifySelf", "alignSelf", "order", "gridArea", "gridRowStart", "gridRowEnd", "gridColumnStart", "gridColumnEnd", "position", "zIndex", "top", "bottom", "inset", "insetX", "insetY", "insetStart", "insetEnd", "visibility"];
export declare const widthProperties: readonly ["width", "minWidth", "maxWidth"];
export declare const heightProperties: readonly ["size", "height", "minHeight", "maxHeight"];
export type StylesProp = StyleString<(typeof allowedOverrides)[number] | (typeof widthProperties)[number]>;
export type StylesPropWithHeight = StyleString<(typeof allowedOverrides)[number] | (typeof widthProperties)[number] | (typeof heightProperties)[number]>;
export type StylesPropWithoutWidth = StyleString<(typeof allowedOverrides)[number]>;
export type UnsafeClassName = string & {
    properties?: never;
};
export interface UnsafeStyles {
    /** Sets the CSS [className](https://developer.mozilla.org/en-US/docs/Web/API/Element/className) for the element. Only use as a **last resort**. Use the `style` macro via the `styles` prop instead. */
    UNSAFE_className?: UnsafeClassName;
    /** Sets inline [style](https://developer.mozilla.org/en-US/docs/Web/API/HTMLElement/style) for the element. Only use as a **last resort**. Use the `style` macro via the `styles` prop instead. */
    UNSAFE_style?: CSSProperties;
}
export interface StyleProps extends UnsafeStyles {
    /** Spectrum-defined styles, returned by the `style()` macro. */
    styles?: StylesProp;
}
export declare function getAllowedOverrides({ width, height }?: {
    height?: boolean | undefined;
    width?: boolean | undefined;
}): string[];
export {};
