import { type TransformDefinition } from "./core";
import type { SemanticSpacing } from "../../spacing";
/**
 * Maps semantic spacing values to CSS-only `rb-*` spacing classes.
 *
 * Semantic values: none, compact, cozy, medium, comfortable, spacious
 * These are defined centrally in system/spacing.ts
 *
 * For sections (axis: 'y'), this resolves to `rb-section-pad-*`.
 * For containers/cards (axis: 'all'), this resolves to `rb-container-pad-*`.
 *
 * Runtime validation ensures invalid spacing values are caught early.
 */
export declare const spacingTransform: TransformDefinition<{
    axis?: "y" | "all";
    baseClass?: string;
}>;
/**
 * Applies shadow class when raised is true.
 *
 * Uses rb-shadow-md (defined in `src/theme/rb-utilities.css`) when the theme's
 * medium shadow token is enabled.
 */
export declare const raisedTransform: TransformDefinition<{
    baseClass?: string;
}>;
/**
 * Maps rounded corner values to custom CSS border radius classes.
 *
 * Rounded values:
 * - 'none' → no border radius
 * - 'sm' → rb-rounded-sm
 * - 'md' → rb-rounded-md
 * - 'lg' → rb-rounded-lg
 * - 'xl' → rb-rounded-xl
 * - '2xl' → rb-rounded-2xl
 * - 'full' → rb-rounded-full
 *
 * These classes are defined in theme CSS (`src/theme/rb-utilities.css`).
 */
export declare const roundedTransform: TransformDefinition<{
    baseClass?: string;
}>;
/**
 * Composite transform that handles all box style properties at once.
 *
 * Takes a box styles object like:
 * ```
 * {
 *   spacing: 'comfortable',
 *   raised: true,
 *   rounded: 'lg'
 * }
 * ```
 *
 * And outputs combined `rb-*` classes (plus any provided baseClass).
 */
export declare const boxStylesCompositeTransform: TransformDefinition<{
    axis?: "y" | "all";
    baseClass?: string;
    includeSpacing?: boolean;
}>;
export declare const boxStylesBorderColorTransform: TransformDefinition<{
    fallbackToken?: string;
    returnEmptyForDefault?: boolean;
}>;
type SectionClassNameOptions = {
    baseClass?: string;
    containerStylesPath?: string;
    fullWidthPath?: string;
    defaultSpacing?: SemanticSpacing;
};
/**
 * Composite transform for section className.
 *
 * Responsibilities:
 * 1. Extracts spacing from _sectionStyles or uses defaultSpacing
 * 2. Converts semantic spacing to CSS classes via resolveSpacing()
 * 3. Respects fullWidth setting from containerStyles (removes `rb-px-*` classes)
 * 4. Combines base class with spacing classes
 *
 * This transform ensures sections always have proper padding even when:
 * - _sectionStyles doesn't exist (uses defaultSpacing)
 * - _sectionStyles exists but spacing is undefined (uses defaultSpacing)
 * - _sectionStyles.spacing is explicitly set (uses that value)
 */
export declare const sectionClassNameTransform: TransformDefinition<SectionClassNameOptions>;
type ContainerClassNameOptions = {
    baseClass?: string;
};
/**
 * Composite transform for container className.
 * Determines whether to use the default `rb-container` (centered with max-width)
 * or full-width mode (edge-to-edge).
 *
 * Used for dynamically building container element className based on fullWidth setting.
 */
export declare const containerStylesResolveClassName: TransformDefinition<ContainerClassNameOptions>;
/**
 * Composite transform for container className with box styles.
 *
 * Combines:
 * - Container width constraint: `rb-container` / `rb-container-full`
 * - Box styles: spacing (padding), raised (shadow), rounded (radius)
 *
 * Intended for the element that owns the container background layers so that:
 * - background paints within the constrained width
 * - background includes the container padding
 */
