export type TwemojiDefinition = {
    aliases: readonly string[];
    hexcode: string;
    name: string;
    shortcode: string;
    source: "twemoji";
    src: string;
};
export type CustomEmojiDefinition = {
    aliases?: readonly string[];
    name?: string;
    shortcode: string;
    src: string;
};
export type RegisteredCustomEmoji = {
    aliases: readonly string[];
    name: string;
    shortcode: string;
    source: "custom";
    src: string;
};
export type EmojiDefinition = TwemojiDefinition | RegisteredCustomEmoji;
export type EmojiShortcodeMatch = {
    emoji: EmojiDefinition;
    from: number;
    to: number;
};
export type EmojiRegistry = {
    emojis: readonly EmojiDefinition[];
    findShortcodes: (value: string) => EmojiShortcodeMatch[];
    normalizeShortcode: (value: string) => string | undefined;
    resolve: (value: string) => EmojiDefinition | undefined;
    search: (query: string) => EmojiDefinition[];
};
export declare const emojis: readonly TwemojiDefinition[];
export declare function createEmojiRegistry({ customEmojis, }?: {
    customEmojis?: readonly CustomEmojiDefinition[];
}): EmojiRegistry;
export declare const defaultEmojiRegistry: EmojiRegistry;
export declare function resolveEmoji(value: string, registry?: EmojiRegistry): EmojiDefinition | undefined;
export declare function normalizeShortcode(value: string, registry?: EmojiRegistry): string | undefined;
export declare function findEmojiShortcodes(value: string, registry?: EmojiRegistry): EmojiShortcodeMatch[];
export declare function searchEmojis(query: string, registry?: EmojiRegistry): EmojiDefinition[];
export declare function getEmojiUrl(shortcode: string, registry?: EmojiRegistry): string | undefined;
