import React from 'react';
import { IconType } from 'react-icons';

/**
 * Configuration for a single social media link
 */
interface SocialLink {
    /** Display name of the social media platform */
    name: string;
    /** URL to the social media profile */
    link: string;
    /** React icon component name from react-icons */
    icon: string;
    /** Tailwind CSS color classes for styling */
    color: string;
    /** Whether to show this icon */
    want: boolean;
    /** Size of the icon (optional, default: 30) */
    size?: number;
}
/**
 * Configuration object containing all social media links
 */
interface SocialLinksConfig {
    /** Array of social media links */
    socialLinks: SocialLink[];
}
/**
 * Props for the FloatingIcons component
 */
interface FloatingIconsProps {
    /** Configuration object for social media links */
    config?: SocialLinksConfig;
    /** Position of the floating icons ('left' | 'right') */
    position?: 'left' | 'right';
    /** Custom CSS classes for styling */
    className?: string;
    /** Whether to show tooltips on hover */
    showTooltips?: boolean;
    /** Custom spacing between icons */
    spacing?: number;
    /** Animation duration in milliseconds */
    animationDuration?: number;
    /** Z-index for the floating container */
    zIndex?: number;
}
/**
 * Icon mapping for react-icons
 */
interface IconMapping {
    [key: string]: IconType;
}

/**
 * FloatingIcons component for displaying floating social media icons
 */
declare const FloatingIcons: React.FC<FloatingIconsProps>;

/**
 * Default configuration for social media links
 */
declare const defaultConfig: SocialLinksConfig;
/**
 * Load configuration from a JSON file
 * @param configPath - Path to the configuration JSON file
 * @returns Promise<SocialLinksConfig>
 */
declare const loadConfig: (configPath: string) => Promise<SocialLinksConfig>;
/**
 * Validate configuration object
 * @param config - Configuration object to validate
 * @returns SocialLinksConfig
 */
declare const validateConfig: (config: any) => SocialLinksConfig;
/**
 * Create a configuration object from individual parameters
 * @param socialLinks - Array of social media links
 * @returns SocialLinksConfig
 */
declare const createConfig: (socialLinks: any[]) => SocialLinksConfig;

export { FloatingIcons, FloatingIconsProps, IconMapping, SocialLink, SocialLinksConfig, createConfig, FloatingIcons as default, defaultConfig, loadConfig, validateConfig };
