import { z } from 'zod';
/**
 * Button System Types and Schemas
 *
 * Defines the type-safe configuration for site button styles.
 */
export type Shadow = {
    elevation: "none" | "low" | "medium" | "high";
    softness: "crisp" | "soft" | "hard" | null;
    position: "bottom" | "bottom-right";
};
export type CornerStyle = 'square' | 'rounded' | 'pill';
export type ShadowSize = 'none' | 'low' | 'medium' | 'high';
export type TextTransform = 'none' | 'uppercase' | 'lowercase' | 'capitalize';
export type FontWeight = 500 | 600 | 700;
export type ButtonTypography = 'body' | 'heading';
export type HoverTransform = 'none' | 'lift' | 'scale' | 'press';
export type HoverColor = 'none' | 'brighten' | 'darken' | 'saturate' | 'token';
export type ButtonPaddingPreset = 'compact' | 'default' | 'spacious';
export type GradientStyle = 'linear' | 'radial' | 'conic';
export type GradientSharpness = 'smooth' | 'medium' | 'hard';
export type GradientDirection = 'to-r' | 'to-l' | 'to-t' | 'to-b' | 'to-tr' | 'to-tl' | 'to-br' | 'to-bl';
export type LetterSpacing = 'tight' | 'normal' | 'loose';
export type ButtonSizeName = 'sm' | 'md' | 'lg' | 'xl';
export interface ButtonSizeConfig {
    padding: string;
    fontSize?: string;
}
export type ButtonSizes = Record<ButtonSizeName, ButtonSizeConfig>;
/**
 * Standard semantic variant roles a theme exposes.
 *
 * Block content references variants by role; the active theme determines
 * what each role looks like.
 */
export declare const VARIANT_ROLES: readonly ["primary", "secondary", "outline", "ghost", "link", "tertiary", "accent"];
export type VariantRole = (typeof VARIANT_ROLES)[number];
export declare function isVariantRole(value: string): value is VariantRole;
declare const SpecialVariantIdBrand: unique symbol;
/**
 * Branded ID for theme-specific special variants that don't map to a standard role
 * (e.g. `banner`, `generous`, `pulse`, `danger`).
 *
 * Use `asSpecialVariantId` to construct.
 */
export type SpecialVariantId = string & {
    readonly [SpecialVariantIdBrand]: 'SpecialVariantId';
};
export declare function asSpecialVariantId(value: string): SpecialVariantId;
/**
 * A variant ID is either a standard role or a branded special ID.
 *
 * The zod schema validates at the runtime boundary; types flow through the
 * codebase without forcing every consumer to brand.
 */
export type VariantId = VariantRole | SpecialVariantId;
/**
 * Magic alias the CSS generator emits for the highest-priority variant.
 *
 * Shared between generator and renderer so neither side hard-codes the string.
 */
export declare const DEFAULT_VARIANT_ALIAS_ID: "default";
export type DefaultVariantAliasId = typeof DEFAULT_VARIANT_ALIAS_ID;
/**
 * Per-variant size overrides.
 *
 * Every variant participates in the size system. Optional `sizes` on a variant
 * lets it override individual sizes (e.g. a `link` variant declaring zero
 * horizontal padding at every size). Sizes not listed fall back to the theme's
 * `theme.buttons.sizes`, then to the system defaults.
 */
