import { BorderToken, CodeGenCSSType, ColorPalette, ColorToken, ComponentDefinition, ComponentDefinitionCategory, ComponentDefinitionMap, CornerToken, FontAsset, FontToken, IconAsset, ImageAsset, NodeId, NodeType, ShadowToken, SpacingToken, ThemeStyleType } from "../data/types";
interface CodeGenImportBase {
    id: string;
    isDefaultImport?: boolean;
    importName: string | null;
    filePath: string;
    fileName: string;
}
export interface CodeGenComponentImport extends CodeGenImportBase {
    type: "generated-component";
    category: ComponentDefinitionCategory;
}
export interface CodeGenCoreImport extends Omit<CodeGenImportBase, "fileName" | "filePath"> {
    type: "subframe-core";
    importName: "SubframeCore";
}
export interface CodeGenExternalImport extends CodeGenImportBase {
    type: "external-library";
}
export interface CodeGenScssImport extends CodeGenImportBase {
    type: "generated-scss-file";
}
export type CodeGenImport = CodeGenComponentImport | CodeGenCoreImport | CodeGenExternalImport | CodeGenScssImport;
export interface CodeGenClassNameSCSSImport {
    type: "scss-import";
    useModules: boolean;
    value: string;
}
export interface CodeGenClassNameString {
    type: "string";
    value: string[];
}
export interface CodeGenClassNameObject {
    type: "object";
    value: CodeGenClassNameSCSSImport | CodeGenClassNameString;
    conditions: string[];
}
export interface CodeGenClassNameVariable {
    type: "variable";
    value: string;
}
export type CodeGenClassNameType = CodeGenClassNameVariable | CodeGenClassNameSCSSImport | CodeGenClassNameString | CodeGenClassNameObject;
export interface CodeGenJSXHTMLTag {
    type: "html";
    name: "div" | "span" | "img" | "input" | "textarea" | "button" | "label" | "nav" | "table" | "tbody" | "thead" | "tr" | "th" | "td";
}
export interface CodeGenJSXSubframeCoreTag {
    type: "subframe-base";
    name: string;
    property?: string;
    attributes?: {
        [key: string]: string;
    };
}
export interface CodeGenJSXComponentTag {
    type: "component";
    name: string;
    parent?: {
        name: string;
        definitionId: string;
    };
    attributes?: {
        [key: string]: string;
    };
}
export type CodeGenJSXTagType = CodeGenJSXHTMLTag | CodeGenJSXSubframeCoreTag | CodeGenJSXComponentTag;
export interface CodeGenJSXTagsInfo {
    base: CodeGenJSXTagType;
    wrappers?: CodeGenJSXTagType[];
}
export interface CodeGenNode {
    nodeId: NodeId;
    classNames: CodeGenClassNameType[];
    children: CodeGenNode[];
    popoverContent: CodeGenNode | null;
    jsxTagsInfo: CodeGenJSXTagsInfo | null;
    data: NodeType;
}
export interface CodeGenFile {
    fileType: "css" | "tsx" | "ts" | "js";
    fileName: string;
    contents: string;
    metadata: {
        definitionInfo?: {
            id: string;
            isPageComponent: boolean;
        };
    };
}
export interface CodeGenComponentData {
    definition: ComponentDefinition;
    rootNode: CodeGenNode;
    propLines: CodeGenPropLine[];
}
export interface CodeGenPropLine {
    name: string;
    isRequired: boolean;
    type: string;
    defaultValue: string | null;
    preventDestructure?: boolean;
}
export interface CodeGenContextData {
    fontAssets: FontAsset[];
    nonPaletteTokens: ColorToken[];
    colorTokens: ColorToken[];
    colorPalettes: ColorPalette[];
    fontTokens: FontToken[];
    borderTokens: BorderToken[];
    cornerTokens: CornerToken[];
    shadowTokens: ShadowToken[];
    spacingTokens: SpacingToken[];
    iconAssets: IconAsset[];
    imageAssets: ImageAsset[];
    componentDefinitions: ComponentDefinitionMap;
    themeStyle: ThemeStyleType;
}
export interface CodeGenComponentTuple {
    imports: {
        [id: string]: CodeGenImport;
    };
    rootData: CodeGenComponentData;
    compoundComponents: CodeGenComponentData[];
}
export interface CodeGenData {
    files: CodeGenFile[];
    componentTuples: CodeGenComponentTuple[];
    context: CodeGenContextData;
}
export interface CodeGenOptions {
    cssType: CodeGenCSSType;
    importAlias: string;
    generateDependencies?: boolean;
    disableDocumentationComments?: boolean;
    useTokenIds?: boolean;
    isCodeGeneratedForAI?: boolean;
}
export {};
//# sourceMappingURL=types.d.ts.map