syntax = "proto3";

enum nat_type {
    none = 0;
    static = 1;
    restricted = 2;
    symmetric = 3;
    unknown = 4;
}

message peer {
    bytes pubkey = 1;
    repeated bytes listen_addrs = 2;
    repeated bytes connected = 3;
    nat_type nat_type = 4;
    int64 timestamp = 5;
    // Do NOT re-use this field ID. Associations are no longer used
    // map<string, association_list> associations = 6;
    bytes network_id = 7;
    map<string, metadata_value> signed_metadata = 8;
}

message metadata_value {
    oneof value {
        int64 int = 1;
        double flt = 2;
        bytes bin = 3;
        bool boolean = 4;
    }
}

message signed_peer {
    peer peer = 1;
    bytes signature = 2;
    map<string, bytes> metadata = 3;
}

message peer_list {
    repeated signed_peer peers = 1;
}
