class MapGamemodePair
{
    string MapName;
    string Gamemode;

    MapGamemodePair(string mapName, string gamemode);
}
struct DamageAmount
{
    float amount;
    bool IsMaxDamage;
}
class DisplayUsername
{
    List<color_string_t> prefixes;
    List<color_string_t> suffixes;
    string username;

    void SetDirty();
}
enum CrateType : byte
{
    None,
    Ammo,
    Block,
    Health,
    COUNT
}
enum VoteType
{
    None = 0,
    VotekickCheat = 1,
    VotekickGrief = 2,
    MapVote = 3,
    ProxyInitiated = 4,
}
class ExplosionData
{
    float total_radius;
    float explosion_damage;
    float voxel_damage_modifier;
    float voxel_destruction_factor;
    string explosion_prefab;
    bool enable_player_damage;
    float owner_damage_modifier;
    bool velocity_impulse;
}
class GrenadeProjectileSpawner
{

    void SpawnGrenadeProjectile(string network_behaviour_identifier, Vector3 position, Vector3 velocity_direction, Quaternion rotation, OwnerInfo ownerInfo, PlayerTeam team, EntityProxy initiator, float fuseTime, string used_item_identifier);
}
enum AuthenticationLevel : byte
{
    Default,
    Moderator,
    Administrator,
    Root
}
class ClassConfiguration
{
    List<element_t> configuration;
}
struct element_t
{
    string classIdentifier;
    List<List<string>> toolbelt;
    List<string> availableBlueprintIds;
}
struct color_string_t
{

    string ToString();

    color_string_t(string text, Color32? color, bool parseTags);
}
enum DamageType : byte
{
    Unspecified,
    SystemDamage,
    Projectile,
    Melee,
    Explosion,
    Impact,
    FallDamage,
    Water,
    TentFall
}
enum EntityType
{
    None = 0,
    player = 1,
    grenade_projectile,
    mortar_projectile,
    block_projectile,
    drill_projectile,
    trap,
    flame,
    turret,
    mortar,
    tombstone,
    flag,
    tent,
    crate,
    deployed_crate,
}
enum EntityTypeFlags
{
    player = 1 << 0,
    grenade_projectile = 1 << 1,
    mortar_projectile = 1 << 2,
    block_projectile = 1 << 3,
    drill_projectile = 1 << 4,
    trap = 1 << 5,
    flame = 1 << 6,
    turret = 1 << 7,
    mortar = 1 << 8,
    tombstone = 1 << 9,
    flag = 1 << 10,
    tent = 1 << 11,
    crate = 1 << 12,
    deployed_crate = 1 << 13
}
class GamemodeConfig
{
    int round_time;
    List<string> classes;
    List<string> cvars;
}
enum OwnerType
{
    Unset = 0,
    Player = 1,
    Server = 2,
    Bot = 3
}
struct OwnerInfo
{

    bool IsPlayerOwned();

    bool IsServerOwned();

    static OwnerInfo ServerOwned();

    static OwnerInfo PlayerOwned(PlayerProxy playerProxy);
}
enum PlayerTeam : byte
{
    Unset,
    Green,
    Blue,
}
enum SystemKillReason : byte
{
    Default,
    PlayerRedeploy,
    SwitchClass,
    SwitchTeam,
    InsideSolidVoxels,
    TentFall
}
enum KillfeedEventType : byte
{
    Default = SystemKillReason.Default,
    PlayerRedeploy = SystemKillReason.PlayerRedeploy,
    SwitchClass = SystemKillReason.SwitchClass,
    SwitchTeam = SystemKillReason.SwitchTeam,
    InsideSolidVoxel = SystemKillReason.InsideSolidVoxels,
    TentFall = SystemKillReason.TentFall,
    Suicided,
}
enum VoxelFlags : byte
{
    None =              0,
    Solid =             1 << 0,
    PlayerPlaced =      1 << 1,
    DamagedBit0 =       1 << 2,
    DamagedBit1 =       1 << 3,
    NotBreakable =      1 << 4,
    Occupied =          1 << 5,
}
struct aabb
{
    Vector3 min;
    Vector3 max;
    Vector3 center;
    Vector3 extents;

    static aabb from_box(Vector3 center, Vector3 extents);

    aabb(Vector3 min, Vector3 max);
}
struct ViewVoxelsResult
{
    Vector3Int LookAtInsideVoxelWorldPosition;
    Vector3Int LookAtNormalVoxelWorldPosition;
    Vector3 HitNormal;
}