import * as React from "react";
import type { IconProps, IconMetadata, IconComponent } from "../../types";

interface LeapWalletProps extends IconProps {
  type?: "icon";
}

export const LeapWallet: IconComponent<LeapWalletProps> = React.forwardRef<
  SVGSVGElement,
  LeapWalletProps
>(function LeapWallet(
  {
    color = "currentColor",
    fill,
    size = 24,
    strokeWidth,
    strokeLinecap,
    strokeLinejoin,
    strokeDasharray,
    opacity,
    className,
    type = "icon",
    ...props
  },
  forwardedRef,
) {
  if (type === "icon") {
    return (
      <svg
        width={size}
        height={size}
        viewBox="0 0 24 24"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
        strokeWidth={strokeWidth}
        strokeLinecap={strokeLinecap}
        strokeLinejoin={strokeLinejoin}
        strokeDasharray={strokeDasharray}
        opacity={opacity}
        {...props}
        ref={forwardedRef}
      >
        <path
          d="M20.0406 14.5222C20.0406 17.3808 16.5518 18.5425 12.22 18.5425C7.88825 18.5425 4.34869 17.3808 4.34869 14.5222C4.34869 11.6635 7.86284 9.35034 12.1946 9.35034C16.5263 9.35034 20.0406 11.6686 20.0406 14.5222Z"
          fill="#24a95a"
        />
        <path
          d="M19.2438 8.29117C19.2438 6.78609 18.0149 5.56384 16.5016 5.56384C15.7147 5.56384 15.0054 5.89474 14.5056 6.42177C14.4281 6.5034 14.315 6.54317 14.2047 6.52091C13.5714 6.39306 12.9015 6.32143 12.2105 6.32143C11.5194 6.32143 10.8496 6.38884 10.2164 6.51978C10.106 6.54261 9.99237 6.50347 9.91447 6.42197C9.41062 5.89483 8.70171 5.56384 7.91932 5.56384C6.40599 5.56384 5.17706 6.78609 5.17706 8.29117C5.17706 8.73014 5.28091 9.1413 5.46382 9.50704C5.50763 9.59463 5.51204 9.69718 5.47414 9.78748C5.29669 10.2103 5.20245 10.6568 5.20245 11.1195C5.20245 13.7711 8.34081 15.9176 12.2105 15.9176C16.0802 15.9176 19.2185 13.7711 19.2185 11.1195C19.2185 10.6568 19.1243 10.2103 18.9467 9.78748C18.9088 9.69718 18.9133 9.59463 18.9571 9.50704C19.14 9.1413 19.2438 8.73014 19.2438 8.29117Z"
          fill="#32da6d"
        />
        <path
          d="M7.695 9.804C8.621 9.804 9.371 9.058 9.371 8.137 9.371 7.217 8.621 6.471 7.695 6.471 6.77 6.471 6.02 7.217 6.02 8.137 6.02 9.058 6.77 9.804 7.695 9.804ZM16.636 9.804C17.561 9.804 18.312 9.058 18.312 8.137 18.312 7.217 17.561 6.471 16.636 6.471 15.71 6.471 14.96 7.217 14.96 8.137 14.96 9.058 15.71 9.804 16.636 9.804Z"
          fill="#fff"
        />
        <path
          d="M6.806 18.337C7.167 18.337 7.451 18.024 7.41 17.67 7.263 16.417 6.639 13.705 3.891 12.074.88 10.285 2.312 15.041 2.911 16.774 3.032 17.124 2.892 17.514 2.57 17.698L2.373 17.812C2.119 17.958 2.226 18.337 2.515 18.337H6.806ZM17.72 18.337C17.395 18.337 17.142 18.024 17.177 17.67 17.304 16.423 17.873 13.705 20.351 12.074 23.095 10.271 21.759 15.115 21.226 16.814 21.122 17.147 21.25 17.509 21.545 17.696L21.727 17.812C21.956 17.958 21.859 18.337 21.6 18.337H17.72Z"
          fill="#32da6d"
        />
        <path
          d="M7.698 9.134C8.25 9.134 8.697 8.687 8.697 8.135 8.697 7.582 8.25 7.135 7.698 7.135 7.146 7.135 6.698 7.582 6.698 8.135 6.698 8.687 7.146 9.134 7.698 9.134ZM16.638 9.134C17.19 9.134 17.638 8.687 17.638 8.135 17.638 7.582 17.19 7.135 16.638 7.135 16.086 7.135 15.638 7.582 15.638 8.135 15.638 8.687 16.086 9.134 16.638 9.134ZM14.429 12.003C14.677 12.024 14.864 12.244 14.802 12.485 14.751 12.679 14.679 12.868 14.586 13.047 14.424 13.36 14.201 13.638 13.931 13.865 13.662 14.092 13.35 14.264 13.014 14.371 12.678 14.477 12.324 14.516 11.972 14.486 11.621 14.456 11.279 14.357 10.966 14.194 10.653 14.032 10.375 13.81 10.148 13.54 9.921 13.27 9.75 12.958 9.643 12.622 9.567 12.382 9.525 12.132 9.518 11.881 9.514 11.715 9.661 11.592 9.827 11.607L12.203 11.811 14.429 12.003Z"
          fill="#092511"
        />
      </svg>
    );
  }

  if (type === "icon") {
    return (
      <svg
        width={size}
        height={size}
        viewBox="0 0 24 24"
        fill="none"
        xmlns="http://www.w3.org/2000/svg"
        className={className}
        strokeWidth={strokeWidth}
        strokeLinecap={strokeLinecap}
        strokeLinejoin={strokeLinejoin}
        strokeDasharray={strokeDasharray}
        opacity={opacity}
        {...props}
        ref={forwardedRef}
      >
        <path
          d="M20.0405 14.5222C20.0405 17.3808 16.5517 18.5425 12.2199 18.5425C7.88818 18.5425 4.34863 17.3808 4.34863 14.5222C4.34863 11.6635 7.86278 9.35034 12.1946 9.35034C16.5263 9.35034 20.0405 11.6686 20.0405 14.5222Z"
          fill="#24a95a"
        />
        <path
          d="M19.2438 8.29117C19.2438 6.78609 18.0148 5.56384 16.5015 5.56384C15.7146 5.56384 15.0053 5.89474 14.5055 6.42177C14.4281 6.5034 14.3149 6.54317 14.2046 6.52091C13.5714 6.39306 12.9015 6.32143 12.2104 6.32143C11.5194 6.32143 10.8495 6.38884 10.2164 6.51978C10.106 6.54261 9.99231 6.50347 9.91441 6.42197C9.41056 5.89483 8.70165 5.56384 7.91926 5.56384C6.40593 5.56384 5.177 6.78609 5.177 8.29117C5.177 8.73014 5.28085 9.1413 5.46376 9.50704C5.50757 9.59463 5.51198 9.69718 5.47408 9.78748C5.29663 10.2103 5.20239 10.6568 5.20239 11.1195C5.20239 13.7711 8.34075 15.9176 12.2104 15.9176C16.0801 15.9176 19.2185 13.7711 19.2185 11.1195C19.2185 10.6568 19.1242 10.2103 18.9467 9.78748C18.9088 9.69718 18.9133 9.59463 18.9571 9.50704C19.14 9.1413 19.2438 8.73014 19.2438 8.29117Z"
          fill="#32da6d"
        />
        <path
          d="M7.695 9.804C8.621 9.804 9.371 9.058 9.371 8.137 9.371 7.217 8.621 6.471 7.695 6.471 6.77 6.471 6.02 7.217 6.02 8.137 6.02 9.058 6.77 9.804 7.695 9.804ZM16.636 9.804C17.561 9.804 18.312 9.058 18.312 8.137 18.312 7.217 17.561 6.471 16.636 6.471 15.71 6.471 14.96 7.217 14.96 8.137 14.96 9.058 15.71 9.804 16.636 9.804Z"
          fill="#fff"
        />
        <path
          d="M6.806 18.337C7.167 18.337 7.451 18.024 7.41 17.67 7.263 16.417 6.639 13.705 3.891 12.074.88 10.285 2.312 15.041 2.911 16.774 3.032 17.124 2.892 17.514 2.57 17.698L2.373 17.812C2.119 17.958 2.226 18.337 2.515 18.337H6.806ZM17.72 18.337C17.395 18.337 17.142 18.024 17.177 17.67 17.304 16.423 17.873 13.705 20.351 12.074 23.095 10.271 21.759 15.115 21.226 16.814 21.122 17.147 21.25 17.509 21.545 17.696L21.727 17.812C21.956 17.958 21.859 18.337 21.6 18.337H17.72Z"
          fill="#32da6d"
        />
        <path
          d="M7.698 9.134C8.25 9.134 8.697 8.687 8.697 8.135 8.697 7.582 8.25 7.135 7.698 7.135 7.146 7.135 6.698 7.582 6.698 8.135 6.698 8.687 7.146 9.134 7.698 9.134ZM16.638 9.134C17.19 9.134 17.638 8.687 17.638 8.135 17.638 7.582 17.19 7.135 16.638 7.135 16.086 7.135 15.638 7.582 15.638 8.135 15.638 8.687 16.086 9.134 16.638 9.134ZM14.429 12.003C14.677 12.024 14.864 12.244 14.802 12.485 14.751 12.679 14.679 12.868 14.586 13.047 14.424 13.36 14.201 13.638 13.931 13.865 13.662 14.092 13.35 14.264 13.014 14.371 12.678 14.477 12.324 14.516 11.972 14.486 11.621 14.456 11.279 14.357 10.966 14.194 10.653 14.032 10.375 13.81 10.148 13.54 9.921 13.27 9.749 12.958 9.643 12.622 9.567 12.382 9.525 12.132 9.518 11.881 9.514 11.715 9.661 11.592 9.827 11.607L12.203 11.811 14.429 12.003Z"
          fill="#092511"
        />
      </svg>
    );
  }

  console.error(`LeapWallet doesn't support ${type}`);
  return null;
});

LeapWallet.displayName = "LeapWallet";

LeapWallet.metadata = {
  name: "LeapWallet",
  category: "icon/payment",
  tags: ["leap", "wallet", "icon"],
  description: "LeapWallet icon from icon/payment category",
  type: ["stroke", "icon"],
} as IconMetadata;

export default LeapWallet;
