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

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

    type iconNames = 'binoculars' |
      'picture-2' |
      'notepad-1' |
      'film' |
      'switch' |
      'forbidden' |
      'database-1' |
      'battery' |
      'picture-1' |
      'record' |
      'settings-7' |
      'layers-1' |
      'alarm' |
      'folder-7' |
      'shuffle' |
      'equal' |
      'calendar' |
      'folder-14' |
      'volume-control' |
      'alarm-clock-1' |
      'controls-8' |
      'notification' |
      'hourglass-3' |
      'compass' |
      'diploma' |
      'zoom-out' |
      'newspaper' |
      'folder-11' |
      'settings-8' |
      'cloud-computing-4' |
      'folder-13' |
      'help' |
      'smartphone-6' |
      'server-2' |
      'battery-7' |
      'smartphone-1' |
      'controls-5' |
      'power' |
      'garbage-1' |
      'video-camera' |
      'idea' |
      'folder-2' |
      'fast-forward' |
      'controls-3' |
      'clock' |
      'hourglass' |
      'video-player-2' |
      'download' |
      'notepad' |
      'hourglass-1' |
      'lamp' |
      'id-card-5' |
      'map-location' |
      'calendar-2' |
      'like-2' |
      'eject-1' |
      'star' |
      'push-pin' |
      'flag-4' |
      'send' |
      'trash' |
      'focus' |
      'music-player-3' |
      'print' |
      'settings-5' |
      'megaphone-1' |
      'bookmark' |
      'view' |
      'target' |
      'link' |
      'speaker-2' |
      'smartphone-8' |
      'minus' |
      'windows-2' |
      'division' |
      'smartphone-4' |
      'layers' |
      'calendar-6' |
      'folder-9' |
      'speaker-5' |
      'incoming' |
      'magnet-2' |
      'hide' |
      'locked-1' |
      'archive-1' |
      'map' |
      'folder-8' |
      'locked-4' |
      'stopwatch-1' |
      'unlink' |
      'edit-1' |
      'archive-3' |
      'umbrella' |
      'archive' |
      'map-2' |
      'video-player' |
      'controls' |
      'smartphone' |
      'more' |
      'file' |
      'eject' |
      'music-player' |
      'divide' |
      'street' |
      'television-1' |
      'bluetooth' |
      'controls-1' |
      'unlocked' |
      'flag-2' |
      'controls-2' |
      'controls-4' |
      'user' |
      'wireless-internet' |
      'speaker-1' |
      'controls-6' |
      'unlocked-1' |
      'calendar-1' |
      'photo-camera' |
      'speaker-8' |
      'reading' |
      'music-player-1' |
      'warning' |
      'add' |
      'rewind-1' |
      'price-tag' |
      'smartphone-3' |
      'battery-1' |
      'menu-3' |
      'pin' |
      'document' |
      'database' |
      'compact-disc' |
      'home-1' |
      'funnel' |
      'broken-link' |
      'key' |
      'error' |
      'video-player-1' |
      'placeholder-2' |
      'battery-8' |
      'locked-6' |
      'megaphone' |
      'file-1' |
      'star-1' |
      'save' |
      'user-5' |
      'close' |
      'locked-2' |
      'infinity' |
      'settings' |
      'controls-9' |
      'placeholders' |
      'resume' |
      'calculator' |
      'id-card-4' |
      'windows' |
      'back' |
      'restart' |
      'calculator-1' |
      'success' |
      'lock' |
      'folder-15' |
      'windows-4' |
      'smartphone-2' |
      'garbage' |
      'user-7' |
      'share-1' |
      'users' |
      'user-1' |
      'briefcase' |
      'server-1' |
      'shuffle-1' |
      'lock-1' |
      'notebook-2' |
      'compact-disc-2' |
      'alarm-1' |
      'worldwide' |
      'id-card-2' |
      'add-1' |
      'command' |
      'note' |
      'user-6' |
      'folder-16' |
      'picture' |
      'calendar-5' |
      'unlocked-2' |
      'list-1' |
      'share' |
      'calendar-4' |
      'worldwide-1' |
      'archive-2' |
      'navigation-1' |
      'fast-forward-1' |
      'folder-18' |
      'speaker' |
      'video-camera-1' |
      'folder-4' |
      'paper-plane' |
      'home-2' |
      'home' |
      'radar' |
      'mute' |
      'zoom-in' |
      'windows-3' |
      'add-2' |
      'attachment' |
      'battery-4' |
      'cloud' |
      'network' |
      'folder-5' |
      'muted' |
      'bookmark-1' |
      'sign' |
      'view-1' |
      'menu-2' |
      'login' |
      'add-3' |
      'hourglass-2' |
      'windows-1' |
      'switch-3' |
      'magic-wand' |
      'clock-1' |
      'cloud-computing-5' |
      'play-button' |
      'speaker-4' |
      'next' |
      'photo-camera-1' |
      'exit-2' |
      'switch-7' |
      'settings-6' |
      'smartphone-7' |
      'map-1' |
      'info' |
      'notebook-4' |
      'controls-7' |
      'placeholder-1' |
      'street-1' |
      'photos' |
      'notebook-3' |
      'calendar-3' |
      'like' |
      'menu' |
      'edit' |
      'more-2' |
      'switch-2' |
      'magnet-1' |
      'cloud-computing-2' |
      'calendar-7' |
      'compose' |
      'speaker-6' |
      'agenda' |
      'percent' |
      'id-card-3' |
      'shutdown' |
      'wifi' |
      'folder-17' |
      'percent-1' |
      'settings-4' |
      'diamond' |
      'notebook-1' |
      'exit' |
      'sign-1' |
      'switch-1' |
      'switch-5' |
      'view-2' |
      'pause' |
      'user-2' |
      'gift' |
      'magnet' |
      'cloud-computing-1' |
      'fingerprint' |
      'multiply-1' |
      'television' |
      'route' |
      'id-card-1' |
      'notebook' |
      'navigation' |
      'settings-1' |
      'repeat-1' |
      'stopwatch-3' |
      'folder-19' |
      'equal-2' |
      'upload' |
      'smartphone-11' |
      'flag-1' |
      'users-1' |
      'folder-10' |
      'battery-9' |
      'checked' |
      'database-3' |
      'tabs-1' |
      'substract' |
      'folder' |
      'smartphone-9' |
      'eyeglasses' |
      'locked-3' |
      'volume-control-1' |
      'user-3' |
      'exit-1' |
      'pause-1' |
      'flag' |
      'notebook-5' |
      'hold' |
      'stopwatch-2' |
      'file-2' |
      'folder-12' |
      'folder-1' |
      'share-2' |
      'speaker-7' |
      'cloud-computing' |
      'plus' |
      'battery-3' |
      'app' |
      'battery-5' |
      'locked' |
      'battery-2' |
      'checked-1' |
      'dislike' |
      'substract-1' |
      'settings-3' |
      'house' |
      'more-1' |
      'placeholder' |
      'equal-1' |
      'microphone' |
      'smartphone-10' |
      'server' |
      'internet' |
      'settings-9' |
      'previous' |
      'switch-4' |
      'menu-1' |
      'compact-disc-1' |
      'stop' |
      'settings-2' |
      'server-3' |
      'stopwatch' |
      'bluetooth-1' |
      'folder-6' |
      'skip' |
      'smartphone-5' |
      'multiply' |
      'menu-4' |
      'repeat' |
      'id-card' |
      'rewind' |
      'minus-1' |
      'database-2' |
      'folder-3' |
      'stopwatch-4' |
      'search-1' |
      'garbage-2' |
      'divide-1' |
      'cloud-computing-3' |
      'flag-3' |
      'notepad-2' |
      'paper-plane-1' |
      'tabs' |
      'alarm-clock' |
      'fax' |
      'placeholder-3' |
      'spotlight' |
      'albums' |
      'like-1' |
      'music-player-2' |
      'locked-5' |
      'dislike-1' |
      'user-4' |
      'microphone-1' |
      'stop-1' |
      'perspective' |
      'speaker-3' |
      'battery-6' |
      'time' |
      'wifi-1' |
      'list' |
      'switch-6' |
      'play-button-1' |
      'search' |
      'blueprint';

    type iconColors = ;

    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;
}
