import { ReactNode } from 'react';
export declare const VARIANT: {
    readonly PRIMARY: "primary";
    readonly SECONDARY: "secondary";
    readonly EXPRESSIVE: "expressive";
};
export declare const variants: ("primary" | "secondary" | "expressive")[];
export type Variant = (typeof VARIANT)[keyof typeof VARIANT];
export declare const SIZE: {
    readonly XS: "xs";
    readonly SM: "sm";
    readonly MD: "md";
    readonly LG: "lg";
};
export declare const sizes: ("xs" | "sm" | "md" | "lg")[];
export type Size = (typeof SIZE)[keyof typeof SIZE];
type DefaultProps<TVariant, T = object> = {
    ["data-testid"]?: string;
    children?: ReactNode;
    className?: string;
    fullWidth?: boolean;
    negative?: boolean;
    size?: Size;
    variant: TVariant | Variant;
} & T;
export type UnionParams<TVariant> = DefaultProps<TVariant, {
    iconOnly: boolean;
    ["aria-label"]: string;
}> | DefaultProps<TVariant, {
    ["aria-label"]?: string;
}>;
type UnionKeys<T> = T extends T ? keyof T : never;
type StrictUnionHelper<T, TAll> = T extends any ? T & Partial<Record<Exclude<UnionKeys<TAll>, keyof T>, never>> : never;
type StrictUnion<T> = StrictUnionHelper<T, T>;
export type ActionProps<TVariant extends string = Variant> = StrictUnion<UnionParams<TVariant>>;
export {};
//# sourceMappingURL=action.d.ts.map