import { InputMessage } from "../io/InputMessage";
import { OutputMessage } from "../io/OutputMessage";
/**
 * The `IOMessageMapper` is an abstract class designed for serializing and deserializing I/O classes such as `InputMessage` and `OutputMessage`
 */
export declare abstract class IOMessageMapper {
    /**
     * Constants
     */
    private static readonly DOM_SPC_ELEMENT_IDENTIFIER_VALUE;
    private static readonly MAPPING_HELPER_REVIVER_MAP_DATATYPE_VALUE;
    private static readonly MAPPING_HELPER_REVIVER_OBJECT_DATATYPE_VALUE;
    /**
     * Constants, exception codes
     */
    static readonly EXCEPTION_ID_8500001000_MESSAGE_VALUE = "Exception during `InputMessage` serializing process (`IOMessageMapping`)";
    static readonly EXCEPTION_ID_8500002000_MESSAGE_VALUE = "Exception during `OuputMessage` serializing process (`IOMessageMapping`)";
    /**
     *  No boilerplates, just optimized code !
     *  Method that helps to map the input `JSON` object parameter into an `InputMessage` class instance
     *
     * @param {any} IMM type input parameter known as `JSON` object
     * @returns {InputMessage} an `InputMessage` class instance
     */
    private static doInputMessageMapping;
    /**
     *  No boilerplates, just optimized code !
     *  Method that helps to map the input `JSON` object parameter into an `OutputMessage` class instance
     *
     * @param {any} OMM `any` type input parameter known as `JSON` object
     * @returns {OutputMessage} an `OutputMessage` class instance
     */
    private static doOutputMessageMapping;
    /**
     * "Wrapper" that either redirect to the `doOutputMessageMapping()` or `doInputMessageMapping()` method
     *
     * @param {string} inJSON Content string to map
     * @returns {InputMessage, OutputMessage} an `InputMessage`or `OutputMessage`class instance
     */
    private static doMessageMapping;
    /**
     * Method that help in case of "stringifying" an ES6 `Map` type into a JSON format
     *
     * @param {any} _key (not used)
     * @param {any} value An `any` type value that might containing the targeted `Map` value
     * @returns {any, Map} An `any` or a 'Map' type value
     */
    private static replacer;
    /**
     * Method used in case of an ES6 `Map` JSON parsing
     *
     * @param {any} _key (not used)
     * @param {any} value An `any` type value that might containing the targeted `Map` value
     * @returns {any, Map} An `any` or a 'Map' type value
     */
    private static reviver;
    /**
     * Static method that returns a string after the JSON `stringify()` function
     *
     * @param {InputMessage, OutputMessage} strClass `InputMessage` or `OutputMessage` input type parameter
     * @returns {string} A 'string' type value representing of an `InputMessage` or `OutputMessage` class instance
     */
    static toJSON(strClass: InputMessage | OutputMessage): string;
    /**
     * Static method that returns from a JSON input string an `InputMessage` or `OutputMessage` class instance
     *
     * @param {string} JSONinst `string` input type parameter
     * @returns {InputMessage, OutputMessage} An `InputMessage` or `OutputMessage` class instance
     */
    static fromJSON(JSONinst: string): InputMessage | OutputMessage;
}
//# sourceMappingURL=IOMessageMapper.d.ts.map