sig
  type t
  val create : unit -> SFPacket.t
  val append : packet:SFPacket.t -> data:string -> unit
  val copy : packet:SFPacket.t -> SFPacket.t
  val clear : packet:SFPacket.t -> unit
  val getData : packet:SFPacket.t -> string
  val endOfPacket : packet:SFPacket.t -> bool
  val canRead : packet:SFPacket.t -> bool
  val writeBool : packet:SFPacket.t -> v:bool -> unit
  val writeFloat : packet:SFPacket.t -> v:float -> unit
  val writeDouble : packet:SFPacket.t -> v:float -> unit
  val writeString : packet:SFPacket.t -> v:string -> unit
  val writeInt8 : packet:SFPacket.t -> v:int -> unit
  val writeUint8 : packet:SFPacket.t -> v:int -> unit
  val writeInt16 : packet:SFPacket.t -> v:int -> unit
  val writeUint16 : packet:SFPacket.t -> v:int -> unit
  val writeInt31 : packet:SFPacket.t -> v:int -> unit
  val writeInt32 : packet:SFPacket.t -> v:int32 -> unit
  val readBool : packet:SFPacket.t -> bool
  val readFloat : packet:SFPacket.t -> float
  val readDouble : packet:SFPacket.t -> float
  val readString : packet:SFPacket.t -> string
  val readInt8 : packet:SFPacket.t -> int
  val readUint8 : packet:SFPacket.t -> int
  val readInt16 : packet:SFPacket.t -> int
  val readUint16 : packet:SFPacket.t -> int
  val readInt31 : packet:SFPacket.t -> int
  val readInt32 : packet:SFPacket.t -> int32
end