'use client';

import { RadiusT, SizeT } from '../../../types';
export * from './sign-up';
export { SignUpForm } from './sign-up-form';
export { SignUpModal } from './sign-up-modal';
export { SignUpButton } from './sign-up-button';
export { SignUpCard } from './sign-up-card';
export interface BaseSignUpProps {
    /**
     * Sign-up methods to show
     */
    methods?: ('password' | 'oauth' | 'magic-link' | 'passkey' | 'sso')[];
    /**
     * Initial email value
     */
    email?: string;
    /**
     * Initial organization ID (for invitations)
     */
    organizationId?: string;
    /**
     * Invitation token (for org invitations)
     */
    invitationToken?: string;
    /**
     * Redirect URL after successful sign-up
     */
    redirectUrl?: string;
    /**
     * Success callback
     */
    onSuccess?: (result: any) => void;
    /**
     * Error callback
     */
    onError?: (error: Error) => void;
    /**
     * Custom title
     */
    title?: string;
    /**
     * Custom subtitle
     */
    subtitle?: string;
    /**
     * Form size
     */
    size?: SizeT;
    radius?: RadiusT;
    /**
     * Whether to show branding
     */
    showBranding?: boolean;
    /**
     * Disabled state
     */
    disabled?: boolean;
    /**
     * Require terms of service acceptance
     */
    requireTerms?: boolean;
    /**
     * Terms of service URL
     */
    termsUrl?: string;
    /**
     * Privacy policy URL
     */
    privacyUrl?: string;
}
export interface SignUpFormProps extends BaseSignUpProps {
    /**
     * Show sign-in link
     */
    showSignInLink?: boolean;
    /**
     * Form variant
     */
    variant?: 'default' | 'minimal' | 'compact';
    /**
     * Custom className
     */
    className?: string;
    /**
     * Custom footer content
     */
    footer?: React.ReactNode;
    /**
     * Custom header content
     */
    header?: React.ReactNode;
    /**
     * Password requirements
     */
    passwordRequirements?: {
        minLength?: number;
        requireUppercase?: boolean;
        requireLowercase?: boolean;
        requireNumbers?: boolean;
        requireSymbols?: boolean;
    };
    /**
     * Auto-focus first field
     */
    autoFocus?: boolean;
    /**
     * Collect additional fields
     */
    collectFields?: ('firstName' | 'lastName' | 'username' | 'phoneNumber')[];
}
export interface SignUpModalProps extends BaseSignUpProps {
    /**
     * Whether the modal is open
     */
    isOpen?: boolean;
    /**
     * Callback for when modal should close
     */
    onClose?: () => void;
    /**
     * Modal size
     */
    modalSize?: 'sm' | 'md' | 'lg' | 'xl' | 'full';
    /**
     * Whether modal can be closed by clicking backdrop
     */
    closeOnBackdropClick?: boolean;
    /**
     * Whether modal can be closed by pressing escape
     */
    closeOnEscape?: boolean;
    /**
     * Custom modal className
     */
    modalClassName?: string;
    /**
     * Show close button
     */
    showCloseButton?: boolean;
    /**
     * Modal backdrop blur
     */
    backdrop?: 'opaque' | 'blur' | 'transparent';
    /**
     * Modal placement
     */
    placement?: 'auto' | 'top' | 'center' | 'bottom';
}
export interface SignUpButtonProps {
    /**
     * Button text
     */
    children?: React.ReactNode;
    /**
     * Button variant
     */
    variant?: 'solid' | 'bordered' | 'light' | 'flat' | 'faded' | 'shadow' | 'ghost';
    /**
     * Button color
     */
    color?: 'default' | 'primary' | 'secondary' | 'success' | 'warning' | 'danger';
    /**
     * Button size
     */
    size?: 'sm' | 'md' | 'lg';
    /**
     * Full width button
     */
    fullWidth?: boolean;
    /**
     * Button icon
     */
    startContent?: React.ReactNode;
    endContent?: React.ReactNode;
    /**
     * Custom className
     */
    className?: string;
    /**
     * Modal mode - opens sign-up in modal instead of navigation
     */
    modalMode?: boolean;
    /**
     * Props to pass to the sign-up modal
     */
    modalProps?: Partial<SignUpModalProps>;
    /**
     * Navigation URL (when not in modal mode)
     */
    href?: string;
    /**
     * Custom onClick handler
     */
    onClick?: () => void;
    /**
     * Disabled state
     */
    disabled?: boolean;
}
export interface SignUpCardProps extends BaseSignUpProps {
    /**
     * Card variant
     */
    variant?: 'shadow' | 'bordered' | 'flat';
    /**
     * Custom className
     */
    className?: string;
    /**
     * Card padding
     */
    padding?: 'none' | 'sm' | 'md' | 'lg';
    /**
     * Card radius
     */
    radius?: 'none' | 'sm' | 'md' | 'lg';
    /**
     * Whether card has shadow
     */
    shadow?: 'none' | 'sm' | 'md' | 'lg';
    /**
     * Whether card is blurred
     */
    isBlurred?: boolean;
    /**
     * Custom footer content
     */
    footer?: React.ReactNode;
    /**
     * Custom header content
     */
    header?: React.ReactNode;
    /**
     * Card max width
     */
    maxWidth?: string | number;
    /**
     * Center the card
     */
    centered?: boolean;
}
/**
 * Get default sign-up configuration based on features
 */
export declare const getDefaultSignUpConfig: (features: any) => {
    methods: ("oauth" | "passkey" | "password" | "magic-link")[];
    showSignInLink: any;
    requireTerms: boolean;
};
/**
 * Sign-up validation helpers
 */
export declare const signUpValidation: {
    email: (email: string) => boolean;
    password: (password: string, requirements?: SignUpFormProps["passwordRequirements"]) => boolean;
    firstName: (name: string) => boolean;
    lastName: (name: string) => boolean;
    username: (username: string) => boolean;
    phoneNumber: (phone: string) => boolean;
};
/**
 * Password strength calculator
 */
export declare const getPasswordStrength: (password: string) => {
    score: number;
    feedback: string[];
    strength: "weak" | "fair" | "good" | "strong";
};
/**
 * Generate secure password suggestions
 */
export declare const generatePasswordSuggestions: (length?: number) => string[];
/**
 * Format invitation data
 */
export declare const formatInvitationData: (invitationToken?: string) => {
    organizationId: any;
    organizationName: any;
    inviterName: any;
    inviterEmail: any;
    role: any;
    expiresAt: Date;
} | null;
export declare const DEFAULT_PASSWORD_REQUIREMENTS: {
    minLength: number;
    requireUppercase: boolean;
    requireLowercase: boolean;
    requireNumbers: boolean;
    requireSymbols: boolean;
};
export declare const COLLECT_FIELDS_OPTIONS: readonly [{
    readonly key: "firstName";
    readonly label: "First Name";
    readonly required: true;
}, {
    readonly key: "lastName";
    readonly label: "Last Name";
    readonly required: true;
}, {
    readonly key: "username";
    readonly label: "Username";
    readonly required: false;
}, {
    readonly key: "phoneNumber";
    readonly label: "Phone Number";
    readonly required: false;
}];
export { SignUp as default } from './sign-up';
//# sourceMappingURL=index.d.ts.map