syntax = "proto3";

message Tool {
    string name           = 1;
    string version        = 2;
    bytes  payload        = 3;
    bool   is_active      = 4;
    int32  exploit_count  = 5;
}

message Connection {
    string host           = 1;
    int32  port           = 2;
    bool   encrypted      = 3;
    int64  bandwidth_bps  = 4;
    bytes  session_key    = 5;
}

message Hacker {
    string              handle            = 1;
    string              real_name         = 2;
    int32               age               = 3;
    float               skill_level       = 4;   // Fixed32
    bool                is_elite          = 5;
    int64               crew_id           = 6;
    repeated string     exploits          = 7;
    repeated Tool       tools             = 8;
    Connection          active_connection = 9;
}

message Worm {
    string          name        = 1;
    int32           variant     = 2;
    int64           size_bytes  = 3;
    bytes           payload     = 4;
    bool            polymorphic = 5;
    repeated string targets     = 6;
}

message Operation {
    string          codename    = 1;
    string          target_corp = 2;
    int64           timestamp   = 3;
    bool            successful  = 4;
    bytes           stolen_data = 5;
    repeated Hacker crew        = 6;
    Worm            worm        = 7;
    repeated string log_entries = 8;
    int32           severity    = 9;
}

message Campaign {
    string              name               = 1;
    repeated Operation  operations         = 2;
    int64               total_bytes_stolen = 3;
}
