syntax = "proto3";

package v2ray.core.transport.internet;
option csharp_namespace = "V2Ray.Core.Transport.Internet";
option go_package = "internet";
option java_package = "com.v2ray.core.transport.internet";
option java_multiple_files = true;

import "v2ray.com/core/common/serial/typed_message.proto";

enum TransportProtocol {
  TCP = 0;
  UDP = 1;
  MKCP = 2;
  WebSocket = 3;
}

message TransportConfig {
  // Type of network that this settings supports.
  TransportProtocol protocol = 1;

  // Specific settings.
  v2ray.core.common.serial.TypedMessage settings = 2;
}

message StreamConfig {
  // Effective network.
  TransportProtocol protocol = 1;

  repeated TransportConfig transport_settings = 2;

  // Type of security. Must be a message name of the settings proto.
  string security_type = 3;
  
  repeated v2ray.core.common.serial.TypedMessage security_settings = 4;
}

message ProxyConfig {
  string tag = 1;
}
