import { EventDispatcher } from "../utils"; import type { ProjectReflection } from "../models"; import { SerializeEvent } from "./events"; import type { ModelToObject } from "./schema"; import type { SerializerComponent } from "./components"; export interface SerializerEvents { begin: [SerializeEvent]; end: [SerializeEvent]; } export declare class Serializer extends EventDispatcher { /** * Triggered when the {@link Serializer} begins transforming a project. * @event */ static readonly EVENT_BEGIN = "begin"; /** * Triggered when the {@link Serializer} has finished transforming a project. * @event */ static readonly EVENT_END = "end"; private serializers; /** * Only set when serializing. */ projectRoot: string; /** * Only set when serializing */ project: ProjectReflection; 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; }