'use client';

import { default as React } from 'react';
export interface LoadingSpinnerProps {
    /**
     * Loading variant
     */
    variant?: 'spinner' | 'dots' | 'pulse' | 'bars' | 'custom';
    /**
     * Size of the loading component
     */
    size?: 'sm' | 'md' | 'lg' | 'xl';
    /**
     * Color theme
     */
    color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
    /**
     * Loading text
     */
    text?: string;
    /**
     * Whether to show text
     */
    showText?: boolean;
    /**
     * Text position relative to spinner
     */
    textPosition?: 'top' | 'bottom' | 'left' | 'right';
    /**
     * Whether to center the component
     */
    centered?: boolean;
    /**
     * Whether to show as overlay
     */
    overlay?: boolean;
    /**
     * Custom className
     */
    className?: string;
    /**
     * Custom loading content
     */
    children?: React.ReactNode;
    /**
     * Animation duration (in seconds)
     */
    duration?: number;
    /**
     * Whether to show backdrop
     */
    backdrop?: boolean;
    /**
     * Backdrop opacity
     */
    backdropOpacity?: number;
}
export declare function LoadingSpinner({ variant, size, color, text, showText, textPosition, centered, overlay, className, children, duration, backdrop, backdropOpacity, }: LoadingSpinnerProps): import("react/jsx-runtime").JSX.Element;
export interface LoadingButtonProps extends React.ButtonHTMLAttributes<HTMLButtonElement> {
    /**
     * Whether button is loading
     */
    isLoading?: boolean;
    /**
     * Loading text (overrides children when loading)
     */
    loadingText?: string;
    /**
     * Loading spinner props
     */
    spinnerProps?: Partial<LoadingSpinnerProps>;
    /**
     * Button variant
     */
    variant?: 'solid' | 'bordered' | 'light' | 'flat' | 'faded' | 'shadow' | 'ghost';
    /**
     * Button color
     */
    color?: 'primary' | 'secondary' | 'success' | 'warning' | 'danger' | 'default';
    /**
     * Button size
     */
    size?: 'sm' | 'md' | 'lg';
}
export declare function LoadingButton({ isLoading, loadingText, spinnerProps, variant, color, size, children, disabled, className, ...props }: LoadingButtonProps): import("react/jsx-runtime").JSX.Element;
/**
 * Common loading states for authentication flows
 */
export declare const LoadingStates: {
    readonly signIn: {
        readonly text: "Signing in...";
        readonly variant: "spinner";
    };
    readonly signUp: {
        readonly text: "Creating account...";
        readonly variant: "spinner";
    };
    readonly signOut: {
        readonly text: "Signing out...";
        readonly variant: "dots";
    };
    readonly verifying: {
        readonly text: "Verifying...";
        readonly variant: "pulse";
    };
    readonly processing: {
        readonly text: "Processing...";
        readonly variant: "bars";
    };
    readonly loading: {
        readonly text: "Loading...";
        readonly variant: "spinner";
    };
    readonly sending: {
        readonly text: "Sending...";
        readonly variant: "dots";
    };
    readonly redirecting: {
        readonly text: "Redirecting...";
        readonly variant: "pulse";
    };
};
interface LoadingContextValue {
    isLoading: boolean;
    loadingText: string;
    setLoading: (loading: boolean, text?: string) => void;
}
export declare function LoadingProvider({ children }: {
    children: React.ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function useLoading(): LoadingContextValue;
export default LoadingSpinner;
//# sourceMappingURL=loading-spinner.d.ts.map