import { EventDispatcher } from "../utils/index.js"; import type { ProjectReflection } from "../models/index.js"; import { SerializeEvent } from "./events.js"; import type { ModelToObject } from "./schema.js"; import type { SerializerComponent } from "./components.js"; export interface SerializerEvents { begin: [SerializeEvent]; end: [SerializeEvent]; } /** * Serializes TypeDoc's models to JSON * * @group Common * @summary Serializes TypeDoc's models to JSON */ 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; removeSerializer(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; }