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

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

    type iconNames = 'tag' |
      'shopping-cart-26' |
      'invoice' |
      'discount-4' |
      'shopping-bag-1' |
      'invoice-27' |
      'invoice-23' |
      'shopping-basket-1' |
      'credit-card-5' |
      'tag-8' |
      'watch' |
      'credit-card-3' |
      'shopping-cart-38' |
      'smartphone-4' |
      'tag-10' |
      'watch-1' |
      'discount-5' |
      'invoice-15' |
      'package-5' |
      'smartphone-5' |
      'money-bag' |
      'shopping-basket-3' |
      'delivery-truck-3' |
      'shopping-bag-15' |
      'tag-6' |
      'package-9' |
      'coffee-cup' |
      'shopping-bag-3' |
      'online-shop-19' |
      'package-1' |
      'tag-1' |
      'invoice-30' |
      'money-bag-5' |
      'shopping-basket-11' |
      'online-shop-6' |
      'sign-6' |
      'package-3' |
      'shopping-bag-14' |
      'shopping-cart-11' |
      'invoice-5' |
      'shopping-bag-23' |
      'online-shop-15' |
      'money-bag-1' |
      'wallet-3' |
      'shopping-cart-9' |
      'wallet-5' |
      'online-shop-3' |
      'online-shop-5' |
      'online-shop-22' |
      'online-shop-29' |
      'shopping-bag-21' |
      'shopping-cart-24' |
      'online-shop-4' |
      'cash' |
      'wallet-1' |
      'shopping-cart-2' |
      'delivery-truck-4' |
      'shopping-cart-42' |
      'money-6' |
      'wallet' |
      'shopping-cart-43' |
      'online-shop-28' |
      'search-2' |
      'pin-3' |
      'shopping-cart-3' |
      'shopping-cart-21' |
      'shopping-cart-20' |
      'online-shop-26' |
      'invoice-20' |
      'search-4' |
      'headset' |
      'online-shop-33' |
      'online-shop-21' |
      'money-5' |
      'shopping-bag-20' |
      'shopping-bag-6' |
      'tag-9' |
      'pin' |
      'shopping-cart-22' |
      'package-8' |
      'credit-card' |
      'discount' |
      'online-shop-2' |
      'sign-4' |
      'invoice-32' |
      'online-shop-38' |
      'shopping-bag-9' |
      'shopping-cart-32' |
      'online-shop-23' |
      'shopping-bag-12' |
      'credit-card-4' |
      'online-shop-9' |
      'invoice-24' |
      'shopping-bag-25' |
      'money-bag-4' |
      'rupee-2' |
      'smartphone-1' |
      'panel' |
      'shopping-bag-13' |
      'invoice-25' |
      'shopping-cart-7' |
      'pin-5' |
      'wallet-12' |
      'package' |
      'shopping-bag-5' |
      'shopping-basket-8' |
      'shopping-cart-31' |
      'pin-2' |
      'delivery-truck' |
      'invoice-14' |
      'invoice-11' |
      'shopping-bag-24' |
      'online-shop-14' |
      'money-3' |
      'shopping-cart-29' |
      'wallet-2' |
      'wallet-6' |
      'shopping-basket' |
      'customer' |
      'online-shop-8' |
      'money-bag-2' |
      'shopping-cart-34' |
      'shopping-bag-7' |
      'invoice-7' |
      'cash-register' |
      'package-6' |
      'shopping-cart-13' |
      'rupee' |
      'chat' |
      'delivery-truck-1' |
      'shopping-cart' |
      'package-2' |
      'tag-5' |
      'shopping-cart-27' |
      'money-1' |
      'pound-sterling' |
      'discount-1' |
      'wallet-11' |
      'yen-2' |
      'credit-card-8' |
      'wallet-8' |
      'invoice-6' |
      'shopping-cart-18' |
      'shopping-bag-22' |
      'invoice-29' |
      'shopping-cart-19' |
      'credit-card-6' |
      'shopping-basket-6' |
      'pin-4' |
      'online-shop-1' |
      'shopping-cart-4' |
      'wallet-4' |
      'online-shop-27' |
      'invoice-10' |
      'search-1' |
      'rupee-1' |
      'shopping-bag-16' |
      'tag-3' |
      'shopping-cart-33' |
      'online-shop-16' |
      'delivery-truck-5' |
      'parking-ticket-1' |
      'online-shop-31' |
      'shopping-cart-8' |
      'calculator' |
      'shopping-bag-18' |
      'shopping-cart-30' |
      'sign-5' |
      'shopping-cart-6' |
      'shopping-bags' |
      'trolley-1' |
      'cctv' |
      'shopping-basket-5' |
      'shopping-cart-14' |
      'wallet-7' |
      'invoice-19' |
      'shopping-cart-41' |
      'delivery-truck-2' |
      'smartphone-6' |
      'invoice-31' |
      'invoice-26' |
      'package-7' |
      'wallet-10' |
      'shopping-basket-12' |
      'shipping-truck' |
      'yen-1' |
      'online-shop-10' |
      'online-shop-32' |
      'tag-7' |
      'tag-2' |
      'shopping-cart-44' |
      'list' |
      'invoice-22' |
      'shopping-cart-5' |
      'online-shop' |
      'invoice-17' |
      'online-shop-17' |
      'shop' |
      'online-shop-30' |
      'invoice-2' |
      'smartphone' |
      'sign-2' |
      'discount-3' |
      'money-bag-3' |
      'shopping-cart-36' |
      'credit-card-2' |
      'invoice-4' |
      'money-2' |
      'smartphone-3' |
      'invoice-28' |
      'invoice-18' |
      'shopping-cart-40' |
      'shopping-basket-13' |
      'credit-card-1' |
      'pin-1' |
      'shopping-basket-9' |
      'shopping-bag-2' |
      'tag-11' |
      'invoice-8' |
      'online-shop-34' |
      'gift' |
      'microphone' |
      'yen' |
      'shopping-basket-2' |
      'credit-card-7' |
      'shopping-basket-4' |
      'laptop-1' |
      'shopping-cart-37' |
      'invoice-21' |
      'shopping-cart-10' |
      'shopping-cart-1' |
      'shopping-basket-10' |
      'calculator-1' |
      'discount-2' |
      'tag-4' |
      'shopping-cart-35' |
      'voucher' |
      'sign-3' |
      'online-shop-25' |
      'invoice-13' |
      'invoice-16' |
      'online-shop-37' |
      'online-shop-13' |
      'laptop' |
      'invoice-3' |
      'shopping-cart-16' |
      'sign-1' |
      'shopping-bag-10' |
      'shopping-cart-28' |
      'shopping-bag' |
      'wallet-9' |
      'shopping-basket-7' |
      'online-shop-7' |
      'shopping-cart-15' |
      'shopping-bag-11' |
      'shopping-bag-4' |
      'smartphone-2' |
      'shopping-cart-23' |
      'online-shop-12' |
      'shopping-cart-39' |
      'shopping-bag-8' |
      'online-shop-18' |
      'online-shop-24' |
      'money' |
      'sign' |
      'shopping-bag-19' |
      'shopping-cart-12' |
      'search-5' |
      'search-3' |
      'money-4' |
      'shopping-bags-1' |
      'shopping-cart-17' |
      'online-shop-20' |
      'invoice-1' |
      'parking-ticket' |
      'online-shop-36' |
      'delivery-truck-6' |
      'invoice-9' |
      'online-shop-35' |
      'online-shop-11' |
      'trolley' |
      'barcode' |
      'gift-1' |
      'search' |
      'shopping-cart-25' |
      'package-4' |
      'shopping-bag-17' |
      'invoice-12';

    type iconColors = '#000';

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