
import { ArbitraryFixtures, InferArbitraryType } from "../../../fixtures/dist/index.js";
import { ComponentConfig, ComponentStateConfig, LayerConfig, PossibleStates, PossibleStatesWithRest, SubComponentConfig, VariantConfig, VariantConfigWithComponentStates, VariantConfigWithProperties } from "../types/ComponentConfig.js";
import { ConfigurablePropertiesName, SelectedConfigurableProperty, configurableProperties } from "../properties.js";
import { ComponentSchema, buildConfigSchema, findFixtureType } from "./buildConfigSchema.js";
import { cartesianProduct } from "./cartesianProduct.js";
import { coalesceConfigVariant } from "./coalesceConfigVariant.js";
import { getConfigDefaultValue, isConfigDefaultValue } from "./defaults.js";
import { generateDefaultClassName } from "./generateDefaultClassName.js";
import { generateKeyFromFlatConfigPath } from "./generateKeyFromFlatConfigPath.js";
import { generateSchemaKey } from "./generateSchemaKey.js";
import { getConfigVariantComponentStates, getConfigVariantComponentStatesMatrix } from "./getConfigVariantComponentStatesMatrix.js";
import { getConfigVariantProperties } from "./getConfigVariantProperties.js";
import { getConfigVariantPseudoStates } from "./getConfigVariantPseudoStates.js";
import { getConfigVariants } from "./getConfigVariants.js";
import { getConfigSubcomponents } from "./subcomponents.js";

//#region ../automated-config/dist/utils/index.d.ts
//#region src/utils/index.d.ts
type ThemeFn = (path: string) => string;
declare const statePseudoMapDocsMode: Record<PossibleStatesWithRest, string>;
declare function generateClassName({
  componentName,
  subComponentName,
  variantKey,
  variantValue,
  componentStateKey,
  componentStateValue,
  layer,
  layerOptionalPseudoSelector
}: {
  componentName: string;
  subComponentName?: string;
  variantKey: string;
  variantValue?: string;
  componentStateKey?: string;
  componentStateValue?: string;
  layer: string;
  layerOptionalPseudoSelector?: string;
}): string;
declare function generateDeclaration({
  componentName,
  subComponentName,
  variantKey,
  variantValue,
  layer,
  layerOptionalPseudoSelector,
  componentStateKey,
  componentStateValue,
  schema,
  propertyKey,
  originalPropertyDefinition,
  theme,
  currentStyles,
  previewOptions
}: {
  componentName: string;
  subComponentName?: string;
  variantKey: string;
  variantValue: string;
  componentStateKey?: string;
  componentStateValue?: string;
  layer: string;
  layerOptionalPseudoSelector?: string;
  schema: unknown;
  propertyKey: string;
  originalPropertyDefinition: SelectedConfigurableProperty<ConfigurablePropertiesName, any>;
  theme: ThemeFn;
  currentStyles: Readonly<Record<string, Record<string, string>>>;
  previewOptions?: {
    generatePseudoStateClassModifier?: boolean;
  };
}): Record<string, Record<string, string>>;
declare function generateConfigStyles<C extends ComponentConfig>(config: C, schema: ComponentSchema<ComponentConfig>, theme: ThemeFn, previewOptions?: {
  generatePseudoStateClassModifier: boolean;
}): Record<string, Record<string, string>>;
/**
 * @param config - Component configuration (Button, IconButton, etc.)
 * @param schema - Production schema with defaults and variables
 * @param theme - Tailwind theme function to resolve design tokens
 * @param previewOptions - Options for generating preview mode class modifiers
 * @returns CSS styles object with grouped selectors for default aliases
 */
declare const generateStyles: (config: ComponentConfig, schema: ComponentSchema<ComponentConfig>, theme: ThemeFn, previewOptions: {
  generatePseudoStateClassModifier: boolean;
}) => Record<string, Record<string, string>>;
declare function createConfigurableProperty<C extends ConfigurablePropertiesName, O extends string, T extends (typeof configurableProperties)[C]['possibleFixtures'], V extends readonly (readonly unknown[])[] = readonly (readonly unknown[])[]>(prop: {
  name: C;
  typeOfFixture: T;
  values: V;
  defaults: { [K in O]: V[number][number] | (Extract<T[number], ArbitraryFixtures> extends never ? never : InferArbitraryType<Extract<T[number], ArbitraryFixtures>>) };
  label: string;
  skipRestState?: boolean;
  pseudoStates?: PossibleStates[];
  supportsCustom?: boolean;
  layerReference?: {
    variablePath: string;
    propertyName: string;
  };
}): SelectedConfigurableProperty<C, O, T, V>;
declare function createVariantConfig(config: {
  label: string;
  description: string;
  default: string;
  options: readonly string[];
}): VariantConfig;
declare function createVariantConfigWithProperties(config: {
  label: string;
  description: string;
  default: string;
  options: readonly string[];
  layers: {
    root: LayerConfig;
  } & Record<string, LayerConfig>;
}): VariantConfigWithProperties;
declare function createVariantConfigWithComponentStates(config: {
  label: string;
  description: string;
  default: string;
  options: readonly string[];
  componentStates: Record<string, ComponentStateConfig>;
}): VariantConfigWithComponentStates;
declare function createComponentStates(config: {
  label: string;
  options: string[];
  layers: {
    root: LayerConfig;
  } & Record<string, LayerConfig>;
}): ComponentStateConfig;
declare function createLayerConfig(config: {
  label: string;
  pseudoSelector?: string;
  properties: Readonly<Record<string, SelectedConfigurableProperty<ConfigurablePropertiesName, string>>>;
}): LayerConfig;
declare function createSubComponentConfig(config: {
  label: string;
  description: string;
  variants: Record<string, VariantConfigWithProperties | VariantConfigWithComponentStates>;
}): SubComponentConfig; //#endregion
//#endregion
export { createComponentStates, createConfigurableProperty, createLayerConfig, createSubComponentConfig, createVariantConfig, createVariantConfigWithComponentStates, createVariantConfigWithProperties, generateClassName, generateConfigStyles, generateDeclaration, generateStyles, statePseudoMapDocsMode };