import type { NodePath } from '@babel/traverse'; import * as t from '@babel/types'; import { type ProcessorContext } from './attribute-processor.js'; import { CompiledBuilder, TemplateBuilder } from './builder.js'; declare abstract class JSXTranspiler { protected abstract createContext(path: NodePath): TContext; start(path: NodePath): t.Expression; abstract process(context: TContext): void; abstract openingTag(context: TContext): void; abstract attributes(context: TContext): void; abstract children(context: TContext): void; abstract closingTag(context: TContext): void; abstract createExpression(context: TContext): t.Expression; abstract createFunctionalComponent(path: NodePath): t.Expression; abstract functionalComponent(context: TContext): void; } export interface TemplateContext extends ProcessorContext { builder: TemplateBuilder; literalName: string; } export declare class TemplateTranspiler extends JSXTranspiler { protected createContext(path: NodePath): TemplateContext; process(context: TemplateContext): void; openingTag(context: TemplateContext): void; attributes(context: TemplateContext): void; children(context: TemplateContext): void; closingTag(context: TemplateContext): void; createExpression(context: TemplateContext): t.Expression; createFunctionalComponent(path: NodePath): t.Expression; functionalComponent(context: TemplateContext): void; } export interface CompiledContext extends ProcessorContext { builder: CompiledBuilder; currentIndex: { value: number; }; } export declare class CompiledTranspiler extends JSXTranspiler { protected createContext(path: NodePath): CompiledContext; process(context: CompiledContext): void; openingTag(context: CompiledContext): void; attributes(context: CompiledContext): void; children(context: CompiledContext): void; closingTag(context: CompiledContext): void; createExpression(context: CompiledContext): t.Expression; createFunctionalComponent(path: NodePath): t.Expression; functionalComponent(context: CompiledContext): void; } export {}; //# sourceMappingURL=transpiler.d.ts.map