import {ComponentType, ReactNode, Context, RefObject} from 'react' import { CreateGenerateId, GenerateId, Jss, SheetsRegistry, Styles, StyleSheetFactoryOptions, CreateGenerateIdOptions, Classes } from 'jss' import {createTheming, useTheme, withTheme, ThemeProvider, Theming} from 'theming' declare const jss: Jss declare const createGenerateId: CreateGenerateId declare const JssProvider: ComponentType<{ jss?: Jss registry?: SheetsRegistry generateId?: GenerateId classNamePrefix?: string disableStylesGeneration?: boolean children: ReactNode id?: CreateGenerateIdOptions isSSR?: boolean }> interface Managers { [key: number]: StyleSheet } declare const JssContext: Context<{ jss?: Jss registry?: SheetsRegistry managers?: Managers sheetOptions: StyleSheetFactoryOptions disableStylesGeneration: boolean isSSR: boolean }> type ClassesForStyles< S extends Styles | ((theme: any) => Styles) > = Classes Styles ? keyof ReturnType : keyof S> interface WithStylesProps< S extends Styles | ((theme: any) => Styles) > { classes: ClassesForStyles } /** * @deprecated Please use `WithStylesProps` instead */ type WithStyles | ((theme: any) => Styles)> = WithStylesProps declare global { namespace Jss { /** You can use the global `Jss.Theme` interface to define a project-wide default theme. */ export interface Theme {} } } export type DefaultTheme = Jss.Theme interface BaseOptions extends StyleSheetFactoryOptions { index?: number theming?: Theming } interface WithStylesOptions extends BaseOptions { injectTheme?: boolean jss?: Jss } interface CreateUseStylesOptions extends BaseOptions { name?: string } declare function createUseStyles( styles: Styles | ((theme: Theme) => Styles), options?: CreateUseStylesOptions ): (data?: Props & {theme?: Theme}) => Classes type GetProps = C extends ComponentType ? P : never declare function withStyles( styles: | Styles | ((theme: Theme) => Styles), options?: WithStylesOptions ): (comp: C) => ComponentType< JSX.LibraryManagedAttributes< C, Omit, 'classes'> & { classes?: Partial> innerRef?: RefObject | ((instance: any) => void) } > > export { SheetsRegistry, jss, createGenerateId, JssProvider, WithStylesProps, ThemeProvider, withTheme, createTheming, Theming, useTheme, JssContext, createUseStyles, Styles } export default withStyles