import { InputMessage } from "../io/InputMessage";
import { OutputMessage } from "../io/OutputMessage";
/**
 * `IOMessageMapper` Helper Class Definition
 *
 * Abstract class helping for serializing and deserializing I/O classes such as `InputMessage` and `OutputMessage`
 *
 * No boilerplates, just optimized code !
 */
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`)";
    /**
     *  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;
    /**
     *  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()` methods
     *
     * @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