/**
 * SerializationEngine — host-driven dispatch for L9 entity serialization.
 *
 * Host-driven L9 dispatch (M13). All entity serializers come
 * from the plugin host's `BackendModule.serializer` slot; the only internal
 * registration is the `section` non-entity serializer, kept here because
 * section is not a plugin (M06 owns it).
 */
import type { Database } from 'better-sqlite3';
import type { RawEntity, RawEntityReader, RawSection } from '../../domain/raw-entity-reader.js';
import type { EntitySerializer, JsonSchema, SerializeResult, ViewKind } from '../../serialization/types.js';
export interface CatalogEntry {
    version: string;
    views: string[];
    schemas: Record<string, JsonSchema>;
}
export interface CatalogResult {
    types: Record<string, CatalogEntry>;
}
declare class SerializationEngineImpl {
    /** Section serializer is registered separately — section is not an entity. */
    private sectionSerializer;
    attachSectionSerializer(serializer: EntitySerializer<unknown>): void;
    has(type: string): boolean;
    get(type: string): EntitySerializer<unknown> | undefined;
    listTypes(): string[];
    getVersion(type: string): string | null;
    serializeEntity(type: string, view: ViewKind, entity: RawEntity, reader: RawEntityReader, depth?: number): SerializeResult;
    serializeSection(view: ViewKind, section: RawSection, reader: RawEntityReader): SerializeResult;
    private invoke;
    getSchema(type: string, view: ViewKind, db?: Database): JsonSchema;
    catalog(reader: RawEntityReader, db: Database): CatalogResult;
}
export declare const serializationEngine: SerializationEngineImpl;
export {};
