syntax = "proto3";

package myriad.cache;

message Overwrite {
    uint64 id = 1;
    int32 type = 2;
    uint64 allow = 3;
    uint64 deny = 4;
}

message CachedChannel {
    uint64 id = 1;
    int32 type = 2;
    int32 position = 3;
    string name = 4;
    repeated Overwrite permission_overwrites = 5;
    optional uint64 guild_id = 6;
    optional uint64 parent_id = 7;
}

message CachedGuildMember {
    repeated uint64 roles = 1;
}

message CachedGuild {
    uint64 id = 1;
    string name = 2;
    uint64 owner_id = 3;
    int32 premium_tier = 4;
}

message CachedRole {
    uint64 id = 1;
    string name = 2;
    int32 position = 3;
    uint64 permissions = 4;
    bool mentionable = 5;
}

message CachedUser {
    uint64 id = 1;
    string username = 2;
    string discriminator = 3;
    optional string avatar = 4;
    bool bot = 5;
}