declare module '*.svg'
declare module '*.png'
declare module '*.jpg'

declare module 'chinese-lunar' {
  interface Lunar {
    leap: boolean
    year: number
    month: number
    day: number
    leapMonth: number
  }
  const methods: {
    solarToLunar(date: Date): Lunar
    solarToLunar(date: Date, format: string): string
  }
  export = methods
}

declare module 'react-swipeable-views-utils' {
  const methods: {
    virtualize: <T>(
      Comp: React.ComponentType<T>,
    ) => React.ComponentType<
      T & {
        slideRenderer: (params: {
          index: number
          key: number
        }) => React.ReactNode
        overscanSlideAfter?: number
        overscanSlideBefore?: number
        slideCount?: number
      }
    >
  }
  export = methods
}

declare module 'rc-tooltip' {
  export type Trigger = 'hover' | 'click' | 'focus' | 'contextMenu'
  export type Placement =
    | 'left'
    | 'right'
    | 'top'
    | 'bottom'
    | 'topLeft'
    | 'topRight'
    | 'bottomLeft'
    | 'bottomRight'
  export default class extends React.Component<{
    overlayClassName?: string
    trigger?: Trigger[]
    mouseEnterDelay?: number
    mouseLeaveDelay?: number
    overlayStyle?: React.CSSProperties
    prefixCls?: string
    transitionName?: string
    onVisibleChange?: (visible?: boolean) => void
    visible?: boolean
    defaultVisible?: boolean
    placement?: Placement | Object
    align?: Object
    onPopupAlign?: (popupDomNode: Element, align: Object) => void
    overlay: React.ReactNode
    arrowContent?: React.ReactNode
    getTooltipContainer?: () => Element
    destroyTooltipOnHide?: boolean
  }> {}
}
