import type { CSSProperties } from 'react'; export interface LoaderProps { /** Preset size — overridden by height/width if provided. Default: 'md' */ size?: 'sm' | 'md' | 'lg'; /** Colour theme token. Default: 'primary' */ variant?: 'primary' | 'accent' | 'success' | 'warning'; /** Custom hex/rgba/hsl colour. Overrides variant when provided. */ color?: string; /** Extra CSS class(es) on the root element. */ className?: string; /** Custom height (px number or CSS string). Overrides size. */ height?: number | string; /** Custom width (px number or CSS string). Overrides size. */ width?: number | string; /** Accessible label for screen-readers (role="status"). */ ariaLabel?: string; /** Inline styles applied to the outermost wrapper div. */ wrapperStyle?: CSSProperties; /** Extra CSS class(es) on the outermost wrapper div. */ wrapperClass?: string; /** When false the loader is hidden (returns null). Default: true */ visible?: boolean; /** SVG stroke width in px. Relevant only for SVG-based loaders. Default: 4 */ strokeWidth?: number; /** Animation duration in seconds. Default: 1 */ animationDuration?: number; /** Array of custom colours used by multi-colour loaders (e.g. ColorRingLoader). */ colors?: string[]; } export declare const LOADER_SIZES: { readonly sm: "w-8 h-8"; readonly md: "w-12 h-12"; readonly lg: "w-16 h-16"; }; export declare const LOADER_BG_VARIANTS: { readonly primary: "bg-primary"; readonly accent: "bg-accent"; readonly success: "bg-success"; readonly warning: "bg-warning"; }; export declare const LOADER_BORDER_VARIANTS: { readonly primary: "border-primary"; readonly accent: "border-accent"; readonly success: "border-success"; readonly warning: "border-warning"; }; /** * Returns a CSS colour string from either a direct `color` prop or the variant token. */ export declare function resolveColor(variant?: LoaderProps['variant'], color?: string): string; /** * Resolves the size class + inline style taking height/width overrides into account. */ export declare function resolveSizeClass(size?: LoaderProps['size'], height?: number | string, width?: number | string): { sizeClass: string; sizeStyle: CSSProperties | undefined; };