// automatically generated by the FlatBuffers compiler, do not modify
/* eslint-disable @typescript-eslint/no-unused-vars, @typescript-eslint/no-explicit-any,
 * @typescript-eslint/no-non-null-assertion */
import * as flatbuffers from 'flatbuffers';
export class Stat {
  constructor() {
    this.bb = null;
    this.bb_pos = 0;
  }
  __init(i, bb) {
    this.bb_pos = i;
    this.bb = bb;
    return this;
  }
  static getRootAsStat(bb, obj) {
    return (obj || new Stat())
        .__init(bb.readInt32(bb.position()) + bb.position(), bb);
  }
  static getSizePrefixedRootAsStat(bb, obj) {
    bb.setPosition(bb.position() + flatbuffers.SIZE_PREFIX_LENGTH);
    return (obj || new Stat())
        .__init(bb.readInt32(bb.position()) + bb.position(), bb);
  }
  id(optionalEncoding) {
    const offset = this.bb.__offset(this.bb_pos, 4);
    return offset ? this.bb.__string(this.bb_pos + offset, optionalEncoding) :
                    null;
  }
  val() {
    const offset = this.bb.__offset(this.bb_pos, 6);
    return offset ? this.bb.readInt64(this.bb_pos + offset) : BigInt('0');
  }
  mutate_val(value) {
    const offset = this.bb.__offset(this.bb_pos, 6);
    if (offset === 0) {
      return false;
    }
    this.bb.writeInt64(this.bb_pos + offset, value);
    return true;
  }
  count() {
    const offset = this.bb.__offset(this.bb_pos, 8);
    return offset ? this.bb.readUint16(this.bb_pos + offset) : 0;
  }
  mutate_count(value) {
    const offset = this.bb.__offset(this.bb_pos, 8);
    if (offset === 0) {
      return false;
    }
    this.bb.writeUint16(this.bb_pos + offset, value);
    return true;
  }
  static getFullyQualifiedName() {
    return 'MyGame.Example.Stat';
  }
  static startStat(builder) {
    builder.startObject(3);
  }
  static addId(builder, idOffset) {
    builder.addFieldOffset(0, idOffset, 0);
  }
  static addVal(builder, val) {
    builder.addFieldInt64(1, val, BigInt('0'));
  }
  static addCount(builder, count) {
    builder.addFieldInt16(2, count, 0);
  }
  static endStat(builder) {
    const offset = builder.endObject();
    return offset;
  }
  static createStat(builder, idOffset, val, count) {
    Stat.startStat(builder);
    Stat.addId(builder, idOffset);
    Stat.addVal(builder, val);
    Stat.addCount(builder, count);
    return Stat.endStat(builder);
  }
  serialize() {
    return this.bb.bytes();
  }
  static deserialize(buffer) {
    return Stat.getRootAsStat(new flatbuffers.ByteBuffer(buffer));
  }
  unpack() {
    return new StatT(this.id(), this.val(), this.count());
  }
  unpackTo(_o) {
    _o.id = this.id();
    _o.val = this.val();
    _o.count = this.count();
  }
}
export class StatT {
  constructor(id = null, val = BigInt('0'), count = 0) {
    this.id = id;
    this.val = val;
    this.count = count;
  }
  pack(builder) {
    const id = (this.id !== null ? builder.createString(this.id) : 0);
    return Stat.createStat(builder, id, this.val, this.count);
  }
}
