import * as _pandacss_types from '@pandacss/types';
import { LoadConfigResult, ArtifactId, CssArtifactType, SpecFile, SpecType, SpecTypeMap } from '@pandacss/types';
import { Context, Stylesheet, StyleDecoder } from '@pandacss/core';

interface SplitCssArtifact {
    type: 'layer' | 'recipe' | 'theme';
    name: string;
    file: string;
    code: string;
    /** Directory relative to styles/ */
    dir?: string;
}
interface SplitCssResult {
    /** Layer CSS files (reset, global, tokens, utilities) */
    layers: SplitCssArtifact[];
    /** Recipe CSS files */
    recipes: SplitCssArtifact[];
    /** Theme CSS files (not auto-imported) */
    themes: SplitCssArtifact[];
    /** Content for recipes.css */
    recipesIndex: string;
    /** Content for main styles.css */
    index: string;
}
declare class Generator extends Context {
    constructor(conf: LoadConfigResult);
    getArtifacts: (ids?: ArtifactId[] | undefined) => _pandacss_types.Artifact[];
    appendCssOfType: (type: CssArtifactType, sheet: Stylesheet) => void;
    appendLayerParams: (sheet: Stylesheet) => void;
    appendBaselineCss: (sheet: Stylesheet) => void;
    appendParserCss: (sheet: Stylesheet) => void;
    getParserCss: (decoder: StyleDecoder) => string;
    getCss: (stylesheet?: Stylesheet) => string;
    /**
     * Get CSS for a specific layer from the stylesheet
     */
    getLayerCss: (sheet: Stylesheet, layer: "reset" | "base" | "tokens" | "recipes" | "utilities") => string;
    /**
     * Get CSS for a specific recipe
     */
    getRecipeCss: (recipeName: string) => string;
    /**
     * Get all recipe names from the decoder
     */
    getRecipeNames: () => string[];
    /**
     * Get all split CSS artifacts for the stylesheet
     * Used when --splitting flag is enabled
     */
    getSplitCssArtifacts: (sheet: Stylesheet) => SplitCssResult;
    getSpec: () => SpecFile[];
    getSpecOfType: <T extends SpecType>(type: T) => T extends "color-palette" | "themes" ? SpecTypeMap[T] | undefined : SpecTypeMap[T];
}

/**
 * Get CSS for a specific theme
 */
declare function getThemeCss(ctx: Context, themeName: string): string;

export { Generator, type SplitCssArtifact, type SplitCssResult, getThemeCss };
