
import { EmitMode } from "../packages/automated-config/dist/utils/index.js";
import { TailwindSafelistConfig } from "./generate.helpers.js";
import { UDSCSSOptimizationOptions } from "./theme.js";

//#region ../css/dist/css/generate.d.mts
/**
 * CSS generation options for uds.theme.ts
 */
interface UDSCSSOptions {
  /** CSS scope wrapper class (optional) */
  scope?: string;
  /** Safelist of CSS classes to always include */
  safelist?: TailwindSafelistConfig[];
  /** CSS optimization settings */
  optimization?: UDSCSSOptimizationOptions;
  /** Include Tailwind preflight/reset styles (default: true) */
  preflight?: boolean;
  /** Include @font-face declarations (default: true) */
  fontFaceDeclarations?: boolean;
  /** Debounce delay (ms) for watch mode regenerations */
  watchDebounce?: number;
  /**
   * Emission mode. `exhaustive` (default) emits a rule for every state — safe to
   * coexist with other themes with no extra config. `selective` emits only
   * rest + customized states (smaller) and relies on declared boundaries
   * (`scoped` / `excludeBoundaries`) + the isolation fence for coexistence safety.
   */
  emit?: EmitMode;
  /**
   * Additional selectors whose subtrees this theme's bundles must not match.
   * Every emitted bundle (main and each `scoped:` entry) gets a
   * `:not(:where(:is(<boundaries>) *))` suffix on each theme-driven
   * (token-referencing) rule that targets a NON-REST state (`:hover`,
   * `:focus-within`, `:has(…)`, etc.), so its themed state styles never cross
   * into one of these subtrees. Rest-state token rules resolve their tokens to
   * the nested scope's own values (value-safe), so they're left untouched — as
   * are Tailwind utilities, resets, and other non-token rules. Entries listed
   * here are exclusion-only — they do not produce their own CSS file.
   *
   * Scope classes from `scoped:` entries are already added automatically;
   * this field is the place to declare *non-bundled* boundaries (preview
   * surfaces, opt-out subtrees, etc.) on top of those.
   *
   * Accepts any complete selector (`.class`, `#id`, `[attr]`, `:pseudo`).
   * Bare identifiers are normalized to classes for backward compat with
   * the automatic `scoped:`-derived boundary classes.
   */
  excludeBoundaries?: string[];
}
/**
 * Options for generateCSS function
 */
//#endregion
export { type UDSCSSOptions };