import type { Binding, NodePath } from "@babel/traverse";
import * as t from "@babel/types";
import type { WidgetNode, HTMLElementNode, Properties, RepeaterNode } from "@superblocksteam/library-shared";
import type { SbElement } from "@superblocksteam/library-shared/types";
type NodeWithChildren = WidgetNode | HTMLElementNode | RepeaterNode;
export type Context = {
    conditional?: boolean;
    bindings: {
        binding: Binding;
        sbElementId: SbElement;
    }[];
    jsxVariables: {
        binding: Binding;
        jsxElement: NodePath<t.JSXElement>;
    }[];
    libraryComponents: string[];
};
export declare function makeJSXAttribute(key: string, value: string): t.JSXAttribute;
export declare function getProperties(element: NodePath<t.JSXElement>, context: Context): Properties;
export declare function processJSXElement(nodePath: NodePath<t.JSXElement>, parent: undefined | NodeWithChildren, context: Context, isChild?: boolean): WidgetNode | HTMLElementNode | undefined;
export declare function buildNodes(node: NodePath<t.JSXElement | t.JSXExpressionContainer | t.JSXText | t.JSXSpreadChild | t.JSXFragment>, parent: NodeWithChildren, context: Context): void;
export declare function isNamedComponent(element: t.JSXOpeningElement): boolean;
export declare function getDescriptiveName(element: t.JSXElement): string | null;
export declare function getScopeFunctionName(path: NodePath<t.JSXElement>): string | null;
export declare function getJSXAttributeType(attr: t.JSXAttribute | t.JSXSpreadAttribute): string;
export {};
//# sourceMappingURL=jsx.d.ts.map