import { AccessibilityProps } from '../shared/index.js';

type EmojiCategory = 'smileys' | 'people' | 'nature' | 'food' | 'travel' | 'activities' | 'objects' | 'symbols' | 'flags';
interface EmojiEntry {
    emoji: string;
    name: string;
    category: EmojiCategory;
    keywords: string[];
}
declare const EMOJI_DATA: Record<EmojiCategory, EmojiEntry[]>;
/** All categories in display order */
declare const EMOJI_CATEGORIES: EmojiCategory[];
/** Category display labels */
declare const CATEGORY_LABELS: Record<EmojiCategory, string>;
/** Get all emojis as a flat array */
declare function getAllEmojis(): EmojiEntry[];

interface EmojiPickerProps {
    /** Callback when an emoji is selected */
    onSelect?: (emoji: EmojiEntry) => void;
    /** Initial search query */
    search?: string;
    /** List of recently used emojis */
    recentEmojis?: EmojiEntry[];
    /** Maximum recent emojis to show */
    maxRecent?: number;
}
interface EmojiPickerState {
    search: string;
    activeCategory: EmojiCategory;
    filteredEmojis: EmojiEntry[];
    recentEmojis: EmojiEntry[];
}
interface EmojiPickerAPI {
    /** Current state */
    state: EmojiPickerState;
    /** Set search query */
    setSearch(query: string): void;
    /** Select an emoji */
    select(emoji: EmojiEntry): void;
    /** Set active category tab */
    setCategory(category: EmojiCategory): void;
    /** Category tabs with labels */
    categoryTabs: {
        category: EmojiCategory;
        label: string;
        emoji: string;
    }[];
    /** ARIA props for the picker container */
    ariaProps: Partial<AccessibilityProps> & Record<string, unknown>;
    /** ARIA props for the search input */
    searchInputProps: Record<string, unknown>;
    /** Get ARIA props for an emoji button */
    getEmojiAriaProps(emoji: EmojiEntry): Record<string, unknown>;
    /** Generated IDs */
    ids: {
        container: string;
        search: string;
        grid: string;
        label: string;
    };
}
declare function createEmojiPicker(props?: EmojiPickerProps): EmojiPickerAPI;

declare const emojiPickerContainerStyles = "w-80 rounded-lg border bg-popover text-popover-foreground shadow-md";
declare const emojiPickerSearchStyles = "w-full border-b px-3 py-2 text-sm bg-transparent outline-none placeholder:text-muted-foreground";
declare const emojiPickerCategoryBarStyles = "flex border-b px-1";
declare const emojiPickerCategoryTabVariants: (props?: ({
    state?: "active" | "inactive" | undefined;
} & {
    className?: string;
}) | undefined) => string;
declare const emojiPickerGridStyles = "grid grid-cols-8 gap-0.5 p-2 max-h-64 overflow-y-auto";
declare const emojiPickerEmojiButtonStyles = "flex items-center justify-center h-8 w-8 rounded cursor-pointer text-lg hover:bg-accent transition-colors";
declare const emojiPickerSectionLabelStyles = "px-2 py-1 text-xs font-medium text-muted-foreground";

export { CATEGORY_LABELS, EMOJI_CATEGORIES, EMOJI_DATA, type EmojiCategory, type EmojiEntry, type EmojiPickerAPI, type EmojiPickerProps, type EmojiPickerState, createEmojiPicker, emojiPickerCategoryBarStyles, emojiPickerCategoryTabVariants, emojiPickerContainerStyles, emojiPickerEmojiButtonStyles, emojiPickerGridStyles, emojiPickerSearchStyles, emojiPickerSectionLabelStyles, getAllEmojis };
