/**
 * Babel plugin for zero-runtime tasty static site generation.
 *
 * Transforms:
 * - `tastyStatic(styles)` → StaticStyle object { className, styles, toString() }
 * - `tastyStatic(base, styles)` → StaticStyle object with merged styles
 * - `tastyStatic(selector, styles)` → removed entirely
 *
 * Usage:
 * ```javascript
 * // babel.config.js
 * module.exports = {
 *   plugins: [
 *     ['@cube-dev/ui-kit/tasty/zero/babel', { output: 'public/tasty.css' }]
 *   ]
 * };
 * ```
 */
import type { PluginPass } from '@babel/core';
import type { KeyframesSteps } from '../injector/types';
import type { StyleDetails, UnitHandler } from '../parser/types';
/**
 * Build-time configuration for zero-runtime mode.
 * Subset of TastyConfig that applies at build time.
 */
export interface TastyZeroConfig {
    /**
     * Global predefined states for advanced state mapping.
     * Example: { '@mobile': '@media(w < 768px)', '@dark': '@root(theme=dark)' }
     */
    states?: Record<string, string>;
    /**
     * Enable development mode features: source comments in generated CSS.
     * Default: false
     */
    devMode?: boolean;
    /**
     * Custom units for the style parser (merged with built-in units).
     * Units transform numeric values like `2x` → `calc(2 * var(--gap))`.
     * @example { em: 'em', vw: 'vw', custom: (n) => `${n * 10}px` }
     */
    units?: Record<string, string | UnitHandler>;
    /**
     * Custom functions for the style parser (merged with existing).
     * Functions process parsed style groups and return CSS values.
     * @example { myFunc: (groups) => groups.map(g => g.output).join(' ') }
     */
    funcs?: Record<string, (groups: StyleDetails[]) => string>;
    /**
     * Global keyframes definitions for static extraction.
     * Keys are animation names, values are keyframes step definitions.
     * @example { fadeIn: { from: { opacity: 0 }, to: { opacity: 1 } } }
     */
    keyframes?: Record<string, KeyframesSteps>;
    /**
     * Predefined tokens that are replaced during style parsing.
     * Use `$name` for custom properties and `#name` for color tokens.
     * @example { $spacing: '2x', '#accent': '#purple' }
     */
    tokens?: {
        [key: `$${string}` | `#${string}`]: string | number;
    };
}
export interface TastyZeroBabelOptions {
    /** Output path for generated CSS (default: 'tasty.css') */
    output?: string;
    /** Tasty configuration for build-time processing */
    config?: TastyZeroConfig;
}
declare const _default: (api: object, options: TastyZeroBabelOptions | null | undefined, dirname: string) => import("@babel/core").PluginObj<PluginPass>;
export default _default;
