// wota
var wota = this

var json = use('json')

var encode = wota.encode

function wota_tostring()
{
  return json.encode(wota.decode(this))
}

var wota_obj = {
  toString: wota_tostring
}

wota.encode = function(obj, replacer)
{
  var result = encode(obj, replacer)
  result.toString = wota_tostring
  return result
}

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

This function serializes JavaScript values (such as numbers, strings, booleans, arrays, objects, or ArrayBuffers) into the WOTA 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).
:param replacer: An optional function that alters the encoding behavior for specific values.
:return: An ArrayBuffer containing the WOTA-encoded data.
:throws: An error if no argument is provided or if a cyclic object is encountered.
`

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

This function deserializes a WOTA-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 WOTA-encoded data to decode.
:param reviver: An optional function that transforms the decoded values.
:return: The decoded JavaScript value (e.g., number, string, boolean, array, object, or ArrayBuffer), or null if no argument is provided.
`

return wota
