/* GENERATED FILE */
import React, { forwardRef } from 'react'

import type {
  IconWeight,
  IconProps,
  PaintFunction,
  Icon,
  RenderFunction,
} from '../lib'
import { renderPathForWeight, useIconContext, IconBase } from '../lib'

export const IconCircleWavy: Icon = forwardRef<SVGSVGElement, IconProps>(
  (props, ref) => {
    let path: PaintFunction

    switch (props.weight) {
      case 'fill':
        path = () => (
          <>
            <path d="M240,128c0,10.44238-7.51074,18.27441-14.1377,25.18457-3.77246,3.93359-7.67285,8-9.14648,11.56348-1.35449,3.27343-1.43652,8.69629-1.51562,13.93945-.14747,9.75879-.31446,20.81934-8.0044,28.50879-7.68945,7.68945-18.75,7.85644-28.5083,8.00391-5.24414.0791-10.667.16113-13.94043,1.51562-3.5625,1.47363-7.62988,5.374-11.5625,9.14648C146.27441,232.48926,138.44238,240,127.99951,240c-10.44238,0-18.27392-7.51074-25.18408-14.1377-3.93311-3.77246-8-7.67285-11.56348-9.14648-3.27295-1.35449-8.69531-1.43652-13.93945-1.51562-9.75879-.14747-20.81934-.31446-28.50879-8.00391s-7.85644-18.75-8.00391-28.50879c-.0791-5.24316-.16113-10.666-1.51562-13.93945-1.47363-3.56348-5.374-7.62989-9.14648-11.56348C23.51074,146.27441,16,138.44238,16,128s7.51074-18.27441,14.1377-25.18457c3.77246-3.93359,7.67285-8,9.14648-11.56348,1.35449-3.27343,1.43652-8.69629,1.51562-13.93945.14747-9.75879.31446-20.81934,8.0044-28.50879,7.68945-7.68945,18.75-7.85644,28.5083-8.00391,5.24414-.0791,10.667-.16113,13.94043-1.51562,3.5625-1.47363,7.62988-5.374,11.5625-9.14648C109.72559,23.51074,117.55762,16,128.00049,16c10.44238,0,18.27392,7.51074,25.18408,14.1377,3.93311,3.77246,8,7.67285,11.56348,9.14648,3.27295,1.35449,8.69531,1.43652,13.93945,1.51562,9.75879.14747,20.81934.31446,28.50879,8.00391s7.85644,18.75,8.00391,28.50879c.0791,5.24316.16113,10.666,1.51562,13.93945,1.47363,3.56348,5.374,7.62989,9.14648,11.56348C232.48926,109.72559,240,117.55762,240,128Z" />
          </>
        )
        break

      default:
        path = () => (
          <>
            <path
              d="M54.46089,201.53911c-9.204-9.204-3.09935-28.52745-7.78412-39.85C41.82037,149.95168,24,140.50492,24,127.99963,24,115.4945,41.82047,106.048,46.67683,94.31079c4.68477-11.32253-1.41993-30.6459,7.78406-39.8499s28.52746-3.09935,39.85-7.78412C106.04832,41.82037,115.49508,24,128.00037,24c12.50513,0,21.95163,17.82047,33.68884,22.67683,11.32253,4.68477,30.6459-1.41993,39.8499,7.78406s3.09935,28.52746,7.78412,39.85C214.17963,106.04832,232,115.49508,232,128.00037c0,12.50513-17.82047,21.95163-22.67683,33.68884-4.68477,11.32253,1.41993,30.6459-7.78406,39.8499s-28.52745,3.09935-39.85,7.78412C149.95168,214.17963,140.50492,232,127.99963,232c-12.50513,0-21.95163-17.82047-33.68884-22.67683C82.98826,204.6384,63.66489,210.7431,54.46089,201.53911Z"
              fill="none"
              stroke="currentColor"
              strokeLinecap="round"
              strokeLinejoin="round"
              strokeWidth="18"
            />
          </>
        )
        break
    }

    const renderPath: RenderFunction = (weight: IconWeight) =>
      renderPathForWeight(weight, path)

    const { useIconProps } = useIconContext()
    const parsedProps = useIconProps(props)

    return <IconBase ref={ref} {...parsedProps} renderPath={renderPath} />
  }
)
