declare module 'react-native-ico-christmas' {
    import { ReactNode } from 'react';
    import { SvgProps } from 'react-native-svg';

    type AdditionalProps = {
      onError?: (error: Error) => void;
      onLoad?: () => void;
      fallback?: ReactNode;
    };

    type iconNames = 'reindeer' |
      'grinch' |
      'cookie' |
      'peppermint' |
      'shopping-bag' |
      'market' |
      'sleigh' |
      'wine' |
      'turron' |
      'tambourine' |
      'santa-claus' |
      'polvoron' |
      'gift' |
      'movie' |
      'chocolate-1' |
      'church' |
      'calendar' |
      'poinsettia-1' |
      'carol' |
      'roast-chicken' |
      'christmas-sock' |
      'lights' |
      'flower' |
      'bell' |
      'christmas-card-1' |
      'snowflake' |
      'stamp' |
      'winter-hat' |
      'car' |
      'sweater' |
      'spices' |
      'mittens' |
      'matches' |
      'list' |
      'cider' |
      'bauble' |
      'snowy' |
      'kid' |
      'mistletoe' |
      'mailbox' |
      'scarf' |
      'cracker' |
      'poinsettia' |
      'north-pole' |
      'bell-1' |
      'snowman' |
      'angel' |
      'champagne' |
      'pie' |
      'tinsel' |
      'candy-cane' |
      'marzipan' |
      'thermos' |
      'snow-globe' |
      'robin' |
      'star' |
      'pudding' |
      'sheet-music' |
      'elf' |
      'lights-1' |
      'pomegranate' |
      'gift-bag' |
      'king-cake' |
      'christmas-tree-1' |
      'chocolate' |
      'christmas-day' |
      'star-2' |
      'star-1' |
      'chat' |
      'cookie-1' |
      'polar-bear' |
      'window' |
      'nutcracker' |
      'bauble-1' |
      'jar' |
      'fireplace' |
      'crown' |
      'candle' |
      'drum' |
      'christmas-card' |
      'mrs-claus' |
      'gingerbread-man' |
      'bonfire' |
      'gingerbread-house' |
      'branch' |
      'lollipop' |
      'mistletoe-1' |
      'ghost' |
      'like' |
      'tag' |
      'vinyl' |
      'christmas-tree' |
      'chimney' |
      'wreath' |
      'ice-skates' |
      'baking' |
      'book' |
      'zambomba' |
      'santa-claus-1' |
      'list-1';

    type iconColors = '#35611A' |
      '#4B7A2F' |
      '#619243' |
      '#6E1414' |
      '#7D2E16' |
      '#88AD72' |
      '#924630' |
      '#992A2A' |
      '#A86B5A' |
      '#BE9083' |
      '#CCC9C0' |
      '#DF3333' |
      '#E55C5C' |
      '#E8682C' |
      '#E8A44D' |
      '#E8E5DA' |
      '#EC8585' |
      '#EF7F4A' |
      '#F7B89E' |
      '#F7E4E4' |
      '#F7F5F2' |
      '#FFB3B3' |
      '#FFCB61' |
      '#FFCFBB' |
      '#FFDB92' |
      '#FFEBC2' |
      '#FFFFFF';

    type backgroundType = 'circle' | 'rect' | 'button';

    type colorsType = Record<iconColors, string>;

    type positionType = 'top' | 'bottom' | 'right' | 'left' |
      'top_right' | 'top_left' | 'bottom_right' | 'bottom_left';

    type backgroundTypeObj = {
      type?: backgroundType;
      color?: string;
      radius?: number;
      borderRadius?: number;
    };

    type badgeTypeObj = {
      value?: number | string;
      fontSize?: string;
      position?: positionType;
      color?: string;
      colors: colorsType;
      backgroundColor?: string;
      radius?: number;
    };

    interface IconProps {
      name: iconNames;
      width?: number;
      height?: number;
      color?: string;
      colors?: colorsType;
      stroke?: number;
      background?: backgroundType | backgroundTypeObj;
      badge?: number | string | badgeTypeObj;
    }

    const Icon: (props: IconProps & SvgProps & AdditionalProps) => ReactNode;

    export { iconNames };
    export default Icon;
}
