
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, findFixtureTypeForValue } 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 { PaginationWidthConfig, getPaginationControlWidthPx, syncPaginationWidthVarForSize } from "./getPaginationControlWidthPx.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>;
/**
 * Forces button borders to use box-shadow instead of border properties.
 * Converts border-width and border-color into an inset box-shadow layer.
 *
 * Why box-shadow for borders?
 * - Respects border-radius (unlike outline which stays rectangular)
 * - Allows layering multiple shadows in a single property
 * - GPU-accelerated and performant
 * - Works perfectly with rounded/circular buttons
 *
 * @param classStyles - The CSS declarations for a button class
 * @returns Modified styles with box-shadow layers, or original if no border
 *
 * @example
 * Input:  { border-width: '2px', border-color: 'red', box-shadow: '0 2px 4px rgba(0,0,0,0.1)' }
 * Output: { box-shadow: 'inset 0 0 0 2px red, 0 2px 4px rgba(0,0,0,0.1)' }
 * Renders borders using inset box-shadows instead of CSS border widths.
 * This preserves visual borders without affecting layout dimensions.
 */
declare function applyBoxShadowBorder(classStyles: Record<string, string>): Record<string, 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,
  excludedPseudoStates
}: {
  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;
  };
  excludedPseudoStates?: readonly PossibleStates[];
}): 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>;
  variantProperties?: Readonly<Record<string, SelectedConfigurableProperty<ConfigurablePropertiesName, string>>>;
}): 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[];
  excludePseudoStatesForOptions?: Partial<Record<string, readonly PossibleStates[]>>;
  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 { applyBoxShadowBorder, createComponentStates, createConfigurableProperty, createLayerConfig, createSubComponentConfig, createVariantConfig, createVariantConfigWithComponentStates, createVariantConfigWithProperties, generateClassName, generateConfigStyles, generateDeclaration, generateStyles, statePseudoMapDocsMode };