syntax = "proto3";

package xray.common.matcher.geosite;
option csharp_namespace = "Xray.Common.Matcher.GeoSite";
option go_package = "github.com/xtls/xray-core/common/matcher/geosite";
option java_package = "com.xray.common.matcher.geosite";
option java_multiple_files = true;

import "common/matcher/domain/domain.proto";

message Domain {
  // Domain matching type.
  xray.common.matcher.domain.MatchingType type = 1;

  // Domain value.
  string value = 2;

  message Attribute {
    string key = 1;

    oneof typed_value {
      bool bool_value = 2;
      int64 int_value = 3;
    }
  }

  // Attributes of this domain. May be used for filtering.
  repeated Attribute attribute = 3;
}

message GeoSite {
  string country_code = 1;
  repeated Domain domain = 2;
}

message GeoSiteList {
  repeated GeoSite entry = 1;
}