/**
 * Contains serializers for various data types as well as data upgraders which enable support for serialization format changes
 *
 * @author Alex Goldring
 * @copyright Company Named Limited (c) 2026
 */
export class BinarySerializationRegistry {
    /**
     * @readonly
     * @private
     * @type {Map<string, Graph<BinaryClassUpgrader>>}
     */
    private readonly upgraders;
    /**
     * @readonly
     * @private
     * @type {Map<string, BinaryClassSerializationAdapter>}
     */
    private readonly serializers;
    /**
     *
     * @param {BinaryClassSerializationAdapter[]} adapters
     */
    registerAdapters(adapters: BinaryClassSerializationAdapter[]): void;
    /**
     *
     * @param {BinaryClassSerializationAdapter} adapter
     * @param {string} [className] if not specified, will be taken from the {@link BinaryClassSerializationAdapter.klass.typeName}
     * @returns {boolean} true if added, false if adapter already existed
     * @throws {Error} if `className` could not be inferred
     */
    registerAdapter(adapter: BinaryClassSerializationAdapter, className?: string): boolean;
    /**
     *
     * @param {string} className
     * @returns {BinaryClassSerializationAdapter|undefined}
     */
    removeAdapter(className: string): BinaryClassSerializationAdapter | undefined;
    /**
     *
     * @param {string} className
     * @returns {BinaryClassSerializationAdapter|undefined}
     */
    getAdapter(className: string): BinaryClassSerializationAdapter | undefined;
    /**
     *
     * @param {string} className
     * @param {BinaryClassUpgrader} upgrader
     * @returns {boolean} true iff added, false if already exists
     */
    registerUpgrader(className: string, upgrader: BinaryClassUpgrader): boolean;
    /**
     *
     * @param {string} className
     * @param {number} startVersion
     * @param {number} goalVersion
     * @returns {BinaryClassUpgrader[]|null} sequential shortest chain of upgraders or null if no valid chain exists
     */
    getUpgradersChain(className: string, startVersion: number, goalVersion: number): BinaryClassUpgrader[] | null;
    /**
     * @readonly
     * @type {boolean}
     */
    readonly isBinarySerializationRegistry: boolean;
}
//# sourceMappingURL=BinarySerializationRegistry.d.ts.map