// Definitions by: Junyoung Clare Jang // TypeScript Version: 3.1 import * as React from 'react' import { Theme } from '@emotion/react' import { DistributiveOmit, PropsOf } from './helper' export interface ThemeProviderProps { theme: Partial | ((outerTheme: Theme) => Theme) children: React.ReactNode } export interface ThemeProvider { (props: ThemeProviderProps): React.ReactElement } export type withTheme = < C extends React.ComponentType> >( component: C ) => React.FC, 'theme'> & { theme?: Theme }> export function useTheme(): Theme export const ThemeProvider: ThemeProvider export const withTheme: withTheme export type WithTheme = P extends { theme: infer Theme } ? P & { theme: Exclude } : P & { theme: T }