import { ComponentDefinition, DeviceType, InstancePropsOnlyVariantValues, InteractionType, LayoutData, Override, VariantPropDefinition, VariantPropDefinitionValue } from "../../data/types";
import { CodeGenNode } from "../types";
export interface PropDefinitionValuePair {
    propDefinition: VariantPropDefinition;
    value: VariantPropDefinitionValue;
}
export declare abstract class AbstractComponentCodeGenVisitor {
    abstract visitNode(data: {
        node: CodeGenNode;
        isRoot: boolean;
        override?: {
            data: Override;
            interactionType: InteractionType;
            deviceType: DeviceType;
            instanceProps: InstancePropsOnlyVariantValues;
            propDefinitionValuePairs: PropDefinitionValuePair[];
        };
        parentDirection: LayoutData["direction"] | null;
    }): void;
    abstract onStart?(): void;
    abstract onEnd(): void;
}
export declare function traverseComponentCodeGen(definition: ComponentDefinition, rootNode: CodeGenNode, visitor: AbstractComponentCodeGenVisitor): void;
//# sourceMappingURL=traverse-component-code-gen.d.ts.map