import { AnyRelease, ComponentDefinition, ComponentDefinitionMap, EnumPropDefinition, IconAsset, ImageAsset, NodeType, PropDefinition, ValueOrPropDefinitionInstance, VariantPropDefinition, VariantPropDefinitionValue } from "../data/types";
import { CodeGenClassNameObject, CodeGenClassNameSCSSImport, CodeGenClassNameString, CodeGenComponentData, CodeGenComponentImport, CodeGenContextData, CodeGenCoreImport, CodeGenData, CodeGenExternalImport, CodeGenFile, CodeGenImport, CodeGenNode, CodeGenPropLine } from "./types";
/**
 * Constants
 */
export declare const REACT_EXTERNAL_IMPORT: CodeGenExternalImport;
export declare const CLASSNAMES_EXTERNAL_IMPORT: CodeGenExternalImport;
export declare const SUBFRAME_CORE_IMPORT_NAME_MAPPING: {
    readonly Icon: "Icon";
    readonly IconName: "IconName";
    readonly Loader: "Loader";
    readonly Popover: "Popover";
    readonly HoverCard: "HoverCard";
    readonly Tooltip: "Tooltip";
    readonly DropdownMenu: "DropdownMenu";
    readonly AreaChart: "AreaChart";
    readonly BarChart: "BarChart";
    readonly LineChart: "LineChart";
    readonly PieChart: "PieChart";
};
export declare const SUBFRAME_CORE_IMPORT: CodeGenCoreImport;
export declare const SUBFRAME_TYPESCRIPT_HELPERS_IMPORT_NAME = "TypescriptHelpers";
export declare const CSS_VARIABLES_EXPORT_FILENAME = "variables.css";
export declare const BARREL_EXPORT_FILENAME = "index.ts";
export declare const TAILWIND_CONFIG_EXPORT_FILENAME = "tailwind.config.js";
export declare const DESTRUCTURE_OTHER_PROPS_NAME = "...otherProps";
/**
 * CodeGenData
 */
export declare function makeCodeGenData(definitions: ComponentDefinition[], context: CodeGenContextData): CodeGenData;
export declare function generateCodeGenNode(context: CodeGenContextData, definition: ComponentDefinition, nodeId: string, componentDefinitions: ComponentDefinitionMap): CodeGenNode;
export declare function makeCodeGenNonRootNode(context: CodeGenContextData, node: NodeType, componentDefinitions: ComponentDefinitionMap, children: CodeGenNode[], popoverContent: CodeGenNode | null): CodeGenNode;
export declare function makeCodeGenContextFromRelease(release: AnyRelease): CodeGenContextData;
/**
 * Prop helpers
 */
export type DefaultPropValuesMap = {
    [key: string]: string | null;
};
export declare function generateDefaultPropValuesMap(propLines: CodeGenPropLine[], definitionType: ComponentDefinition["type"]): DefaultPropValuesMap;
/**
 * Name helpers
 */
export declare function getComponentDefinitionName(name: string): string;
export declare function getComponentDefinitionFileName(name: string): string;
export declare function getNameForSubframeCoreJSXTag(name: string, property?: string): string;
/**
 * Values
 */
export declare function getPropTypeForPropDefinition(propDefinition: PropDefinition): string;
export declare function getDefaultValueForPropDefinition(propDefinition: PropDefinition, { iconAssets, imageAssets }: {
    iconAssets: IconAsset[];
    imageAssets: ImageAsset[];
}): string | null;
export declare function getValueForValueOrInstance(propDefinitions: PropDefinition[], imageAssets: ImageAsset[], iconAssets: IconAsset[], valueOrInstance: ValueOrPropDefinitionInstance, { propDefinition, useQuotes, isChildren, useBrackets, }?: {
    propDefinition?: EnumPropDefinition;
    useQuotes?: boolean;
    isChildren?: boolean;
    useBrackets?: boolean;
}): string;
/**
 * Styles
 */
export type DataAttribute = {
    type: "data" | "aria";
    name: string;
    value: string | null;
} | {
    type: "attribute";
    name: string;
} | {
    type: "inputType";
    name: string;
};
export declare function getDataAttributeForVariantPropDefinitionAndValue(propDefinition: VariantPropDefinition, value: VariantPropDefinitionValue): DataAttribute | null;
export declare function getCSSSelectorForVariantPropDefinitionAndValue(propDefinition: VariantPropDefinition, value: VariantPropDefinitionValue): string;
export declare function getClassNamesFromPropDefinitions(propDefinitions: PropDefinition[], getClassName: (propDefinition: VariantPropDefinition, value: VariantPropDefinitionValue) => CodeGenClassNameSCSSImport | CodeGenClassNameString | null): CodeGenClassNameObject[];
export declare function getConditionFromValue(propDefinition: VariantPropDefinition, value: VariantPropDefinitionValue): string;
export interface CodeGenChildStringResult {
    type: "string";
    data: string;
}
export interface CodeGenChildSlotResult {
    type: "slot";
    slotPropDefinitionId: string;
    data: string;
}
export type CodeGenChildResult = CodeGenChildStringResult | CodeGenChildSlotResult;
export declare function generateJSX(context: CodeGenContextData, componentData: CodeGenComponentData, options?: GenerateJSXOptions): string;
interface GenerateJSXOptions {
    includeDefaultProps?: boolean;
    parentDefinition?: ComponentDefinition;
    useTwClassNames?: boolean;
    definitionType?: ComponentDefinition["type"];
    isCodeGeneratedForAI?: boolean;
}
export declare function generateJSXFromNodeRecursively(context: CodeGenContextData, rootNode: CodeGenNode, propDefinitions: PropDefinition[], isRootNodeOfDefinition?: boolean, options?: GenerateJSXOptions): CodeGenChildResult;
export declare function generateJSXFromNode(context: CodeGenContextData, node: CodeGenNode, shouldAddRefAndPropsDestructureToNode: boolean, childResults: CodeGenChildResult[], propDefinitions: PropDefinition[], popoverContent?: CodeGenChildResult, options?: GenerateJSXOptions): CodeGenChildResult;
/**
 * Imports
 */
export declare function makeCodeGenImport(definition: ComponentDefinition): CodeGenComponentImport;
export declare function getFolderNameForCategory(componentType: CodeGenComponentImport["category"]): string;
export declare function generateImportCode(thisCategory: CodeGenComponentImport["category"], codeGenImport: CodeGenImport, importAlias: string, isUsageDocumentation: boolean): string;
/**
 * File Generation
 */
interface PrettierOptions {
    jsxSingleQuote?: boolean;
    useSemiColons?: boolean;
}
export declare function prettierCode(code: string, fileType: CodeGenFile["fileType"], options: PrettierOptions): string;
export declare function prettierFormatFile(file: CodeGenFile, options?: PrettierOptions): CodeGenFile;
export declare function generateTailwindConfigFile(context: CodeGenContextData): CodeGenFile;
export declare function generateCSSVariablesFile(context: CodeGenContextData): CodeGenFile;
export declare function getFullFileName(file: CodeGenFile): string;
export {};
//# sourceMappingURL=code-gen-helpers.d.ts.map