import { TypeName } from '../config/pattern.js';
import { AppliesOnDefaultFactory, AppliesOnFactory, AppliesOnNamedFactory, FlutterFreezedPluginConfig, ObjectType } from '../config/plugin-config.js';
import { NodeRepository } from './node-repository.js';
export declare class FactoryBlock {
    static build(config: FlutterFreezedPluginConfig, node: ObjectType, blockAppliesOn: readonly AppliesOnFactory[], className: TypeName, factoryName?: TypeName): string;
    static buildDecorators: (config: FlutterFreezedPluginConfig, blockAppliesOn: readonly AppliesOnFactory[], className: TypeName, factoryName?: TypeName) => string;
    static buildHeader: (config: FlutterFreezedPluginConfig, blockAppliesOn: readonly AppliesOnFactory[], className: TypeName, factoryName?: TypeName) => string;
    static buildBody: (config: FlutterFreezedPluginConfig, node: ObjectType, appliesOn: readonly AppliesOnFactory[]) => string;
    static buildFooter: (config: FlutterFreezedPluginConfig, blockAppliesOn: readonly AppliesOnFactory[], factoryName: TypeName) => string;
    static serializeDefaultFactory: (className: TypeName) => string;
    static serializeUnionFactory: (className: TypeName, factoryName: TypeName) => string;
    static serializeMergedFactory: (className: TypeName, factoryName: TypeName) => string;
    static deserializeFactory: (config: FlutterFreezedPluginConfig, nodeRepository: NodeRepository, blockAppliesOn: readonly AppliesOnDefaultFactory[], className: TypeName) => string;
    static deserializeNamedFactory: (config: FlutterFreezedPluginConfig, nodeRepository: NodeRepository, blockAppliesOn: readonly AppliesOnNamedFactory[], className: TypeName, factoryName: TypeName) => string;
    static buildFromFactory: (config: FlutterFreezedPluginConfig, node: ObjectType, blockAppliesOn: readonly AppliesOnDefaultFactory[], className: TypeName) => string;
    static buildFromNamedFactory: (config: FlutterFreezedPluginConfig, node: ObjectType, blockAppliesOn: readonly AppliesOnNamedFactory[], className: TypeName, factoryName: TypeName) => string;
}
