import { ASTBase, ASTChunk } from 'miniscript-core'; import { DependencyLike } from '../types/dependency'; import type { TransformerDataObject, TransformerLike } from '../types/transformer'; import { Stack } from '../utils/stack'; export interface DefaultFactoryOptions { isDevMode?: boolean; } export type FactoryMake = (item: ASTBase, data?: TransformerDataObject) => string[]; export interface Line { segments: string[]; } export declare abstract class Factory { readonly transformer: TransformerLike; protected _lines: Line[]; protected _activeLine: Line; protected _originDependency: DependencyLike | null; protected _activeDependency: DependencyLike | null; protected _currentStack: Stack; get activeLine(): Line; get lines(): Line[]; get currentStack(): Stack; get originDependency(): DependencyLike; get activeDependency(): DependencyLike | null; set activeDependency(dependency: DependencyLike | null); abstract handlers: Record, item: ASTBase, data: TransformerDataObject) => void>; constructor(transformer: TransformerLike); pushSegment(segment: string): void; appendTrailingComment(_text: string): void; appendTrailingCommentToLine(_lineIndex: number, _text: string): void; createLine(): Line; eol(): void; reset(): void; process(item: ASTBase, data?: TransformerDataObject): void; abstract transform(item: ASTChunk, dependency: DependencyLike): string; abstract generateOptimizations(): string[]; } export type FactoryConstructor = new (transformer: TransformerLike) => Factory; export type FactoryGetter = (type: number) => FactoryConstructor;