// Autogenerated from CppHeaderCreator
// Created by Sc2ad
// =========================================================================
#pragma once
// Begin includes
#include "beatsaber-hook/shared/utils/typedefs.h"
#include "beatsaber-hook/shared/utils/byref.hpp"
// Including type: LiteNetLib.ConnectionState
#include "LiteNetLib/ConnectionState.hpp"
// Including type: System.Int32
#include "System/Int32.hpp"
#include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
#include "beatsaber-hook/shared/utils/il2cpp-utils-properties.hpp"
#include "beatsaber-hook/shared/utils/il2cpp-utils-fields.hpp"
#include "beatsaber-hook/shared/utils/utils.h"
#include "beatsaber-hook/shared/utils/typedefs-array.hpp"
// Completed includes
// Begin forward declares
// Forward declaring namespace: LiteNetLib
namespace LiteNetLib {
  // Forward declaring type: NetPacketPool
  class NetPacketPool;
  // Forward declaring type: NetPacket
  class NetPacket;
  // Forward declaring type: BaseChannel
  class BaseChannel;
  // Forward declaring type: NetManager
  class NetManager;
  // Forward declaring type: NetStatistics
  class NetStatistics;
  // Forward declaring type: NetConnectAcceptPacket
  class NetConnectAcceptPacket;
  // Forward declaring type: DeliveryMethod
  struct DeliveryMethod;
  // Forward declaring type: DisconnectResult
  struct DisconnectResult;
  // Forward declaring type: ShutdownResult
  struct ShutdownResult;
  // Forward declaring type: ConnectRequestResult
  struct ConnectRequestResult;
  // Forward declaring type: NetConnectRequestPacket
  class NetConnectRequestPacket;
}
// Forward declaring namespace: System::Diagnostics
namespace System::Diagnostics {
  // Forward declaring type: Stopwatch
  class Stopwatch;
}
// Forward declaring namespace: System::Collections::Generic
namespace System::Collections::Generic {
  // Forward declaring type: Queue`1<T>
  template<typename T>
  class Queue_1;
  // Forward declaring type: Dictionary`2<TKey, TValue>
  template<typename TKey, typename TValue>
  class Dictionary_2;
}
// Forward declaring namespace: System::Net
namespace System::Net {
  // Forward declaring type: IPEndPoint
  class IPEndPoint;
}
// Forward declaring namespace: System
namespace System {
  // Forward declaring type: DateTime
  struct DateTime;
}
// Forward declaring namespace: LiteNetLib::Utils
namespace LiteNetLib::Utils {
  // Forward declaring type: NetDataWriter
  class NetDataWriter;
}
// Completed forward declares
// Type namespace: LiteNetLib
namespace LiteNetLib {
  // Forward declaring type: NetPeer
  class NetPeer;
}
#include "beatsaber-hook/shared/utils/il2cpp-type-check.hpp"
NEED_NO_BOX(::LiteNetLib::NetPeer);
DEFINE_IL2CPP_ARG_TYPE(::LiteNetLib::NetPeer*, "LiteNetLib", "NetPeer");
// Type namespace: LiteNetLib
namespace LiteNetLib {
  // Size: 0x148
  #pragma pack(push, 1)
  // Autogenerated type: LiteNetLib.NetPeer
  // [TokenAttribute] Offset: FFFFFFFF
  class NetPeer : public ::Il2CppObject {
    public:
    // Nested type: ::LiteNetLib::NetPeer::IncomingFragments
    class IncomingFragments;
    #ifdef USE_CODEGEN_FIELDS
    public:
    #else
    #ifdef CODEGEN_FIELD_ACCESSIBILITY
    CODEGEN_FIELD_ACCESSIBILITY:
    #else
    protected:
    #endif
    #endif
    // private System.Int32 _rtt
    // Size: 0x4
    // Offset: 0x10
    int rtt;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _avgRtt
    // Size: 0x4
    // Offset: 0x14
    int avgRtt;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _rttCount
    // Size: 0x4
    // Offset: 0x18
    int rttCount;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // Padding between fields: rttCount and: resendDelay
    char __padding2[0x4] = {};
    // private System.Double _resendDelay
    // Size: 0x8
    // Offset: 0x20
    double resendDelay;
    // Field size check
    static_assert(sizeof(double) == 0x8);
    // private System.Int32 _pingSendTimer
    // Size: 0x4
    // Offset: 0x28
    int pingSendTimer;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _rttResetTimer
    // Size: 0x4
    // Offset: 0x2C
    int rttResetTimer;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private readonly System.Diagnostics.Stopwatch _pingTimer
    // Size: 0x8
    // Offset: 0x30
    ::System::Diagnostics::Stopwatch* pingTimer;
    // Field size check
    static_assert(sizeof(::System::Diagnostics::Stopwatch*) == 0x8);
    // private System.Int32 _timeSinceLastPacket
    // Size: 0x4
    // Offset: 0x38
    int timeSinceLastPacket;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // Padding between fields: timeSinceLastPacket and: remoteDelta
    char __padding7[0x4] = {};
    // private System.Int64 _remoteDelta
    // Size: 0x8
    // Offset: 0x40
    int64_t remoteDelta;
    // Field size check
    static_assert(sizeof(int64_t) == 0x8);
    // private readonly LiteNetLib.NetPacketPool _packetPool
    // Size: 0x8
    // Offset: 0x48
    ::LiteNetLib::NetPacketPool* packetPool;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacketPool*) == 0x8);
    // private readonly System.Object _flushLock
    // Size: 0x8
    // Offset: 0x50
    ::Il2CppObject* flushLock;
    // Field size check
    static_assert(sizeof(::Il2CppObject*) == 0x8);
    // private readonly System.Object _sendLock
    // Size: 0x8
    // Offset: 0x58
    ::Il2CppObject* sendLock;
    // Field size check
    static_assert(sizeof(::Il2CppObject*) == 0x8);
    // private readonly System.Object _shutdownLock
    // Size: 0x8
    // Offset: 0x60
    ::Il2CppObject* shutdownLock;
    // Field size check
    static_assert(sizeof(::Il2CppObject*) == 0x8);
    // LiteNetLib.NetPeer NextPeer
    // Size: 0x8
    // Offset: 0x68
    ::LiteNetLib::NetPeer* NextPeer;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPeer*) == 0x8);
    // LiteNetLib.NetPeer PrevPeer
    // Size: 0x8
    // Offset: 0x70
    ::LiteNetLib::NetPeer* PrevPeer;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPeer*) == 0x8);
    // private readonly System.Collections.Generic.Queue`1<LiteNetLib.NetPacket> _unreliableChannel
    // Size: 0x8
    // Offset: 0x78
    ::System::Collections::Generic::Queue_1<::LiteNetLib::NetPacket*>* unreliableChannel;
    // Field size check
    static_assert(sizeof(::System::Collections::Generic::Queue_1<::LiteNetLib::NetPacket*>*) == 0x8);
    // private readonly LiteNetLib.BaseChannel[] _channels
    // Size: 0x8
    // Offset: 0x80
    ::ArrayW<::LiteNetLib::BaseChannel*> channels;
    // Field size check
    static_assert(sizeof(::ArrayW<::LiteNetLib::BaseChannel*>) == 0x8);
    // private LiteNetLib.BaseChannel _headChannel
    // Size: 0x8
    // Offset: 0x88
    ::LiteNetLib::BaseChannel* headChannel;
    // Field size check
    static_assert(sizeof(::LiteNetLib::BaseChannel*) == 0x8);
    // private System.Int32 _mtu
    // Size: 0x4
    // Offset: 0x90
    int mtu;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _mtuIdx
    // Size: 0x4
    // Offset: 0x94
    int mtuIdx;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Boolean _finishMtu
    // Size: 0x1
    // Offset: 0x98
    bool finishMtu;
    // Field size check
    static_assert(sizeof(bool) == 0x1);
    // Padding between fields: finishMtu and: mtuCheckTimer
    char __padding20[0x3] = {};
    // private System.Int32 _mtuCheckTimer
    // Size: 0x4
    // Offset: 0x9C
    int mtuCheckTimer;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _mtuCheckAttempts
    // Size: 0x4
    // Offset: 0xA0
    int mtuCheckAttempts;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // Padding between fields: mtuCheckAttempts and: mtuMutex
    char __padding22[0x4] = {};
    // private readonly System.Object _mtuMutex
    // Size: 0x8
    // Offset: 0xA8
    ::Il2CppObject* mtuMutex;
    // Field size check
    static_assert(sizeof(::Il2CppObject*) == 0x8);
    // private System.UInt16 _fragmentId
    // Size: 0x2
    // Offset: 0xB0
    uint16_t fragmentId;
    // Field size check
    static_assert(sizeof(uint16_t) == 0x2);
    // Padding between fields: fragmentId and: holdedFragments
    char __padding24[0x6] = {};
    // private readonly System.Collections.Generic.Dictionary`2<System.UInt16,LiteNetLib.NetPeer/LiteNetLib.IncomingFragments> _holdedFragments
    // Size: 0x8
    // Offset: 0xB8
    ::System::Collections::Generic::Dictionary_2<uint16_t, ::LiteNetLib::NetPeer::IncomingFragments*>* holdedFragments;
    // Field size check
    static_assert(sizeof(::System::Collections::Generic::Dictionary_2<uint16_t, ::LiteNetLib::NetPeer::IncomingFragments*>*) == 0x8);
    // private readonly System.Collections.Generic.Dictionary`2<System.UInt16,System.UInt16> _deliveredFramgnets
    // Size: 0x8
    // Offset: 0xC0
    ::System::Collections::Generic::Dictionary_2<uint16_t, uint16_t>* deliveredFramgnets;
    // Field size check
    static_assert(sizeof(::System::Collections::Generic::Dictionary_2<uint16_t, uint16_t>*) == 0x8);
    // private readonly LiteNetLib.NetPacket _mergeData
    // Size: 0x8
    // Offset: 0xC8
    ::LiteNetLib::NetPacket* mergeData;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // private System.Int32 _mergePos
    // Size: 0x4
    // Offset: 0xD0
    int mergePos;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _mergeCount
    // Size: 0x4
    // Offset: 0xD4
    int mergeCount;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _connectAttempts
    // Size: 0x4
    // Offset: 0xD8
    int connectAttempts;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int32 _connectTimer
    // Size: 0x4
    // Offset: 0xDC
    int connectTimer;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // private System.Int64 _connectTime
    // Size: 0x8
    // Offset: 0xE0
    int64_t connectTime;
    // Field size check
    static_assert(sizeof(int64_t) == 0x8);
    // private System.Byte _connectNum
    // Size: 0x1
    // Offset: 0xE8
    uint8_t connectNum;
    // Field size check
    static_assert(sizeof(uint8_t) == 0x1);
    // private LiteNetLib.ConnectionState _connectionState
    // Size: 0x1
    // Offset: 0xE9
    ::LiteNetLib::ConnectionState connectionState;
    // Field size check
    static_assert(sizeof(::LiteNetLib::ConnectionState) == 0x1);
    // Padding between fields: connectionState and: shutdownPacket
    char __padding34[0x6] = {};
    // private LiteNetLib.NetPacket _shutdownPacket
    // Size: 0x8
    // Offset: 0xF0
    ::LiteNetLib::NetPacket* shutdownPacket;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // private System.Int32 _shutdownTimer
    // Size: 0x4
    // Offset: 0xF8
    int shutdownTimer;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // Padding between fields: shutdownTimer and: pingPacket
    char __padding36[0x4] = {};
    // private readonly LiteNetLib.NetPacket _pingPacket
    // Size: 0x8
    // Offset: 0x100
    ::LiteNetLib::NetPacket* pingPacket;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // private readonly LiteNetLib.NetPacket _pongPacket
    // Size: 0x8
    // Offset: 0x108
    ::LiteNetLib::NetPacket* pongPacket;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // private readonly LiteNetLib.NetPacket _connectRequestPacket
    // Size: 0x8
    // Offset: 0x110
    ::LiteNetLib::NetPacket* connectRequestPacket;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // private readonly LiteNetLib.NetPacket _connectAcceptPacket
    // Size: 0x8
    // Offset: 0x118
    ::LiteNetLib::NetPacket* connectAcceptPacket;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetPacket*) == 0x8);
    // public readonly System.Net.IPEndPoint EndPoint
    // Size: 0x8
    // Offset: 0x120
    ::System::Net::IPEndPoint* EndPoint;
    // Field size check
    static_assert(sizeof(::System::Net::IPEndPoint*) == 0x8);
    // public readonly LiteNetLib.NetManager NetManager
    // Size: 0x8
    // Offset: 0x128
    ::LiteNetLib::NetManager* NetManager;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetManager*) == 0x8);
    // public readonly System.Int32 Id
    // Size: 0x4
    // Offset: 0x130
    int Id;
    // Field size check
    static_assert(sizeof(int) == 0x4);
    // Padding between fields: Id and: Tag
    char __padding43[0x4] = {};
    // public System.Object Tag
    // Size: 0x8
    // Offset: 0x138
    ::Il2CppObject* Tag;
    // Field size check
    static_assert(sizeof(::Il2CppObject*) == 0x8);
    // public readonly LiteNetLib.NetStatistics Statistics
    // Size: 0x8
    // Offset: 0x140
    ::LiteNetLib::NetStatistics* Statistics;
    // Field size check
    static_assert(sizeof(::LiteNetLib::NetStatistics*) == 0x8);
    public:
    // static field const value: static private System.Int32 MtuCheckDelay
    static constexpr const int MtuCheckDelay = 1000;
    // Get static field: static private System.Int32 MtuCheckDelay
    static int _get_MtuCheckDelay();
    // Set static field: static private System.Int32 MtuCheckDelay
    static void _set_MtuCheckDelay(int value);
    // static field const value: static private System.Int32 MaxMtuCheckAttempts
    static constexpr const int MaxMtuCheckAttempts = 4;
    // Get static field: static private System.Int32 MaxMtuCheckAttempts
    static int _get_MaxMtuCheckAttempts();
    // Set static field: static private System.Int32 MaxMtuCheckAttempts
    static void _set_MaxMtuCheckAttempts(int value);
    // static field const value: static private System.Int32 ShutdownDelay
    static constexpr const int ShutdownDelay = 300;
    // Get static field: static private System.Int32 ShutdownDelay
    static int _get_ShutdownDelay();
    // Set static field: static private System.Int32 ShutdownDelay
    static void _set_ShutdownDelay(int value);
    // Get instance field reference: private System.Int32 _rtt
    int& dyn__rtt();
    // Get instance field reference: private System.Int32 _avgRtt
    int& dyn__avgRtt();
    // Get instance field reference: private System.Int32 _rttCount
    int& dyn__rttCount();
    // Get instance field reference: private System.Double _resendDelay
    double& dyn__resendDelay();
    // Get instance field reference: private System.Int32 _pingSendTimer
    int& dyn__pingSendTimer();
    // Get instance field reference: private System.Int32 _rttResetTimer
    int& dyn__rttResetTimer();
    // Get instance field reference: private readonly System.Diagnostics.Stopwatch _pingTimer
    ::System::Diagnostics::Stopwatch*& dyn__pingTimer();
    // Get instance field reference: private System.Int32 _timeSinceLastPacket
    int& dyn__timeSinceLastPacket();
    // Get instance field reference: private System.Int64 _remoteDelta
    int64_t& dyn__remoteDelta();
    // Get instance field reference: private readonly LiteNetLib.NetPacketPool _packetPool
    ::LiteNetLib::NetPacketPool*& dyn__packetPool();
    // Get instance field reference: private readonly System.Object _flushLock
    ::Il2CppObject*& dyn__flushLock();
    // Get instance field reference: private readonly System.Object _sendLock
    ::Il2CppObject*& dyn__sendLock();
    // Get instance field reference: private readonly System.Object _shutdownLock
    ::Il2CppObject*& dyn__shutdownLock();
    // Get instance field reference: LiteNetLib.NetPeer NextPeer
    ::LiteNetLib::NetPeer*& dyn_NextPeer();
    // Get instance field reference: LiteNetLib.NetPeer PrevPeer
    ::LiteNetLib::NetPeer*& dyn_PrevPeer();
    // Get instance field reference: private readonly System.Collections.Generic.Queue`1<LiteNetLib.NetPacket> _unreliableChannel
    ::System::Collections::Generic::Queue_1<::LiteNetLib::NetPacket*>*& dyn__unreliableChannel();
    // Get instance field reference: private readonly LiteNetLib.BaseChannel[] _channels
    ::ArrayW<::LiteNetLib::BaseChannel*>& dyn__channels();
    // Get instance field reference: private LiteNetLib.BaseChannel _headChannel
    ::LiteNetLib::BaseChannel*& dyn__headChannel();
    // Get instance field reference: private System.Int32 _mtu
    int& dyn__mtu();
    // Get instance field reference: private System.Int32 _mtuIdx
    int& dyn__mtuIdx();
    // Get instance field reference: private System.Boolean _finishMtu
    bool& dyn__finishMtu();
    // Get instance field reference: private System.Int32 _mtuCheckTimer
    int& dyn__mtuCheckTimer();
    // Get instance field reference: private System.Int32 _mtuCheckAttempts
    int& dyn__mtuCheckAttempts();
    // Get instance field reference: private readonly System.Object _mtuMutex
    ::Il2CppObject*& dyn__mtuMutex();
    // Get instance field reference: private System.UInt16 _fragmentId
    uint16_t& dyn__fragmentId();
    // Get instance field reference: private readonly System.Collections.Generic.Dictionary`2<System.UInt16,LiteNetLib.NetPeer/LiteNetLib.IncomingFragments> _holdedFragments
    ::System::Collections::Generic::Dictionary_2<uint16_t, ::LiteNetLib::NetPeer::IncomingFragments*>*& dyn__holdedFragments();
    // Get instance field reference: private readonly System.Collections.Generic.Dictionary`2<System.UInt16,System.UInt16> _deliveredFramgnets
    ::System::Collections::Generic::Dictionary_2<uint16_t, uint16_t>*& dyn__deliveredFramgnets();
    // Get instance field reference: private readonly LiteNetLib.NetPacket _mergeData
    ::LiteNetLib::NetPacket*& dyn__mergeData();
    // Get instance field reference: private System.Int32 _mergePos
    int& dyn__mergePos();
    // Get instance field reference: private System.Int32 _mergeCount
    int& dyn__mergeCount();
    // Get instance field reference: private System.Int32 _connectAttempts
    int& dyn__connectAttempts();
    // Get instance field reference: private System.Int32 _connectTimer
    int& dyn__connectTimer();
    // Get instance field reference: private System.Int64 _connectTime
    int64_t& dyn__connectTime();
    // Get instance field reference: private System.Byte _connectNum
    uint8_t& dyn__connectNum();
    // Get instance field reference: private LiteNetLib.ConnectionState _connectionState
    ::LiteNetLib::ConnectionState& dyn__connectionState();
    // Get instance field reference: private LiteNetLib.NetPacket _shutdownPacket
    ::LiteNetLib::NetPacket*& dyn__shutdownPacket();
    // Get instance field reference: private System.Int32 _shutdownTimer
    int& dyn__shutdownTimer();
    // Get instance field reference: private readonly LiteNetLib.NetPacket _pingPacket
    ::LiteNetLib::NetPacket*& dyn__pingPacket();
    // Get instance field reference: private readonly LiteNetLib.NetPacket _pongPacket
    ::LiteNetLib::NetPacket*& dyn__pongPacket();
    // Get instance field reference: private readonly LiteNetLib.NetPacket _connectRequestPacket
    ::LiteNetLib::NetPacket*& dyn__connectRequestPacket();
    // Get instance field reference: private readonly LiteNetLib.NetPacket _connectAcceptPacket
    ::LiteNetLib::NetPacket*& dyn__connectAcceptPacket();
    // Get instance field reference: public readonly System.Net.IPEndPoint EndPoint
    ::System::Net::IPEndPoint*& dyn_EndPoint();
    // Get instance field reference: public readonly LiteNetLib.NetManager NetManager
    ::LiteNetLib::NetManager*& dyn_NetManager();
    // Get instance field reference: public readonly System.Int32 Id
    int& dyn_Id();
    // Get instance field reference: public System.Object Tag
    ::Il2CppObject*& dyn_Tag();
    // Get instance field reference: public readonly LiteNetLib.NetStatistics Statistics
    ::LiteNetLib::NetStatistics*& dyn_Statistics();
    // System.Byte get_ConnectionNum()
    // Offset: 0x216B980
    uint8_t get_ConnectionNum();
    // private System.Void set_ConnectionNum(System.Byte value)
    // Offset: 0x216B988
    void set_ConnectionNum(uint8_t value);
    // public LiteNetLib.ConnectionState get_ConnectionState()
    // Offset: 0x216B9D8
    ::LiteNetLib::ConnectionState get_ConnectionState();
    // System.Int64 get_ConnectTime()
    // Offset: 0x216B9E0
    int64_t get_ConnectTime();
    // public System.Int32 get_Ping()
    // Offset: 0x216B9E8
    int get_Ping();
    // public System.Int32 get_Mtu()
    // Offset: 0x216B9FC
    int get_Mtu();
    // public System.Int64 get_RemoteTimeDelta()
    // Offset: 0x216BA04
    int64_t get_RemoteTimeDelta();
    // public System.DateTime get_RemoteUtcTime()
    // Offset: 0x216BA0C
    ::System::DateTime get_RemoteUtcTime();
    // public System.Int32 get_TimeSinceLastPacket()
    // Offset: 0x216BAAC
    int get_TimeSinceLastPacket();
    // System.Double get_ResendDelay()
    // Offset: 0x216BAB4
    double get_ResendDelay();
    // System.Void .ctor(LiteNetLib.NetManager netManager, System.Net.IPEndPoint remoteEndPoint, System.Int32 id)
    // Offset: 0x2167F54
    template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
    static NetPeer* New_ctor(::LiteNetLib::NetManager* netManager, ::System::Net::IPEndPoint* remoteEndPoint, int id) {
      static auto ___internal__logger = ::Logger::get().WithContext("::LiteNetLib::NetPeer::.ctor");
      return THROW_UNLESS((::il2cpp_utils::New<NetPeer*, creationType>(netManager, remoteEndPoint, id)));
    }
    // System.Void .ctor(LiteNetLib.NetManager netManager, System.Net.IPEndPoint remoteEndPoint, System.Int32 id, System.Byte connectNum, LiteNetLib.Utils.NetDataWriter connectData)
    // Offset: 0x216AB60
    template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
    static NetPeer* New_ctor(::LiteNetLib::NetManager* netManager, ::System::Net::IPEndPoint* remoteEndPoint, int id, uint8_t connectNum, ::LiteNetLib::Utils::NetDataWriter* connectData) {
      static auto ___internal__logger = ::Logger::get().WithContext("::LiteNetLib::NetPeer::.ctor");
      return THROW_UNLESS((::il2cpp_utils::New<NetPeer*, creationType>(netManager, remoteEndPoint, id, connectNum, connectData)));
    }
    // System.Void .ctor(LiteNetLib.NetManager netManager, System.Net.IPEndPoint remoteEndPoint, System.Int32 id, System.Int64 connectId, System.Byte connectNum)
    // Offset: 0x21681F0
    template<::il2cpp_utils::CreationType creationType = ::il2cpp_utils::CreationType::Temporary>
    static NetPeer* New_ctor(::LiteNetLib::NetManager* netManager, ::System::Net::IPEndPoint* remoteEndPoint, int id, int64_t connectId, uint8_t connectNum) {
      static auto ___internal__logger = ::Logger::get().WithContext("::LiteNetLib::NetPeer::.ctor");
      return THROW_UNLESS((::il2cpp_utils::New<NetPeer*, creationType>(netManager, remoteEndPoint, id, connectId, connectNum)));
    }
    // private System.Void SetMtu(System.Int32 mtuIdx)
    // Offset: 0x216BABC
    void SetMtu(int mtuIdx);
    // public System.Int32 GetPacketsCountInReliableQueue(System.Byte channelNumber, System.Boolean ordered)
    // Offset: 0x216BB80
    int GetPacketsCountInReliableQueue(uint8_t channelNumber, bool ordered);
    // private LiteNetLib.BaseChannel CreateChannel(System.Byte idx)
    // Offset: 0x216BC40
    ::LiteNetLib::BaseChannel* CreateChannel(uint8_t idx);
    // System.Void Reject(System.Int64 connectionId, System.Byte connectionNumber, System.Byte[] data, System.Int32 start, System.Int32 length)
    // Offset: 0x21681D4
    void Reject(int64_t connectionId, uint8_t connectionNumber, ::ArrayW<uint8_t> data, int start, int length);
    // System.Boolean ProcessConnectAccept(LiteNetLib.NetConnectAcceptPacket packet)
    // Offset: 0x2168990
    bool ProcessConnectAccept(::LiteNetLib::NetConnectAcceptPacket* packet);
    // public System.Int32 GetMaxSinglePacketSize(LiteNetLib.DeliveryMethod options)
    // Offset: 0x216BFF0
    int GetMaxSinglePacketSize(::LiteNetLib::DeliveryMethod options);
    // public System.Void SendWithDeliveryEvent(System.Byte[] data, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod, System.Object userData)
    // Offset: 0x216C074
    void SendWithDeliveryEvent(::ArrayW<uint8_t> data, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod, ::Il2CppObject* userData);
    // public System.Void SendWithDeliveryEvent(System.Byte[] data, System.Int32 start, System.Int32 length, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod, System.Object userData)
    // Offset: 0x216C634
    void SendWithDeliveryEvent(::ArrayW<uint8_t> data, int start, int length, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod, ::Il2CppObject* userData);
    // public System.Void SendWithDeliveryEvent(LiteNetLib.Utils.NetDataWriter dataWriter, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod, System.Object userData)
    // Offset: 0x216C70C
    void SendWithDeliveryEvent(::LiteNetLib::Utils::NetDataWriter* dataWriter, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod, ::Il2CppObject* userData);
    // public System.Void Send(System.Byte[] data, LiteNetLib.DeliveryMethod deliveryMethod)
    // Offset: 0x216C7DC
    void Send(::ArrayW<uint8_t> data, ::LiteNetLib::DeliveryMethod deliveryMethod);
    // public System.Void Send(LiteNetLib.Utils.NetDataWriter dataWriter, LiteNetLib.DeliveryMethod deliveryMethod)
    // Offset: 0x216C804
    void Send(::LiteNetLib::Utils::NetDataWriter* dataWriter, ::LiteNetLib::DeliveryMethod deliveryMethod);
    // public System.Void Send(System.Byte[] data, System.Int32 start, System.Int32 length, LiteNetLib.DeliveryMethod options)
    // Offset: 0x216C834
    void Send(::ArrayW<uint8_t> data, int start, int length, ::LiteNetLib::DeliveryMethod options);
    // public System.Void Send(System.Byte[] data, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod)
    // Offset: 0x216C844
    void Send(::ArrayW<uint8_t> data, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod);
    // public System.Void Send(LiteNetLib.Utils.NetDataWriter dataWriter, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod)
    // Offset: 0x216C86C
    void Send(::LiteNetLib::Utils::NetDataWriter* dataWriter, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod);
    // public System.Void Send(System.Byte[] data, System.Int32 start, System.Int32 length, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod)
    // Offset: 0x2169380
    void Send(::ArrayW<uint8_t> data, int start, int length, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod);
    // private System.Void SendInternal(System.Byte[] data, System.Int32 start, System.Int32 length, System.Byte channelNumber, LiteNetLib.DeliveryMethod deliveryMethod, System.Object userData)
    // Offset: 0x216C144
    void SendInternal(::ArrayW<uint8_t> data, int start, int length, uint8_t channelNumber, ::LiteNetLib::DeliveryMethod deliveryMethod, ::Il2CppObject* userData);
    // public System.Void Disconnect(System.Byte[] data)
    // Offset: 0x216C8A4
    void Disconnect(::ArrayW<uint8_t> data);
    // public System.Void Disconnect(LiteNetLib.Utils.NetDataWriter writer)
    // Offset: 0x216C8C8
    void Disconnect(::LiteNetLib::Utils::NetDataWriter* writer);
    // public System.Void Disconnect(System.Byte[] data, System.Int32 start, System.Int32 count)
    // Offset: 0x216C8EC
    void Disconnect(::ArrayW<uint8_t> data, int start, int count);
    // public System.Void Disconnect()
    // Offset: 0x216C938
    void Disconnect();
    // LiteNetLib.DisconnectResult ProcessDisconnect(LiteNetLib.NetPacket packet)
    // Offset: 0x21688AC
    ::LiteNetLib::DisconnectResult ProcessDisconnect(::LiteNetLib::NetPacket* packet);
    // LiteNetLib.ShutdownResult Shutdown(System.Byte[] data, System.Int32 start, System.Int32 length, System.Boolean force)
    // Offset: 0x21666AC
    ::LiteNetLib::ShutdownResult Shutdown(::ArrayW<uint8_t> data, int start, int length, bool force);
    // private System.Void UpdateRoundTripTime(System.Int32 roundTripTime)
    // Offset: 0x216C980
    void UpdateRoundTripTime(int roundTripTime);
    // System.Void AddReliablePacket(LiteNetLib.DeliveryMethod method, LiteNetLib.NetPacket p)
    // Offset: 0x216C9BC
    void AddReliablePacket(::LiteNetLib::DeliveryMethod method, ::LiteNetLib::NetPacket* p);
    // private System.Void ProcessMtuPacket(LiteNetLib.NetPacket packet)
    // Offset: 0x216CDBC
    void ProcessMtuPacket(::LiteNetLib::NetPacket* packet);
    // private System.Void UpdateMtuLogic(System.Int32 deltaTime)
    // Offset: 0x216D178
    void UpdateMtuLogic(int deltaTime);
    // LiteNetLib.ConnectRequestResult ProcessConnectRequest(LiteNetLib.NetConnectRequestPacket connRequest)
    // Offset: 0x2168518
    ::LiteNetLib::ConnectRequestResult ProcessConnectRequest(::LiteNetLib::NetConnectRequestPacket* connRequest);
    // System.Void ProcessPacket(LiteNetLib.NetPacket packet)
    // Offset: 0x2168A00
    void ProcessPacket(::LiteNetLib::NetPacket* packet);
    // private System.Void SendMerged()
    // Offset: 0x216D3D4
    void SendMerged();
    // System.Void SendUserData(LiteNetLib.NetPacket packet)
    // Offset: 0x216D478
    void SendUserData(::LiteNetLib::NetPacket* packet);
    // public System.Void Flush()
    // Offset: 0x216A3E4
    void Flush();
    // System.Void Update(System.Int32 deltaTime)
    // Offset: 0x216724C
    void Update(int deltaTime);
    // System.Void RecycleAndDeliver(LiteNetLib.NetPacket packet)
    // Offset: 0x216D598
    void RecycleAndDeliver(::LiteNetLib::NetPacket* packet);
  }; // LiteNetLib.NetPeer
  #pragma pack(pop)
  static check_size<sizeof(NetPeer), 320 + sizeof(::LiteNetLib::NetStatistics*)> __LiteNetLib_NetPeerSizeCheck;
  static_assert(sizeof(NetPeer) == 0x148);
}
#include "beatsaber-hook/shared/utils/il2cpp-utils-methods.hpp"
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_ConnectionNum
// Il2CppName: get_ConnectionNum
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<uint8_t (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_ConnectionNum)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_ConnectionNum", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::set_ConnectionNum
// Il2CppName: set_ConnectionNum
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(uint8_t)>(&LiteNetLib::NetPeer::set_ConnectionNum)> {
  static const MethodInfo* get() {
    static auto* value = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "set_ConnectionNum", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{value});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_ConnectionState
// Il2CppName: get_ConnectionState
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::LiteNetLib::ConnectionState (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_ConnectionState)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_ConnectionState", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_ConnectTime
// Il2CppName: get_ConnectTime
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int64_t (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_ConnectTime)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_ConnectTime", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_Ping
// Il2CppName: get_Ping
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_Ping)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_Ping", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_Mtu
// Il2CppName: get_Mtu
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_Mtu)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_Mtu", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_RemoteTimeDelta
// Il2CppName: get_RemoteTimeDelta
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int64_t (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_RemoteTimeDelta)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_RemoteTimeDelta", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_RemoteUtcTime
// Il2CppName: get_RemoteUtcTime
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::System::DateTime (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_RemoteUtcTime)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_RemoteUtcTime", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_TimeSinceLastPacket
// Il2CppName: get_TimeSinceLastPacket
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_TimeSinceLastPacket)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_TimeSinceLastPacket", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::get_ResendDelay
// Il2CppName: get_ResendDelay
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<double (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::get_ResendDelay)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "get_ResendDelay", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::New_ctor
// Il2CppName: .ctor
// Cannot get method pointer of value based method overload from template for constructor!
// Try using FindMethod instead!
// Writing MetadataGetter for method: LiteNetLib::NetPeer::New_ctor
// Il2CppName: .ctor
// Cannot get method pointer of value based method overload from template for constructor!
// Try using FindMethod instead!
// Writing MetadataGetter for method: LiteNetLib::NetPeer::New_ctor
// Il2CppName: .ctor
// Cannot get method pointer of value based method overload from template for constructor!
// Try using FindMethod instead!
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SetMtu
// Il2CppName: SetMtu
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(int)>(&LiteNetLib::NetPeer::SetMtu)> {
  static const MethodInfo* get() {
    static auto* mtuIdx = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SetMtu", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{mtuIdx});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::GetPacketsCountInReliableQueue
// Il2CppName: GetPacketsCountInReliableQueue
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (LiteNetLib::NetPeer::*)(uint8_t, bool)>(&LiteNetLib::NetPeer::GetPacketsCountInReliableQueue)> {
  static const MethodInfo* get() {
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* ordered = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "GetPacketsCountInReliableQueue", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{channelNumber, ordered});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::CreateChannel
// Il2CppName: CreateChannel
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::LiteNetLib::BaseChannel* (LiteNetLib::NetPeer::*)(uint8_t)>(&LiteNetLib::NetPeer::CreateChannel)> {
  static const MethodInfo* get() {
    static auto* idx = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "CreateChannel", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{idx});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Reject
// Il2CppName: Reject
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(int64_t, uint8_t, ::ArrayW<uint8_t>, int, int)>(&LiteNetLib::NetPeer::Reject)> {
  static const MethodInfo* get() {
    static auto* connectionId = &::il2cpp_utils::GetClassFromName("System", "Int64")->byval_arg;
    static auto* connectionNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Reject", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{connectionId, connectionNumber, data, start, length});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::ProcessConnectAccept
// Il2CppName: ProcessConnectAccept
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<bool (LiteNetLib::NetPeer::*)(::LiteNetLib::NetConnectAcceptPacket*)>(&LiteNetLib::NetPeer::ProcessConnectAccept)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetConnectAcceptPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "ProcessConnectAccept", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::GetMaxSinglePacketSize
// Il2CppName: GetMaxSinglePacketSize
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<int (LiteNetLib::NetPeer::*)(::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::GetMaxSinglePacketSize)> {
  static const MethodInfo* get() {
    static auto* options = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "GetMaxSinglePacketSize", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{options});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendWithDeliveryEvent
// Il2CppName: SendWithDeliveryEvent
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, uint8_t, ::LiteNetLib::DeliveryMethod, ::Il2CppObject*)>(&LiteNetLib::NetPeer::SendWithDeliveryEvent)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    static auto* userData = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendWithDeliveryEvent", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channelNumber, deliveryMethod, userData});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendWithDeliveryEvent
// Il2CppName: SendWithDeliveryEvent
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int, uint8_t, ::LiteNetLib::DeliveryMethod, ::Il2CppObject*)>(&LiteNetLib::NetPeer::SendWithDeliveryEvent)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    static auto* userData = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendWithDeliveryEvent", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, length, channelNumber, deliveryMethod, userData});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendWithDeliveryEvent
// Il2CppName: SendWithDeliveryEvent
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::Utils::NetDataWriter*, uint8_t, ::LiteNetLib::DeliveryMethod, ::Il2CppObject*)>(&LiteNetLib::NetPeer::SendWithDeliveryEvent)> {
  static const MethodInfo* get() {
    static auto* dataWriter = &::il2cpp_utils::GetClassFromName("LiteNetLib.Utils", "NetDataWriter")->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    static auto* userData = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendWithDeliveryEvent", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{dataWriter, channelNumber, deliveryMethod, userData});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, deliveryMethod});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::Utils::NetDataWriter*, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* dataWriter = &::il2cpp_utils::GetClassFromName("LiteNetLib.Utils", "NetDataWriter")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{dataWriter, deliveryMethod});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* options = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, length, options});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, uint8_t, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, channelNumber, deliveryMethod});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::Utils::NetDataWriter*, uint8_t, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* dataWriter = &::il2cpp_utils::GetClassFromName("LiteNetLib.Utils", "NetDataWriter")->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{dataWriter, channelNumber, deliveryMethod});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Send
// Il2CppName: Send
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int, uint8_t, ::LiteNetLib::DeliveryMethod)>(&LiteNetLib::NetPeer::Send)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Send", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, length, channelNumber, deliveryMethod});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendInternal
// Il2CppName: SendInternal
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int, uint8_t, ::LiteNetLib::DeliveryMethod, ::Il2CppObject*)>(&LiteNetLib::NetPeer::SendInternal)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* channelNumber = &::il2cpp_utils::GetClassFromName("System", "Byte")->byval_arg;
    static auto* deliveryMethod = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    static auto* userData = &::il2cpp_utils::GetClassFromName("System", "Object")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendInternal", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, length, channelNumber, deliveryMethod, userData});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Disconnect
// Il2CppName: Disconnect
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>)>(&LiteNetLib::NetPeer::Disconnect)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Disconnect", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Disconnect
// Il2CppName: Disconnect
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::Utils::NetDataWriter*)>(&LiteNetLib::NetPeer::Disconnect)> {
  static const MethodInfo* get() {
    static auto* writer = &::il2cpp_utils::GetClassFromName("LiteNetLib.Utils", "NetDataWriter")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Disconnect", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{writer});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Disconnect
// Il2CppName: Disconnect
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int)>(&LiteNetLib::NetPeer::Disconnect)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* count = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Disconnect", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, count});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Disconnect
// Il2CppName: Disconnect
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::Disconnect)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Disconnect", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::ProcessDisconnect
// Il2CppName: ProcessDisconnect
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::LiteNetLib::DisconnectResult (LiteNetLib::NetPeer::*)(::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::ProcessDisconnect)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "ProcessDisconnect", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Shutdown
// Il2CppName: Shutdown
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::LiteNetLib::ShutdownResult (LiteNetLib::NetPeer::*)(::ArrayW<uint8_t>, int, int, bool)>(&LiteNetLib::NetPeer::Shutdown)> {
  static const MethodInfo* get() {
    static auto* data = &il2cpp_functions::array_class_get(::il2cpp_utils::GetClassFromName("System", "Byte"), 1)->byval_arg;
    static auto* start = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* length = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    static auto* force = &::il2cpp_utils::GetClassFromName("System", "Boolean")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Shutdown", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{data, start, length, force});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::UpdateRoundTripTime
// Il2CppName: UpdateRoundTripTime
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(int)>(&LiteNetLib::NetPeer::UpdateRoundTripTime)> {
  static const MethodInfo* get() {
    static auto* roundTripTime = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "UpdateRoundTripTime", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{roundTripTime});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::AddReliablePacket
// Il2CppName: AddReliablePacket
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::DeliveryMethod, ::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::AddReliablePacket)> {
  static const MethodInfo* get() {
    static auto* method = &::il2cpp_utils::GetClassFromName("LiteNetLib", "DeliveryMethod")->byval_arg;
    static auto* p = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "AddReliablePacket", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{method, p});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::ProcessMtuPacket
// Il2CppName: ProcessMtuPacket
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::ProcessMtuPacket)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "ProcessMtuPacket", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::UpdateMtuLogic
// Il2CppName: UpdateMtuLogic
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(int)>(&LiteNetLib::NetPeer::UpdateMtuLogic)> {
  static const MethodInfo* get() {
    static auto* deltaTime = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "UpdateMtuLogic", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{deltaTime});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::ProcessConnectRequest
// Il2CppName: ProcessConnectRequest
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<::LiteNetLib::ConnectRequestResult (LiteNetLib::NetPeer::*)(::LiteNetLib::NetConnectRequestPacket*)>(&LiteNetLib::NetPeer::ProcessConnectRequest)> {
  static const MethodInfo* get() {
    static auto* connRequest = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetConnectRequestPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "ProcessConnectRequest", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{connRequest});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::ProcessPacket
// Il2CppName: ProcessPacket
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::ProcessPacket)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "ProcessPacket", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendMerged
// Il2CppName: SendMerged
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::SendMerged)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendMerged", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::SendUserData
// Il2CppName: SendUserData
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::SendUserData)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "SendUserData", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Flush
// Il2CppName: Flush
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)()>(&LiteNetLib::NetPeer::Flush)> {
  static const MethodInfo* get() {
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Flush", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::Update
// Il2CppName: Update
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(int)>(&LiteNetLib::NetPeer::Update)> {
  static const MethodInfo* get() {
    static auto* deltaTime = &::il2cpp_utils::GetClassFromName("System", "Int32")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "Update", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{deltaTime});
  }
};
// Writing MetadataGetter for method: LiteNetLib::NetPeer::RecycleAndDeliver
// Il2CppName: RecycleAndDeliver
template<>
struct ::il2cpp_utils::il2cpp_type_check::MetadataGetter<static_cast<void (LiteNetLib::NetPeer::*)(::LiteNetLib::NetPacket*)>(&LiteNetLib::NetPeer::RecycleAndDeliver)> {
  static const MethodInfo* get() {
    static auto* packet = &::il2cpp_utils::GetClassFromName("LiteNetLib", "NetPacket")->byval_arg;
    return ::il2cpp_utils::FindMethod(classof(LiteNetLib::NetPeer*), "RecycleAndDeliver", std::vector<Il2CppClass*>(), ::std::vector<const Il2CppType*>{packet});
  }
};
