interface MnemonicIcon { name: string emoji: string } const FRUITS: MnemonicIcon[] = [ { name: 'apple', emoji: '🍎' }, { name: 'banana', emoji: '🍌' }, { name: 'orange', emoji: '🍊' }, { name: 'grape', emoji: '🍇' }, { name: 'strawberry', emoji: '🍓' }, { name: 'watermelon', emoji: '🍉' }, { name: 'pineapple', emoji: '🍍' }, { name: 'mango', emoji: 'ðŸĨ­' }, { name: 'peach', emoji: '🍑' }, { name: 'cherry', emoji: '🍒' }, { name: 'pear', emoji: '🍐' }, { name: 'kiwi', emoji: 'ðŸĨ' }, { name: 'lemon', emoji: '🍋' }, { name: 'coconut', emoji: 'ðŸĨĨ' }, { name: 'avocado', emoji: 'ðŸĨ‘' }, { name: 'tomato', emoji: '🍅' }, { name: 'eggplant', emoji: '🍆' }, { name: 'corn', emoji: 'ðŸŒ―' }, { name: 'pepper', emoji: 'ðŸŒķïļ' }, { name: 'cucumber', emoji: 'ðŸĨ’' }, { name: 'carrot', emoji: 'ðŸĨ•' }, { name: 'broccoli', emoji: 'ðŸĨĶ' }, { name: 'lettuce', emoji: 'ðŸĨŽ' }, { name: 'potato', emoji: 'ðŸĨ”' }, { name: 'onion', emoji: '🧅' }, { name: 'mushroom', emoji: '🍄' }, { name: 'peanuts', emoji: 'ðŸĨœ' }, { name: 'chestnut', emoji: '🌰' }, { name: 'bread', emoji: '🍞' }, { name: 'croissant', emoji: 'ðŸĨ' }, { name: 'baguette', emoji: 'ðŸĨ–' }, { name: 'pretzel', emoji: 'ðŸĨĻ' }, { name: 'pancakes', emoji: 'ðŸĨž' }, ] const PLANTS: MnemonicIcon[] = [ { name: 'rose', emoji: 'ðŸŒđ' }, { name: 'tulip', emoji: '🌷' }, { name: 'sunflower', emoji: 'ðŸŒŧ' }, { name: 'hibiscus', emoji: '🌚' }, { name: 'cherry_blossom', emoji: 'ðŸŒļ' }, { name: 'blossom', emoji: '🌞' }, { name: 'bouquet', emoji: '💐' }, { name: 'maple_leaf', emoji: '🍁' }, { name: 'fallen_leaf', emoji: '🍂' }, { name: 'leaf', emoji: '🍃' }, { name: 'herb', emoji: 'ðŸŒŋ' }, { name: 'shamrock', emoji: '☘ïļ' }, { name: 'four_leaf_clover', emoji: '🍀' }, { name: 'bamboo', emoji: '🎋' }, { name: 'tanabata_tree', emoji: '🎋' }, { name: 'palm_tree', emoji: 'ðŸŒī' }, { name: 'cactus', emoji: 'ðŸŒĩ' }, { name: 'evergreen_tree', emoji: 'ðŸŒē' }, { name: 'deciduous_tree', emoji: 'ðŸŒģ' }, { name: 'seedling', emoji: 'ðŸŒą' }, { name: 'potted_plant', emoji: 'ðŸŠī' }, { name: 'wheat', emoji: 'ðŸŒū' }, { name: 'rice', emoji: 'ðŸŒū' }, { name: 'barley', emoji: 'ðŸŒū' }, { name: 'oak', emoji: 'ðŸŒģ' }, { name: 'pine', emoji: 'ðŸŒē' }, { name: 'cedar', emoji: 'ðŸŒē' }, { name: 'birch', emoji: 'ðŸŒģ' }, { name: 'willow', emoji: 'ðŸŒģ' }, { name: 'elm', emoji: 'ðŸŒģ' }, ] const ANIMALS: MnemonicIcon[] = [ { name: 'dog', emoji: '🐕' }, { name: 'cat', emoji: '🐈' }, { name: 'mouse', emoji: '🐭' }, { name: 'hamster', emoji: 'ðŸđ' }, { name: 'rabbit', emoji: '🐰' }, { name: 'fox', emoji: 'ðŸĶŠ' }, { name: 'bear', emoji: 'ðŸŧ' }, { name: 'panda', emoji: '🐞' }, { name: 'koala', emoji: 'ðŸĻ' }, { name: 'tiger', emoji: 'ðŸŊ' }, { name: 'lion', emoji: 'ðŸĶ' }, { name: 'cow', emoji: 'ðŸŪ' }, { name: 'pig', emoji: '🐷' }, { name: 'frog', emoji: 'ðŸļ' }, { name: 'monkey', emoji: 'ðŸĩ' }, { name: 'chicken', emoji: '🐔' }, { name: 'penguin', emoji: '🐧' }, { name: 'bird', emoji: 'ðŸĶ' }, { name: 'duck', emoji: 'ðŸĶ†' }, { name: 'eagle', emoji: 'ðŸĶ…' }, { name: 'owl', emoji: 'ðŸĶ‰' }, { name: 'bat', emoji: 'ðŸĶ‡' }, { name: 'wolf', emoji: '🐚' }, { name: 'boar', emoji: '🐗' }, { name: 'horse', emoji: 'ðŸī' }, { name: 'unicorn', emoji: 'ðŸĶ„' }, { name: 'bee', emoji: '🐝' }, { name: 'bug', emoji: '🐛' }, { name: 'butterfly', emoji: 'ðŸĶ‹' }, { name: 'snail', emoji: '🐌' }, { name: 'shell', emoji: '🐚' }, { name: 'turtle', emoji: 'ðŸĒ' }, { name: 'snake', emoji: '🐍' }, { name: 'dragon', emoji: 'ðŸē' }, { name: 'sauropod', emoji: 'ðŸĶ•' }, { name: 't-rex', emoji: 'ðŸĶ–' }, { name: 'whale', emoji: '🐋' }, { name: 'dolphin', emoji: '🐎' }, { name: 'fish', emoji: '🐟' }, { name: 'tropical_fish', emoji: '🐠' }, { name: 'blowfish', emoji: 'ðŸĄ' }, { name: 'shark', emoji: 'ðŸĶˆ' }, { name: 'octopus', emoji: '🐙' }, { name: 'spiral_shell', emoji: '🐚' }, { name: 'crab', emoji: 'ðŸĶ€' }, { name: 'lobster', emoji: 'ðŸĶž' }, { name: 'shrimp', emoji: 'ðŸĶ' }, { name: 'squid', emoji: 'ðŸĶ‘' }, { name: 'elephant', emoji: '🐘' }, { name: 'rhino', emoji: 'ðŸĶ' }, { name: 'hippo', emoji: 'ðŸĶ›' }, { name: 'giraffe', emoji: 'ðŸĶ’' }, { name: 'zebra', emoji: 'ðŸĶ“' }, { name: 'deer', emoji: 'ðŸĶŒ' }, { name: 'camel', emoji: 'ðŸŦ' }, { name: 'llama', emoji: 'ðŸĶ™' }, { name: 'goat', emoji: '🐐' }, { name: 'ram', emoji: '🐏' }, { name: 'sheep', emoji: '🐑' }, { name: 'chipmunk', emoji: 'ðŸŋïļ' }, ] const ALL_ICONS: MnemonicIcon[] = [...FRUITS, ...PLANTS, ...ANIMALS] function expandDictionary(): MnemonicIcon[] { const expanded: MnemonicIcon[] = [] const base = ALL_ICONS.length const variants = ['', '🌙', '⭐', 'âœĻ', 'ðŸ’Ŧ', '🌟', '💎', 'ðŸ”Ū', '⚡', 'ðŸ”Ĩ'] for (let i = 0; i < 3000; i++) { const baseIndex = i % base const variantIndex = Math.floor(i / base) % variants.length const baseIcon = ALL_ICONS[baseIndex] if (variantIndex === 0) { expanded.push(baseIcon) } else { expanded.push({ name: `${baseIcon.name}_${variantIndex}`, emoji: `${baseIcon.emoji}${variants[variantIndex]}`, }) } } return expanded } const DICTIONARY = expandDictionary() function hashString(str: string): number { let hash = 0 for (let i = 0; i < str.length; i++) { const char = str.charCodeAt(i) hash = ((hash << 5) - hash) + char hash = hash & hash } return Math.abs(hash) } export function generateMnemonicIcons(pubkey: string): string[] { const baseHash = hashString(pubkey) const icons: string[] = [] for (let i = 0; i < 4; i++) { const segment = pubkey.slice(i * 8, (i + 1) * 8) || pubkey.slice(-8) const segmentHash = hashString(segment) const combinedHash = (baseHash + segmentHash + i * 1000) % DICTIONARY.length icons.push(DICTIONARY[combinedHash].emoji) } return icons }