package com.github.nsnjson.decoding;

import com.fasterxml.jackson.databind.JsonNode;
import com.fasterxml.jackson.databind.node.JsonNodeType;

import java.util.Optional;

public interface Decoding {

    Optional<JsonNodeType> getType(JsonNode presentation);

    Optional<JsonNode> decodeNull();

    Optional<JsonNode> decodeNumber(JsonNode presentation);

    Optional<JsonNode> decodeString(JsonNode presentation);

    Optional<JsonNode> decodeBoolean(JsonNode presentation);

    Optional<JsonNode> decodeArray(JsonNode presentation);

    Optional<JsonNode> decodeObject(JsonNode presentation);

    Optional<JsonNode> decode(JsonNode presentation);

}
@@ -169,439 +169,1771 @@
 l;%0A%0A
-public interface Decoding %7B%0A%0A    Optional%3CJsonNodeType%3E getType(JsonNode presentation);%0A%0A    Optional%3CJsonNode%3E decodeNull();%0A%0A    Optional%3CJsonNode%3E decodeNumber(JsonNode presentation);%0A%0A    Optional%3CJsonNode%3E decodeString(JsonNode presentation);%0A%0A    Optional%3CJsonNode%3E decodeBoolean(JsonNode presentation);%0A%0A    Optional%3CJsonNode%3E decodeArray(JsonNode presentation);%0A%0A    Optional%3CJsonNode%3E decodeObject(JsonNode presentation);%0A
+/**%0A * Base interface of decoding process.%0A */%0Apublic interface Decoding %7B%0A%0A    /**%0A     * Detects type of JSON which is presented in presentation.%0A     * @param presentation NSNJSON presentation%0A     * @return JSON type%0A     */%0A    Optional%3CJsonNodeType%3E getType(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON null value.%0A     * @return JSON null value%0A     */%0A    Optional%3CJsonNode%3E decodeNull();%0A%0A    /**%0A     * Decodes JSON number value from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON number value%0A     * @return JSON number value%0A     */%0A    Optional%3CJsonNode%3E decodeNumber(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON string value from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON string value%0A     * @return JSON string value%0A     */%0A    Optional%3CJsonNode%3E decodeString(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON boolean value from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON boolean value%0A     * @return JSON boolean value%0A     */%0A    Optional%3CJsonNode%3E decodeBoolean(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON array from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON array%0A     * @return JSON array%0A     */%0A    Optional%3CJsonNode%3E decodeArray(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON object from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON object%0A     * @return JSON object%0A     */%0A    Optional%3CJsonNode%3E decodeObject(JsonNode presentation);%0A%0A    /**%0A     * Decodes JSON from specified NSNJSON presentation.%0A     * @param presentation NSNJSON presentation of JSON%0A     * @return JSON%0A     */
 %0A   

Add documentation to { Decoding }