export declare const containerStylesResolveBoxClassName: TransformDefinition<ContainerClassNameOptions>;
type SectionTextColorOptions = {
    /**
     * Optional fallback token to use when no explicit textColor is set.
     * When omitted, the transform returns an empty style object.
     */
    fallbackToken?: string;
};
/**
 * Resolves section text color style object.
 *
 * The value should be the `_sectionStyles.background.textColor` token.
 * Returns an empty object when unset so the section inherits text color.
 *
 * Outputs both `color` and `--section-text-color` CSS variable so that
 * headings (which have explicit color rules in typography CSS) can inherit
 * the section's text color via the CSS variable cascade.
 */
export declare const sectionTextColorStyleTransform: TransformDefinition<SectionTextColorOptions>;
type SectionHeadingColorOptions = {
    /**
     * Optional fallback token to use when no explicit headingColor is set.
     * When omitted, the transform returns an empty style object.
     */
    fallbackToken?: string;
};
/**
 * Resolves section heading color style object.
 *
 * The value should be the `_sectionStyles.background.headingColor` token.
 * Returns an empty object when unset so headings inherit from textColor or default.
 *
 * Outputs `--section-heading-color` CSS variable which typography CSS can use
 * to style headings differently from body text within a section.
 */
export declare const sectionHeadingColorStyleTransform: TransformDefinition<SectionHeadingColorOptions>;
/**
 * Resolves section text and heading colors from the background object.
 *
 * The value should be the full `_sectionStyles.background` object.
 * Outputs:
 * - `color` and `--section-text-color` from background.textColor
 * - `--section-heading-color` from background.headingColor (falls back to textColor if not set)
 *
 * This combined transform replaces separate textColor/headingColor transforms
 * when both need to be applied to the same style prop.
 */
export declare const sectionColorsStyleTransform: TransformDefinition<Record<string, never>>;
/**
 * Maps semantic gap values to theme-aware gap classes.
 *
 * The classes use --space-mult multiplier for theme-aware sizing.
 */
export declare const GAP_CLASS_MAP: {
    readonly none: "rb-gap-semantic-none";
    readonly compact: "rb-gap-semantic-compact";
    readonly cozy: "rb-gap-semantic-cozy";
    readonly medium: "rb-gap-semantic-medium";
    readonly comfortable: "rb-gap-semantic-comfortable";
    readonly spacious: "rb-gap-semantic-spacious";
};
/**
 * Maps semantic gap values to CSS gap values (for inline styles).
 *
 * Uses calc() with --space-mult for theme-aware sizing.
 * Mobile values; use media queries or responsive CSS for desktop scaling.
 */
export declare const GAP_VALUE_MAP: {
    readonly none: "0";
    readonly compact: "calc(1rem * var(--space-mult, 1))";
    readonly cozy: "calc(1.75rem * var(--space-mult, 1))";
    readonly medium: "calc(2.75rem * var(--space-mult, 1))";
    readonly comfortable: "calc(4.5rem * var(--space-mult, 1))";
    readonly spacious: "calc(6.5rem * var(--space-mult, 1))";
};
type SemanticGapOptions = {
    /** Fallback gap when value is invalid or undefined */
    fallback?: SemanticSpacing;
};
/**
 * Maps semantic gap value to theme-aware gap class.
 *
 * Use this transform for binding gap to a content field.
 * The output classes use CSS calc() with --space-mult for theme-aware sizing.
 */
export declare const semanticGapTransform: TransformDefinition<SemanticGapOptions>;
/**
 * Maps semantic gap value to CSS gap value (for inline styles).
 *
 * Use this transform when binding gap as an inline style rather than a class.
 * The output values use CSS calc() with --space-mult for theme-aware sizing.
 */
export declare const semanticGapValueTransform: TransformDefinition<SemanticGapOptions>;
export declare const boxStylesTransforms: TransformDefinition<unknown>[];
export {};