export type VariantSizeOverrides = Partial<ButtonSizes>;
export type ButtonBackground = {
    type: 'solid';
    colorToken: string;
} | {
    type: 'gradient';
    stops: string[];
    direction: GradientDirection;
} | {
    type: 'transparent';
};
export interface EffectApplication {
    effectId: string;
    options?: Record<string, unknown>;
}
export interface ButtonBorder {
    widthClass: string;
    colorToken: string;
}
export declare const cornerStyleSchema: z.ZodEnum<{
    rounded: "rounded";
    square: "square";
    pill: "pill";
}>;
export declare const shadowSizeSchema: z.ZodEnum<{
    medium: "medium";
    none: "none";
    low: "low";
    high: "high";
}>;
export declare const textTransformSchema: z.ZodEnum<{
    none: "none";
    uppercase: "uppercase";
    lowercase: "lowercase";
    capitalize: "capitalize";
}>;
export declare const fontWeightSchema: z.ZodUnion<readonly [z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>]>;
export declare const buttonTypographySchema: z.ZodEnum<{
    body: "body";
    heading: "heading";
}>;
export declare const letterSpacingSchema: z.ZodEnum<{
    tight: "tight";
    normal: "normal";
    loose: "loose";
}>;
export declare const hoverTransformSchema: z.ZodEnum<{
    none: "none";
    scale: "scale";
    lift: "lift";
    press: "press";
}>;
export declare const hoverColorSchema: z.ZodEnum<{
    none: "none";
    token: "token";
    brighten: "brighten";
    darken: "darken";
    saturate: "saturate";
}>;
export declare const buttonPaddingPresetSchema: z.ZodEnum<{
    compact: "compact";
    spacious: "spacious";
    default: "default";
}>;
export declare const gradientStyleSchema: z.ZodEnum<{
    linear: "linear";
    radial: "radial";
    conic: "conic";
}>;
export declare const gradientSharpnessSchema: z.ZodEnum<{
    medium: "medium";
    hard: "hard";
    smooth: "smooth";
}>;
export declare const prioritySchema: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
export declare const variantRoleSchema: z.ZodEnum<{
    link: "link";
    primary: "primary";
    secondary: "secondary";
    outline: "outline";
    accent: "accent";
    ghost: "ghost";
    tertiary: "tertiary";
}>;
export declare const buttonSizeNameSchema: z.ZodEnum<{
    sm: "sm";
    md: "md";
    lg: "lg";
    xl: "xl";
}>;
export declare const paddingShorthandSchema: z.ZodString;
export declare const buttonSizeConfigSchema: z.ZodObject<{
    padding: z.ZodString;
    fontSize: z.ZodOptional<z.ZodString>;
}, z.core.$strip>;
/**
 * `xl` is optional on the wire so themes persisted before the `xl` size was
 * added (e.g. SWTS) continue to parse. When `xl` is missing the schema
 * backfills it from `lg`, keeping `ButtonSizes` a complete `sm/md/lg/xl` map
 * downstream — generators never need to deal with an undefined `xl`.
 */
export declare const buttonSizesSchema: z.ZodPipe<z.ZodObject<{
    sm: z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
    md: z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
    lg: z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>;
    xl: z.ZodOptional<z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>, z.ZodTransform<{
    sm: {
        padding: string;
        fontSize?: string | undefined;
    };
    md: {
        padding: string;
        fontSize?: string | undefined;
    };
    lg: {
        padding: string;
        fontSize?: string | undefined;
    };
    xl: {
        padding: string;
        fontSize?: string | undefined;
    };
}, {
    sm: {
        padding: string;
        fontSize?: string | undefined;
    };
    md: {
        padding: string;
        fontSize?: string | undefined;
    };
    lg: {
        padding: string;
        fontSize?: string | undefined;
    };
    xl?: {
        padding: string;
        fontSize?: string | undefined;
    } | undefined;
}>>;
export declare const buttonGlobalSettingsSchema: z.ZodObject<{
    cornerStyle: z.ZodEnum<{
        rounded: "rounded";
        square: "square";
        pill: "pill";
    }>;
    cornerRadius: z.ZodOptional<z.ZodNumber>;
    shadow: z.ZodEnum<{
        medium: "medium";
        none: "none";
        low: "low";
        high: "high";
    }>;
    textTransform: z.ZodEnum<{
        none: "none";
        uppercase: "uppercase";
        lowercase: "lowercase";
        capitalize: "capitalize";
    }>;
    fontWeight: z.ZodUnion<readonly [z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>]>;
    borderWidth: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
    typography: z.ZodOptional<z.ZodEnum<{
        body: "body";
        heading: "heading";
    }>>;
    fontSize: z.ZodOptional<z.ZodString>;
    letterSpacing: z.ZodOptional<z.ZodEnum<{
        tight: "tight";
        normal: "normal";
        loose: "loose";
    }>>;
    italic: z.ZodOptional<z.ZodBoolean>;
    paddingPreset: z.ZodOptional<z.ZodEnum<{
        compact: "compact";
        spacious: "spacious";
        default: "default";
    }>>;
    hoverTransform: z.ZodEnum<{
        none: "none";
        scale: "scale";
        lift: "lift";
        press: "press";
    }>;
    hoverColor: z.ZodEnum<{
        none: "none";
        token: "token";
        brighten: "brighten";
        darken: "darken";
        saturate: "saturate";
    }>;
    hoverColorToken: z.ZodOptional<z.ZodString>;
    gradientStyle: z.ZodOptional<z.ZodEnum<{
        linear: "linear";
        radial: "radial";
        conic: "conic";
    }>>;
    gradientAngle: z.ZodOptional<z.ZodNumber>;
    gradientSharpness: z.ZodOptional<z.ZodEnum<{
        medium: "medium";
        hard: "hard";
        smooth: "smooth";
    }>>;
}, z.core.$strip>;
export declare const gradientDirectionSchema: z.ZodEnum<{
    "to-r": "to-r";
    "to-l": "to-l";
    "to-t": "to-t";
    "to-b": "to-b";
    "to-tr": "to-tr";
    "to-tl": "to-tl";
    "to-br": "to-br";
    "to-bl": "to-bl";
}>;
export declare const buttonBackgroundSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
    type: z.ZodLiteral<"solid">;
    colorToken: z.ZodString;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"gradient">;
    stops: z.ZodArray<z.ZodString>;
    direction: z.ZodEnum<{
        "to-r": "to-r";
        "to-l": "to-l";
        "to-t": "to-t";
        "to-b": "to-b";
        "to-tr": "to-tr";
        "to-tl": "to-tl";
        "to-br": "to-br";
        "to-bl": "to-bl";
    }>;
}, z.core.$strip>, z.ZodObject<{
    type: z.ZodLiteral<"transparent">;
}, z.core.$strip>], "type">;
export declare const effectApplicationSchema: z.ZodObject<{
    effectId: z.ZodString;
    options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
}, z.core.$strip>;
export declare const buttonBorderSchema: z.ZodObject<{
    widthClass: z.ZodString;
    colorToken: z.ZodString;
}, z.core.$strip>;
/**
 * Per-variant size overrides schema — every entry is optional.
 *
 * For each size key present, the values override the theme's `sizes` config
 * for that size on this variant. Missing sizes fall through to theme.sizes,
 * then system defaults.
 */
