var nota = this

var json = use('json')

var encode = nota.encode

function nota_tostring()
{
  return json.encode(nota.decode(this))
}

var nota_obj = {
  toString: nota_tostring
}

nota.encode = function(obj, replacer)
{
  var result = encode(obj,replacer)
  result.toString = nota_tostring
  return result
}

nota.encode[cell.DOC] = `Convert a JavaScript value into a NOTA-encoded ArrayBuffer.

This function serializes JavaScript values (such as numbers, strings, booleans, arrays, objects, or ArrayBuffers) into the NOTA binary format. The resulting ArrayBuffer can be stored or transmitted and later decoded back into a JavaScript value.

:param value: The JavaScript value to encode (e.g., number, string, boolean, array, object, or ArrayBuffer).
:return: An ArrayBuffer containing the NOTA-encoded data.
:throws: An error if no argument is provided.
`

nota.decode[cell.DOC] = `Decode a NOTA-encoded ArrayBuffer into a JavaScript value.

This function deserializes a NOTA-formatted ArrayBuffer into its corresponding JavaScript representation, such as a number, string, boolean, array, object, or ArrayBuffer. If the input is invalid or empty, it returns null.

:param buffer: An ArrayBuffer containing NOTA-encoded data to decode.
:return: The decoded JavaScript value (e.g., number, string, boolean, array, object, or ArrayBuffer), or null if no argument is provided.
`

return nota
