/**
 * -------------------------------------------------------------------------------------------
 * Copyright (c) Microsoft Corporation.  All Rights Reserved.  Licensed under the MIT License.
 * See License in the project root for license information.
 * -------------------------------------------------------------------------------------------
 */
import type { Parsable } from "./parsable.js";
import type { SerializationWriter } from "./serializationWriter.js";
import type { SerializationWriterFactory } from "./serializationWriterFactory.js";
/** Proxy factory that allows the composition of before and after callbacks on existing factories. */
export declare abstract class SerializationWriterProxyFactory implements SerializationWriterFactory {
    private readonly _concrete;
    private readonly _onBefore?;
    private readonly _onAfter?;
    private readonly _onStart?;
    getValidContentType(): string;
    /**
     * Creates a new proxy factory that wraps the specified concrete factory while composing the before and after callbacks.
     * @param _concrete the concrete factory to wrap
     * @param _onBefore the callback to invoke before the serialization of any model object.
     * @param _onAfter the callback to invoke after the serialization of any model object.
     * @param _onStart the callback to invoke when the serialization of a model object starts
     */
    constructor(_concrete: SerializationWriterFactory, _onBefore?: ((value: Parsable) => void) | undefined, _onAfter?: ((value: Parsable) => void) | undefined, _onStart?: ((value: Parsable, writer: SerializationWriter) => void) | undefined);
    getSerializationWriter(contentType: string): SerializationWriter;
}
//# sourceMappingURL=serializationWriterProxyFactory.d.ts.map