import { EventDispatcher } from "../utils"; import type { ProjectReflection } from "../models"; import type { ModelToObject } from "./schema"; import type { SerializerComponent } from "./components"; export declare class Serializer extends EventDispatcher { /** * Triggered when the {@link Serializer} begins transforming a project. * @event EVENT_BEGIN */ static EVENT_BEGIN: string; /** * Triggered when the {@link Serializer} has finished transforming a project. * @event EVENT_END */ static EVENT_END: string; private serializers; /** * Only set when serializing. */ projectRoot: string; addSerializer(serializer: SerializerComponent): void; toObject; }>(value: T): ModelToObject; toObject; }>(value: T | undefined): ModelToObject | undefined; toObjectsOptional; }>(value: T[] | undefined): ModelToObject[] | undefined; /** * Same as toObject but emits {@link Serializer.EVENT_BEGIN} and {@link Serializer.EVENT_END} events. * @param value */ projectToObject(value: ProjectReflection, projectRoot: string): ModelToObject; }