export declare const variantSizeOverridesSchema: z.ZodObject<{
    sm: z.ZodOptional<z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    md: z.ZodOptional<z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    lg: z.ZodOptional<z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
    xl: z.ZodOptional<z.ZodObject<{
        padding: z.ZodString;
        fontSize: z.ZodOptional<z.ZodString>;
    }, z.core.$strip>>;
}, z.core.$strip>;
/**
 * Unified variant schema. Every variant participates in the size system; the
 * optional `sizes` field lets a variant scale differently than the theme
 * default (e.g. link-style variants declaring zero horizontal padding at
 * every size).
 */
export declare const buttonVariantSchema: z.ZodObject<{
    id: z.ZodString;
    name: z.ZodString;
    enabled: z.ZodBoolean;
    priority: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
    background: z.ZodDiscriminatedUnion<[z.ZodObject<{
        type: z.ZodLiteral<"solid">;
        colorToken: z.ZodString;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"gradient">;
        stops: z.ZodArray<z.ZodString>;
        direction: z.ZodEnum<{
            "to-r": "to-r";
            "to-l": "to-l";
            "to-t": "to-t";
            "to-b": "to-b";
            "to-tr": "to-tr";
            "to-tl": "to-tl";
            "to-br": "to-br";
            "to-bl": "to-bl";
        }>;
    }, z.core.$strip>, z.ZodObject<{
        type: z.ZodLiteral<"transparent">;
    }, z.core.$strip>], "type">;
    textColorToken: z.ZodString;
    borderRadius: z.ZodOptional<z.ZodString>;
    shadow: z.ZodOptional<z.ZodObject<{
        elevation: z.ZodEnum<{
            medium: "medium";
            none: "none";
            low: "low";
            high: "high";
        }>;
        softness: z.ZodNullable<z.ZodEnum<{
            soft: "soft";
            crisp: "crisp";
            hard: "hard";
        }>>;
        position: z.ZodDefault<z.ZodEnum<{
            bottom: "bottom";
            "bottom-right": "bottom-right";
        }>>;
    }, z.core.$strip>>;
    border: z.ZodOptional<z.ZodObject<{
        widthClass: z.ZodString;
        colorToken: z.ZodString;
    }, z.core.$strip>>;
    hoverBackgroundToken: z.ZodOptional<z.ZodString>;
    effects: z.ZodOptional<z.ZodObject<{
        base: z.ZodOptional<z.ZodArray<z.ZodObject<{
            effectId: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
        }, z.core.$strip>>>;
        hover: z.ZodOptional<z.ZodArray<z.ZodObject<{
            effectId: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
        }, z.core.$strip>>>;
        active: z.ZodOptional<z.ZodArray<z.ZodObject<{
            effectId: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
        }, z.core.$strip>>>;
        focus: z.ZodOptional<z.ZodArray<z.ZodObject<{
            effectId: z.ZodString;
            options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
        }, z.core.$strip>>>;
    }, z.core.$strip>>;
    sizes: z.ZodOptional<z.ZodObject<{
        sm: z.ZodOptional<z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        md: z.ZodOptional<z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        lg: z.ZodOptional<z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
        xl: z.ZodOptional<z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
}, z.core.$strip>;
export declare const buttonSystemSchema: z.ZodObject<{
    global: z.ZodObject<{
        cornerStyle: z.ZodEnum<{
            rounded: "rounded";
            square: "square";
            pill: "pill";
        }>;
        cornerRadius: z.ZodOptional<z.ZodNumber>;
        shadow: z.ZodEnum<{
            medium: "medium";
            none: "none";
            low: "low";
            high: "high";
        }>;
        textTransform: z.ZodEnum<{
            none: "none";
            uppercase: "uppercase";
            lowercase: "lowercase";
            capitalize: "capitalize";
        }>;
        fontWeight: z.ZodUnion<readonly [z.ZodLiteral<500>, z.ZodLiteral<600>, z.ZodLiteral<700>]>;
        borderWidth: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
        typography: z.ZodOptional<z.ZodEnum<{
            body: "body";
            heading: "heading";
        }>>;
        fontSize: z.ZodOptional<z.ZodString>;
        letterSpacing: z.ZodOptional<z.ZodEnum<{
            tight: "tight";
            normal: "normal";
            loose: "loose";
        }>>;
        italic: z.ZodOptional<z.ZodBoolean>;
        paddingPreset: z.ZodOptional<z.ZodEnum<{
            compact: "compact";
            spacious: "spacious";
            default: "default";
        }>>;
        hoverTransform: z.ZodEnum<{
            none: "none";
            scale: "scale";
            lift: "lift";
            press: "press";
        }>;
        hoverColor: z.ZodEnum<{
            none: "none";
            token: "token";
            brighten: "brighten";
            darken: "darken";
            saturate: "saturate";
        }>;
        hoverColorToken: z.ZodOptional<z.ZodString>;
        gradientStyle: z.ZodOptional<z.ZodEnum<{
            linear: "linear";
            radial: "radial";
            conic: "conic";
        }>>;
        gradientAngle: z.ZodOptional<z.ZodNumber>;
        gradientSharpness: z.ZodOptional<z.ZodEnum<{
            medium: "medium";
            hard: "hard";
            smooth: "smooth";
        }>>;
    }, z.core.$strip>;
    variants: z.ZodArray<z.ZodObject<{
        id: z.ZodString;
        name: z.ZodString;
        enabled: z.ZodBoolean;
        priority: z.ZodUnion<readonly [z.ZodLiteral<1>, z.ZodLiteral<2>, z.ZodLiteral<3>]>;
        background: z.ZodDiscriminatedUnion<[z.ZodObject<{
            type: z.ZodLiteral<"solid">;
            colorToken: z.ZodString;
        }, z.core.$strip>, z.ZodObject<{
            type: z.ZodLiteral<"gradient">;
            stops: z.ZodArray<z.ZodString>;
            direction: z.ZodEnum<{
                "to-r": "to-r";
                "to-l": "to-l";
                "to-t": "to-t";
                "to-b": "to-b";
                "to-tr": "to-tr";
                "to-tl": "to-tl";
                "to-br": "to-br";
                "to-bl": "to-bl";
            }>;
        }, z.core.$strip>, z.ZodObject<{
            type: z.ZodLiteral<"transparent">;
        }, z.core.$strip>], "type">;
        textColorToken: z.ZodString;
        borderRadius: z.ZodOptional<z.ZodString>;
        shadow: z.ZodOptional<z.ZodObject<{
            elevation: z.ZodEnum<{
                medium: "medium";
                none: "none";
                low: "low";
                high: "high";
            }>;
            softness: z.ZodNullable<z.ZodEnum<{
                soft: "soft";
                crisp: "crisp";
                hard: "hard";
            }>>;
            position: z.ZodDefault<z.ZodEnum<{
                bottom: "bottom";
                "bottom-right": "bottom-right";
            }>>;
        }, z.core.$strip>>;
        border: z.ZodOptional<z.ZodObject<{
            widthClass: z.ZodString;
            colorToken: z.ZodString;
        }, z.core.$strip>>;
        hoverBackgroundToken: z.ZodOptional<z.ZodString>;
        effects: z.ZodOptional<z.ZodObject<{
            base: z.ZodOptional<z.ZodArray<z.ZodObject<{
                effectId: z.ZodString;
                options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
            }, z.core.$strip>>>;
            hover: z.ZodOptional<z.ZodArray<z.ZodObject<{
                effectId: z.ZodString;
                options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
            }, z.core.$strip>>>;
            active: z.ZodOptional<z.ZodArray<z.ZodObject<{
                effectId: z.ZodString;
                options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
            }, z.core.$strip>>>;
            focus: z.ZodOptional<z.ZodArray<z.ZodObject<{
                effectId: z.ZodString;
                options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodAny>>;
            }, z.core.$strip>>>;
        }, z.core.$strip>>;
        sizes: z.ZodOptional<z.ZodObject<{
            sm: z.ZodOptional<z.ZodObject<{
                padding: z.ZodString;
                fontSize: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
            md: z.ZodOptional<z.ZodObject<{
                padding: z.ZodString;
                fontSize: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
            lg: z.ZodOptional<z.ZodObject<{
                padding: z.ZodString;
                fontSize: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
            xl: z.ZodOptional<z.ZodObject<{
                padding: z.ZodString;
                fontSize: z.ZodOptional<z.ZodString>;
            }, z.core.$strip>>;
        }, z.core.$strip>>;
    }, z.core.$strip>>;
    sizes: z.ZodOptional<z.ZodPipe<z.ZodObject<{
        sm: z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>;
        md: z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>;
        lg: z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>;
        xl: z.ZodOptional<z.ZodObject<{
            padding: z.ZodString;
            fontSize: z.ZodOptional<z.ZodString>;
        }, z.core.$strip>>;
    }, z.core.$strip>, z.ZodTransform<{
        sm: {
            padding: string;
            fontSize?: string | undefined;
        };
        md: {
            padding: string;
            fontSize?: string | undefined;
        };
        lg: {
            padding: string;
            fontSize?: string | undefined;
        };
        xl: {
            padding: string;
            fontSize?: string | undefined;
        };
    }, {
        sm: {
            padding: string;
            fontSize?: string | undefined;
        };
        md: {
            padding: string;
            fontSize?: string | undefined;
        };
        lg: {
            padding: string;
            fontSize?: string | undefined;
        };
        xl?: {
            padding: string;
            fontSize?: string | undefined;
        } | undefined;
    }>>>;
}, z.core.$strip>;
export type Priority = 1 | 2 | 3;
export interface ButtonGlobalSettings {
    cornerStyle: CornerStyle;
    cornerRadius?: number;
    shadow: ShadowSize;
    textTransform: TextTransform;
    fontWeight: FontWeight;
    /** @deprecated See JSDoc on `buttonGlobalSettingsSchema.borderWidth`. */
    borderWidth: 1 | 2 | 3;
    /** Typography source (body or heading) — picks which theme typography pool to use */
    typography?: ButtonTypography;
    /** Font size token for all variants in the family (e.g. "text-xs", "text-sm") */
    fontSize?: string;
    /** Letter spacing for all variants */
    letterSpacing?: LetterSpacing;
    /** Italic style */
    italic?: boolean;
    /** Padding preset (used as sized-variant default when no sizes config) */
    paddingPreset?: ButtonPaddingPreset;
    hoverTransform: HoverTransform;
    hoverColor: HoverColor;
    /** When hoverColor is 'token', this specifies which token to use */
    hoverColorToken?: string;
    gradientStyle?: GradientStyle;
    gradientAngle?: number;
    gradientSharpness?: GradientSharpness;
}
/** Effects per state group */
export interface VariantEffects {
    base?: EffectApplication[];
    hover?: EffectApplication[];
    active?: EffectApplication[];
    focus?: EffectApplication[];
}
/**
 * A button variant.
 *
 * Every variant participates in the size system (`sm | md | lg | xl`). Padding
 * and fontSize at each size are resolved by:
 *   1. `variant.sizes?.[S]` if present
 *   2. else `theme.buttons.sizes?.[S]`
 *   3. else the system defaults in `DEFAULT_BUTTON_SIZES`
 *
 * Special variants like banner, link, or tag declare per-variant `sizes`
 * overrides to carry their distinct dimensions through every size. There is
 * no "fixed kind" — size is universal.
 */
export interface ButtonVariant {
    id: string;
    name: string;
    enabled: boolean;
    priority: Priority;
    background: ButtonBackground;
    textColorToken: string;
    /** Tailwind radius token (e.g. `'rounded-md'`). Omit to inherit from `global.cornerStyle`. */
    borderRadius?: string;
    shadow?: Shadow;
    border?: ButtonBorder;
    hoverBackgroundToken?: string;
    effects?: VariantEffects;
    /** Per-variant size overrides. See VariantSizeOverrides. */
    sizes?: VariantSizeOverrides;
}
export interface ButtonSystem {
    global: ButtonGlobalSettings;
    variants: ButtonVariant[];
    sizes?: ButtonSizes;
}
export {};
