//! @tenoxui/core v3.2.0 | MIT (c) 2025 TenoxUI
//#region src/types/index.d.ts
type CSSProperty = Extract<keyof CSSStyleDeclaration, string>;
type CSSVariable = `--${string}`;
type CSSPropertyOrVariable = CSSProperty | CSSVariable;
type RegexPatterns = Partial<Record<'variant' | 'utility' | 'value', string | (string | string[])[]>>;
type BaseProcessResult<TClassName = string> = {
  className: TClassName;
};
type DefaultProcessUtilityResult = {
  variant: string | null;
  utility: CSSPropertyOrVariable | string;
  value: string | null;
  match: (undefined | string)[];
};
type ProcessResult<TClassName = string, Data = Partial<DefaultProcessUtilityResult>> = BaseProcessResult<TClassName> & Data;
type ParseContext = {
  patterns: RegexPatterns;
  regexp: RegExp;
};
type ProcessUtilityContext = Partial<{
  className: string;
  utility: string;
  variant: string | null;
  value: string | null;
  match: (string | undefined)[];
}>;
type InitContext<TUtilities extends {
  [type: string]: any;
} = Utilities, TVariants extends {
  [variant: string]: any;
} = Variants> = {
  getUtilities: () => TUtilities;
  getVariants: () => TVariants;
  process: {
    value: (value: string) => string | null;
    variant: (variant: string) => string | null;
    utility: (ctx: any) => unknown;
    className: (cn: string) => unknown | null;
    classNames: (cns: string | string[]) => unknown | null;
  };
  parser: (className: string) => unknown;
  regexp: () => {
    patterns?: RegexPatterns;
    regexp?: RegExp;
  } | null;
  addUtility: <K extends keyof TUtilities>(name: K, value: TUtilities[K]) => void;
  addVariant: <K extends keyof TVariants>(name: K, value: TVariants[K]) => void;
  addUtilities: (variants: Partial<TUtilities>) => void;
  addVariants: (variants: Partial<TVariants>) => void;
  invalidateCache: () => void;
};
interface Plugin<TProcessResult = BaseProcessResult, TProcessUtilityResult = BaseProcessResult, TUtilities extends {
  [type: string]: any;
} = Utilities, TVariants extends {
  [type: string]: any;
} = Variants> {
  name: string;
  priority?: number;
  init?: (context: InitContext<TUtilities, TVariants>) => void;
  parse?: (className: string, context: ParseContext) => unknown | null;
  regexp?: (context: Partial<ParseContext>) => {
    patterns?: RegexPatterns;
    regexp?: RegExp;
  } | null;
  beforeUtility?: (context: ProcessUtilityContext) => any;
  utility?: (context: any) => any;
  afterUtility?: (context: any) => TProcessUtilityResult | null | undefined;
  value?: (value: string) => string | null;
  variant?: (variant: string) => string | null;
  process?: (className: string) => TProcessResult | null | undefined | void;
  done?: (results: any) => unknown;
}
type Utilities<T = any> = Record<string, T>;
type Variants<T = any> = Record<string, T>;
interface Config<TUtilities extends {
  [type: string]: any;
} = Utilities, TVariants extends {
  [type: string]: any;
} = Variants, TProcessResult = BaseProcessResult, TProcessUtilityResult = BaseProcessResult> {
  utilities?: TUtilities;
  variants?: TVariants;
  plugins?: Plugin<TProcessResult, TProcessUtilityResult, TUtilities, TVariants>[];
  cacheSize?: number;
}
type PluginFactory<TProcessResult = BaseProcessResult, TUtilityResult = BaseProcessResult, TUtilities extends {
  [type: string]: any;
} = Utilities, TVariants extends {
  [type: string]: any;
} = Variants> = () => Plugin<TProcessResult, TUtilityResult, TUtilities, TVariants>[];
type PluginLike<TProcessResult = BaseProcessResult, TUtilityResult = BaseProcessResult, TUtilities extends {
  [type: string]: any;
} = Utilities, TVariants extends {
  [type: string]: any;
} = Variants> = Plugin<TProcessResult, TUtilityResult, TUtilities, TVariants> | PluginFactory<TProcessResult, TUtilityResult, TUtilities, TVariants>;
//#endregion
//#region src/index.d.ts
declare class TenoxUI<TUtilities extends {
  [type: string]: any;
} = Utilities<CSSPropertyOrVariable>, TVariants extends {
  [variant: string]: any;
} = Variants, TProcessResult extends BaseProcessResult<any> = BaseProcessResult<string>, TProcessUtilitiesResult extends BaseProcessResult<any> = BaseProcessResult<string>> {
  private utilities;
  private variants;
  private plugins;
  matcher: ParseContext | null;
  private _matcherCache;
  private _parseCache;
  private _valueCache;
  private _variantCache;
  private _utilityCache;
  private _cnCache;
  private _hooks;
  constructor({
    variants,
    utilities,
    plugins,
    cacheSize
  }?: Config<TUtilities, TVariants, TProcessResult, TProcessUtilitiesResult>);
  private sanitizePlugin;
  use(...plugin: (Plugin | PluginFactory | PluginLike)[]): this;
  private processPlugin;
  private _initializePlugins;
  private _initializeMatcher;
  addUtility<K extends keyof TUtilities>(name: K, value: TUtilities[K]): this;
  addVariant<K extends keyof TVariants>(name: K, value: TVariants[K]): this;
  addUtilities(utilities: Partial<TUtilities>): this;
  addVariants(variants: Partial<TVariants>): this;
  removeUtility(name: string): this;
  removeVariant(name: string): this;
  invalidateCache(): void;
  clearCache(): void;
  getCacheStats(): {
    parse: number;
    processValue: number;
    processVariant: number;
    processUtility: number;
    processClassName: number;
  };
  regexp(): ParseContext;
  parse(className: string): (undefined | string)[] | any | null;
  processAny(member: 'value' | 'variant', value: string): string | null;
  processValue: (value: string) => string | null;
  processVariant: (variant: string) => string | null;
  processUtility<T = BaseProcessResult>({
    variant,
    utility,
    value,
    className
  }?: {
    variant?: string | null;
    utility?: string;
    value?: string;
    className?: string;
  }): T | (BaseProcessResult & DefaultProcessUtilityResult) | unknown;
  processClassName<T>(className: string): T | null;
  process<T = unknown>(classNames: string | string[]): T[] | T | null;
}
//#endregion
export { BaseProcessResult, CSSProperty, CSSPropertyOrVariable, CSSVariable, Config, DefaultProcessUtilityResult, InitContext, ParseContext, Plugin, PluginFactory, PluginLike, ProcessResult, ProcessUtilityContext, RegexPatterns, TenoxUI, TenoxUI as default, Utilities, Variants };
//# sourceMappingURL=index.d.cts.map