import type { CSSObject, Css, Cx } from "./types"; import type { EmotionCache } from "@emotion/cache"; export declare type Tss, Params extends Record, RuleNameSubsetReferencableInNestedSelectors extends string, PluginParams extends Record, ExcludedMethod extends "withParams" | "withName" | "withNestedSelectors" = never> = Omit<{ create: (cssObjectByRuleNameOrGetCssObjectByRuleName: Tss.CssObjectByRuleNameOrGetCssObjectByRuleName) => Tss.UseStyles; withParams: >() => Tss; withName: (name: string | Record) => Tss; withNestedSelectors: () => Tss; }, ExcludedMethod>; declare type VoidAllowedIfCanBeEmpty> = Record extends T ? void | T : T; export declare namespace Tss { type UseStylesReturn, RuleName extends string> = ([RuleName] extends [never] ? {} : { classes: Record; }) & { css: Css; cx: Cx; } & Context; type UseStyles, Params extends Record, RuleName extends string, PluginParams extends Record> = (params: VoidAllowedIfCanBeEmpty; }>) => UseStylesReturn; type CssObjectByRuleNameOrGetCssObjectByRuleName, Params extends Record, RuleNameSubsetReferencableInNestedSelectors extends string, RuleName extends string> = ((params: Context & Params & ([RuleNameSubsetReferencableInNestedSelectors] extends [never] ? {} : { classes: Record; })) => Record) | Record; type UsePlugin, PluginParams extends Record> = (params: { classes: Record; cx: Cx; css: Css; name: string | undefined; idOfUseStyles: string; } & Context & PluginParams) => { classes?: Record; cx?: Cx; css?: Css; }; } export declare function createTss, PluginParams extends Record>(params: { useContext: () => Context; usePlugin?: Tss.UsePlugin; cache?: EmotionCache; }): { tss: Tss, never, PluginParams, never>; }; export {};