import Stylis from '@emotion/stylis' import type {Plugable} from '@emotion/stylis' export declare type Falsy = false | 0 | null | undefined export declare const hash: (string: string) => string export declare const createDash: < Vars extends DefaultVars = DefaultVars, ThemeNames extends string = never >( options?: DashOptions ) => DashCache export interface DashOptions< Vars extends DefaultVars = DefaultVars, ThemeNames extends string = Extract > { readonly key?: string readonly nonce?: string readonly hash?: typeof hash readonly stylisPlugins?: Plugable[] readonly prefix?: | boolean | ((key: string, value: any, context: any) => boolean) readonly container?: HTMLElement readonly speedy?: boolean readonly variables?: Vars readonly themes?: Themes } export declare type InsertCache = { [name: string]: number } export declare type VariableDefs = | { [name: string]: VariableDefs | string | number } | { [name: number]: VariableDefs | string | number } export interface Variables { [name: string]: VariableDefs | string | number } export declare type GlobalCache = { [name: string]: { count: number sheet: DashStyleSheet } } export declare type StylisCache = { [name: string]: string } export declare type Themes< Vars extends DefaultVars = DefaultVars, ThemeNames extends string = Extract > = { [Name in ThemeNames]: Vars } export declare type DashCache< Vars extends DefaultVars = DefaultVars, ThemeNames extends string = Extract > = { readonly key: string readonly sheet: DashStyleSheet readonly hash: (string: string) => string readonly stylis: typeof Stylis readonly stylisCache: StylisCache readonly insert: ( selector: string, name: string, styles: string, sheet: DashStyleSheet ) => void readonly insertCache: InsertCache variables: Vars readonly variablesCache: GlobalCache themes: Themes readonly globalCache: GlobalCache readonly clear: () => void } export interface DashStyleSheet { readonly key: string readonly nonce?: string readonly container?: HTMLElement readonly speedy: boolean readonly insert: (rule: string) => void readonly flush: () => void } export interface DashStyleSheetOptions { readonly key: string readonly container?: HTMLElement readonly nonce?: string readonly speedy: boolean } export declare const styleSheet: ( options: DashStyleSheetOptions ) => DashStyleSheet export declare type StyleObject = { [property: string]: StyleObject | string | number } export declare type SerializedVariables< Vars extends DefaultVars = DefaultVars > = { readonly variables: Vars readonly styles: string } export declare type StyleGetter = ( variables: Vars ) => StyleObject | string export declare const normalizeStyles: ( styles: string | StyleObject | StyleGetter, variables: any ) => string export interface CSSFunction { (...names: (Names | StyleObjectArgument | Falsy)[]): string } export interface EjectGlobal { (): void } export declare type StyleDefs< Names extends string, Vars extends DefaultVars = DefaultVars > = { [Name in Names | 'default']?: string | StyleGetter | StyleObject } export interface DefaultVars {} export interface DefaultThemes {} export interface Styles< Vars extends DefaultVars = DefaultVars, ThemeNames extends string = Extract > { (defs: StyleDefs): Style create: < T extends DefaultVars = Vars, U extends string = Extract >( options?: DashOptions ) => Styles one: ( literals: TemplateStringsArray | string | StyleObject | StyleGetter, ...placeholders: string[] ) => OneCallback variables: (vars: Vars, selector?: string) => EjectGlobal themes: (themes: Themes) => EjectGlobal theme: (name: ThemeNames) => string global: ( literals: TemplateStringsArray | string | StyleGetter | StyleObject, ...placeholders: string[] ) => EjectGlobal dash: DashCache } export declare type StyleObjectArgument = { [Name in Names]?: boolean | null | undefined | string | number } export interface Style< Names extends string = string, Vars extends DefaultVars = DefaultVars > { (...args: (Names | StyleObjectArgument | Falsy)[]): string css: CSSFunction styles: StyleDefs } export interface OneCallbackCss { (): string toString: () => string } export declare type OneCallback = { (createClassName?: boolean | number | string | null): string toString: () => string css: OneCallbackCss } export declare const styles: Styles< DefaultVars, Extract > export default styles