// Generated by Lisette bindgen
// Source: encoding (Go stdlib)
// Go: 1.25.5
// Lisette: 0.1.11

/// BinaryAppender is the interface implemented by an object
/// that can append the binary representation of itself.
/// If a type implements both [BinaryAppender] and [BinaryMarshaler],
/// then v.MarshalBinary() must be semantically identical to v.AppendBinary(nil).
pub interface BinaryAppender {
  fn AppendBinary(mut b: Slice<uint8>) -> Result<Slice<uint8>, error>
}

/// BinaryMarshaler is the interface implemented by an object that can
/// marshal itself into a binary form.
/// 
/// MarshalBinary encodes the receiver into a binary form and returns the result.
pub interface BinaryMarshaler {
  fn MarshalBinary() -> Result<Slice<uint8>, error>
}

/// BinaryUnmarshaler is the interface implemented by an object that can
/// unmarshal a binary representation of itself.
/// 
/// UnmarshalBinary must be able to decode the form generated by MarshalBinary.
/// UnmarshalBinary must copy the data if it wishes to retain the data
/// after returning.
pub interface BinaryUnmarshaler {
  fn UnmarshalBinary(data: Slice<uint8>) -> Result<(), error>
}

/// TextAppender is the interface implemented by an object
/// that can append the textual representation of itself.
/// If a type implements both [TextAppender] and [TextMarshaler],
/// then v.MarshalText() must be semantically identical to v.AppendText(nil).
pub interface TextAppender {
  fn AppendText(mut b: Slice<uint8>) -> Result<Slice<uint8>, error>
}

/// TextMarshaler is the interface implemented by an object that can
/// marshal itself into a textual form.
/// 
/// MarshalText encodes the receiver into UTF-8-encoded text and returns the result.
pub interface TextMarshaler {
  fn MarshalText() -> Result<Slice<uint8>, error>
}

/// TextUnmarshaler is the interface implemented by an object that can
/// unmarshal a textual representation of itself.
/// 
/// UnmarshalText must be able to decode the form generated by MarshalText.
/// UnmarshalText must copy the text if it wishes to retain the text
/// after returning.
pub interface TextUnmarshaler {
  fn UnmarshalText(text: Slice<uint8>) -> Result<(), error>
}
