+/** \brief Performs "pretty" display of OPAC record to WRBUF using marc_t
+ \param mt handle
+ \param r OPAC record
+ \param wrbuf WRBUF for resulting display string
+
+ This function uses iconv_handle of yaz_marc_t for character set
+ conversion of both OPAC + ISO2709 part.
+ \*/
+YAZ_EXPORT void yaz_opac_decode_wrbuf(yaz_marc_t mt, Z_OPACRecord *r,
+ WRBUF wrbuf);
+
+/** \brief Performs "pretty" display of OPAC record to WRBUF using marc_t
+ \param mt handle
+ \param r OPAC record
+ \param wrbuf WRBUF for resulting display string
+ \param cd iconv handle for OPAC content (not ISO2709 part)
+
+ This function uses iconv handle of yaz_marc_t for character set
+ conversion of ISO2709 part and supplied handle (cd) for OPAC part.
+ \*/
+YAZ_EXPORT void yaz_opac_decode_wrbuf2(yaz_marc_t mt, Z_OPACRecord *r,
+ WRBUF wrbuf, yaz_iconv_t cd);
+
+#if YAZ_HAVE_XML2
+/** \brief Converts XML to OPAC
+ \param mt marc handle
+ \param buf_in XML buffer
+ \param size_in size of XML buffer
+ \param dst Z39.50 OPAC result - allocated by NMEM on marc handle
+ \param cd iconv handle for the OPAC content (not ISO2709 part)
+ \param nmem memory for OPACRecord (if NULL, mt NMEM memory is used)
+ \param syntax OID for embedded MARC (if NULL, USMARC is used)
+ \retval 1 conversion OK
+ \retval 0 conversion NOT OK
+ \*/
+YAZ_EXPORT int yaz_xml_to_opac(yaz_marc_t mt,
+ const char *buf_in, size_t size_in,
+ Z_OPACRecord **dst, yaz_iconv_t cd,
+ NMEM nmem, const Odr_oid *syntax);
+#endif
+
+/** \brief flushes records
+ \param mt handle
+ \param wr WRBUF for output
+ \retval 0 OK
+ \retval -1 ERROR
+*/
+YAZ_EXPORT int yaz_marc_write_trailer(yaz_marc_t mt, WRBUF wr);
+
+/** \brief enables record collection output
+ \param mt handle
+*/
+YAZ_EXPORT void yaz_marc_enable_collection(yaz_marc_t mt);
+
+struct json_node;
+
+YAZ_EXPORT int yaz_marc_read_json_node(yaz_marc_t mt, struct json_node *n);
+