const e = require("compact-encoding"),
{
MessageId: d,
ChatEvent: o,
DisplayEvent: n,
GenericEvent: c,
FileRecord: i,
} = require("./messages"),
r = {
TYPE: 3,
preencode(c, i) {
let r = 0
;(i.display && (r |= 1),
i.replyTo && (r |= 2),
e.uint.preencode(c, r),
o.preencode(c, i),
i.display && n.preencode(c, i.display),
i.replyTo && d.preencode(c, i.replyTo))
},
encode(c, i) {
let r = 0
;(i.display && (r |= 1),
i.replyTo && (r |= 2),
e.uint.encode(c, r),
o.encode(c, i),
i.display && n.encode(c, i.display),
i.replyTo && d.encode(c, i.replyTo))
},
decode(c) {
const i = e.uint.decode(c)
return {
...o.decode(c),
display: 1 & i ? n.decode(c) : null,
replyTo: 2 & i ? d.decode(c) : null,
}
},
},
p = {
TYPE: 4,
preencode(c, i) {
let r = 0
;(i.display && (r |= 1),
i.replyTo && (r |= 2),
e.uint.preencode(c, r),
d.preencode(c, i.id),
o.preencode(c, i),
i.display && n.preencode(c, i.display),
i.replyTo && d.preencode(c, i.replyTo))
},
encode(c, i) {
let r = 0
;(i.display && (r |= 1),
i.replyTo && (r |= 2),
e.uint.encode(c, r),
d.encode(c, i.id),
o.encode(c, i),
i.display && n.encode(c, i.display),
i.replyTo && d.encode(c, i.replyTo))
},
decode(c) {
const i = e.uint.decode(c)
return {
id: d.decode(c),
...o.decode(c),
display: 1 & i ? n.decode(c) : null,
replyTo: 2 & i ? d.decode(c) : null,
}
},
},
l = {
TYPE: 5,
preencode(e, o) {
d.preencode(e, o.id)
},
encode(e, o) {
d.encode(e, o.id)
},
decode: (e) => ({ id: d.decode(e) }),
},
t = { TYPE: 6, ...c },
s = {
TYPE: 7,
preencode(e, o) {
d.preencode(e, o.id)
},
encode(e, o) {
d.encode(e, o.id)
},
decode: (e) => ({ id: d.decode(e) }),
},
a = {
TYPE: 1,
preencode(d, o) {
;(d.end++, i.preencode(d, o.file), o.description && e.string.preencode(d, o.description))
},
encode(d, o) {
const n = d.start++
i.encode(d, o.file)
let c = 0
;(o.description && ((c |= 1), e.string.encode(d, o.description)), (d.buffer[n] = c))
},
decode(d) {
const o = e.uint.decode(d)
return { file: i.decode(d), description: 1 & o ? e.string.decode(d) : null }
},
},
y = {
TYPE: 2,
preencode(e, o) {
d.preencode(e, o.id)
},
encode(e, o) {
d.encode(e, o.id)
},
decode: (e) => ({ id: d.decode(e) }),
}
module.exports = {
AddChatMessageOperation: r,
UpdateChatMessageOperation: p,
RemoveChatMessageOperation: l,
AddGenericEventOperation: t,
RemoveGenericEventOperation: s,
AddFileOperation: a,
RemoveFileOperation: y,
}