type Override<T, U> = Omit<U, keyof T> & T

interface ThemeProviderProps {
  /**
   * React node or node tree to apply theme to.
   */
  children: React.ReactNode
  /**
   * Asphalt Theme object.
   */
  theme?: object
  /**
   * Html element/React component to render as container.
   */
  as?: React.ElementType
}

declare function ThemeProvider(
  props: Override<ThemeProviderProps, React.HTMLAttributes<HTMLElement>>
): JSX.Element

export { ThemeProvider, type ThemeProviderProps };
