// This is a generated file - do not edit.
//
// Generated from proto/iop/control.proto.

// @dart = 3.3

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names
// ignore_for_file: curly_braces_in_flow_control_structures
// ignore_for_file: deprecated_member_use_from_same_package, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_relative_imports

import 'dart:core' as $core;

import 'package:fixnum/fixnum.dart' as $fixnum;
import 'package:protobuf/protobuf.dart' as $pb;

import 'runtime.pb.dart' as $0;

export 'package:protobuf/protobuf.dart' show GeneratedMessageGenericExtensions;

/// PolicyRule is a placeholder for future edge-level routing/resource constraints.
class PolicyRule extends $pb.GeneratedMessage {
  factory PolicyRule({
    $core.String? name,
    $core.String? expression,
    $core.Iterable<$core.MapEntry<$core.String, $core.String>>? params,
  }) {
    final result = create();
    if (name != null) result.name = name;
    if (expression != null) result.expression = expression;
    if (params != null) result.params.addEntries(params);
    return result;
  }

  PolicyRule._();

  factory PolicyRule.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory PolicyRule.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'PolicyRule',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'name')
    ..aOS(2, _omitFieldNames ? '' : 'expression')
    ..m<$core.String, $core.String>(3, _omitFieldNames ? '' : 'params',
        entryClassName: 'PolicyRule.ParamsEntry',
        keyFieldType: $pb.PbFieldType.OS,
        valueFieldType: $pb.PbFieldType.OS,
        packageName: const $pb.PackageName('iop'))
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PolicyRule clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PolicyRule copyWith(void Function(PolicyRule) updates) =>
      super.copyWith((message) => updates(message as PolicyRule)) as PolicyRule;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static PolicyRule create() => PolicyRule._();
  @$core.override
  PolicyRule createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static PolicyRule getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<PolicyRule>(create);
  static PolicyRule? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get name => $_getSZ(0);
  @$pb.TagNumber(1)
  set name($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasName() => $_has(0);
  @$pb.TagNumber(1)
  void clearName() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get expression => $_getSZ(1);
  @$pb.TagNumber(2)
  set expression($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasExpression() => $_has(1);
  @$pb.TagNumber(2)
  void clearExpression() => $_clearField(2);

  @$pb.TagNumber(3)
  $pb.PbMap<$core.String, $core.String> get params => $_getMap(2);
}

/// ScheduleRequest is a reserved legacy tombstone. The original direct Node
/// scheduling fields are retired; the message name is kept only to keep the
/// field numbers reserved so they cannot be reused as an active contract.
/// Future orchestration must go through Edge-owned runtime state.
class ScheduleRequest extends $pb.GeneratedMessage {
  factory ScheduleRequest() => create();

  ScheduleRequest._();

  factory ScheduleRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ScheduleRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ScheduleRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ScheduleRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ScheduleRequest copyWith(void Function(ScheduleRequest) updates) =>
      super.copyWith((message) => updates(message as ScheduleRequest))
          as ScheduleRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ScheduleRequest create() => ScheduleRequest._();
  @$core.override
  ScheduleRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ScheduleRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ScheduleRequest>(create);
  static ScheduleRequest? _defaultInstance;
}

/// ScheduleResponse is a reserved legacy tombstone. The original node
/// address/token fields are retired; future scheduling should be reworked
/// around Edge-owned runtime state instead of bypassing Edge.
class ScheduleResponse extends $pb.GeneratedMessage {
  factory ScheduleResponse() => create();

  ScheduleResponse._();

  factory ScheduleResponse.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ScheduleResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ScheduleResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ScheduleResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ScheduleResponse copyWith(void Function(ScheduleResponse) updates) =>
      super.copyWith((message) => updates(message as ScheduleResponse))
          as ScheduleResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ScheduleResponse create() => ScheduleResponse._();
  @$core.override
  ScheduleResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ScheduleResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ScheduleResponse>(create);
  static ScheduleResponse? _defaultInstance;
}

class ClientHelloRequest extends $pb.GeneratedMessage {
  factory ClientHelloRequest({
    $core.String? clientId,
    $core.String? clientVersion,
  }) {
    final result = create();
    if (clientId != null) result.clientId = clientId;
    if (clientVersion != null) result.clientVersion = clientVersion;
    return result;
  }

  ClientHelloRequest._();

  factory ClientHelloRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ClientHelloRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ClientHelloRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'clientId')
    ..aOS(2, _omitFieldNames ? '' : 'clientVersion')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ClientHelloRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ClientHelloRequest copyWith(void Function(ClientHelloRequest) updates) =>
      super.copyWith((message) => updates(message as ClientHelloRequest))
          as ClientHelloRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ClientHelloRequest create() => ClientHelloRequest._();
  @$core.override
  ClientHelloRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ClientHelloRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ClientHelloRequest>(create);
  static ClientHelloRequest? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get clientId => $_getSZ(0);
  @$pb.TagNumber(1)
  set clientId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasClientId() => $_has(0);
  @$pb.TagNumber(1)
  void clearClientId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get clientVersion => $_getSZ(1);
  @$pb.TagNumber(2)
  set clientVersion($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasClientVersion() => $_has(1);
  @$pb.TagNumber(2)
  void clearClientVersion() => $_clearField(2);
}

class ClientHelloResponse extends $pb.GeneratedMessage {
  factory ClientHelloResponse({
    $core.bool? ready,
    $core.String? protocol,
    $fixnum.Int64? serverTimeUnixNano,
    $core.String? message,
  }) {
    final result = create();
    if (ready != null) result.ready = ready;
    if (protocol != null) result.protocol = protocol;
    if (serverTimeUnixNano != null)
      result.serverTimeUnixNano = serverTimeUnixNano;
    if (message != null) result.message = message;
    return result;
  }

  ClientHelloResponse._();

  factory ClientHelloResponse.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ClientHelloResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ClientHelloResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOB(1, _omitFieldNames ? '' : 'ready')
    ..aOS(2, _omitFieldNames ? '' : 'protocol')
    ..aInt64(3, _omitFieldNames ? '' : 'serverTimeUnixNano')
    ..aOS(4, _omitFieldNames ? '' : 'message')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ClientHelloResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ClientHelloResponse copyWith(void Function(ClientHelloResponse) updates) =>
      super.copyWith((message) => updates(message as ClientHelloResponse))
          as ClientHelloResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ClientHelloResponse create() => ClientHelloResponse._();
  @$core.override
  ClientHelloResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ClientHelloResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ClientHelloResponse>(create);
  static ClientHelloResponse? _defaultInstance;

  @$pb.TagNumber(1)
  $core.bool get ready => $_getBF(0);
  @$pb.TagNumber(1)
  set ready($core.bool value) => $_setBool(0, value);
  @$pb.TagNumber(1)
  $core.bool hasReady() => $_has(0);
  @$pb.TagNumber(1)
  void clearReady() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get protocol => $_getSZ(1);
  @$pb.TagNumber(2)
  set protocol($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasProtocol() => $_has(1);
  @$pb.TagNumber(2)
  void clearProtocol() => $_clearField(2);

  @$pb.TagNumber(3)
  $fixnum.Int64 get serverTimeUnixNano => $_getI64(2);
  @$pb.TagNumber(3)
  set serverTimeUnixNano($fixnum.Int64 value) => $_setInt64(2, value);
  @$pb.TagNumber(3)
  $core.bool hasServerTimeUnixNano() => $_has(2);
  @$pb.TagNumber(3)
  void clearServerTimeUnixNano() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get message => $_getSZ(3);
  @$pb.TagNumber(4)
  set message($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasMessage() => $_has(3);
  @$pb.TagNumber(4)
  void clearMessage() => $_clearField(4);
}

/// EdgeHelloRequest is sent by Edge to Control Plane immediately after a
/// Control Plane-Edge wire connection is established. It describes the Edge
/// itself and must not become a direct Node registration or scheduling contract.
class EdgeHelloRequest extends $pb.GeneratedMessage {
  factory EdgeHelloRequest({
    $core.String? edgeId,
    $core.String? edgeName,
    $core.String? version,
    $core.Iterable<$core.String>? capabilities,
    $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata,
  }) {
    final result = create();
    if (edgeId != null) result.edgeId = edgeId;
    if (edgeName != null) result.edgeName = edgeName;
    if (version != null) result.version = version;
    if (capabilities != null) result.capabilities.addAll(capabilities);
    if (metadata != null) result.metadata.addEntries(metadata);
    return result;
  }

  EdgeHelloRequest._();

  factory EdgeHelloRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeHelloRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeHelloRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'edgeId')
    ..aOS(2, _omitFieldNames ? '' : 'edgeName')
    ..aOS(3, _omitFieldNames ? '' : 'version')
    ..pPS(4, _omitFieldNames ? '' : 'capabilities')
    ..m<$core.String, $core.String>(5, _omitFieldNames ? '' : 'metadata',
        entryClassName: 'EdgeHelloRequest.MetadataEntry',
        keyFieldType: $pb.PbFieldType.OS,
        valueFieldType: $pb.PbFieldType.OS,
        packageName: const $pb.PackageName('iop'))
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeHelloRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeHelloRequest copyWith(void Function(EdgeHelloRequest) updates) =>
      super.copyWith((message) => updates(message as EdgeHelloRequest))
          as EdgeHelloRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeHelloRequest create() => EdgeHelloRequest._();
  @$core.override
  EdgeHelloRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeHelloRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeHelloRequest>(create);
  static EdgeHelloRequest? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get edgeId => $_getSZ(0);
  @$pb.TagNumber(1)
  set edgeId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasEdgeId() => $_has(0);
  @$pb.TagNumber(1)
  void clearEdgeId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get edgeName => $_getSZ(1);
  @$pb.TagNumber(2)
  set edgeName($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasEdgeName() => $_has(1);
  @$pb.TagNumber(2)
  void clearEdgeName() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get version => $_getSZ(2);
  @$pb.TagNumber(3)
  set version($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasVersion() => $_has(2);
  @$pb.TagNumber(3)
  void clearVersion() => $_clearField(3);

  @$pb.TagNumber(4)
  $pb.PbList<$core.String> get capabilities => $_getList(3);

  @$pb.TagNumber(5)
  $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(4);
}

/// EdgeHelloResponse acknowledges Edge enrollment on the Control Plane-Edge
/// wire. Rejection details stay at the Edge boundary rather than exposing Node
/// scheduling decisions.
class EdgeHelloResponse extends $pb.GeneratedMessage {
  factory EdgeHelloResponse({
    $core.bool? accepted,
    $core.String? protocol,
    $fixnum.Int64? serverTimeUnixNano,
    $core.String? message,
    $core.String? reason,
    PrincipalProjection? principalProjection,
  }) {
    final result = create();
    if (accepted != null) result.accepted = accepted;
    if (protocol != null) result.protocol = protocol;
    if (serverTimeUnixNano != null)
      result.serverTimeUnixNano = serverTimeUnixNano;
    if (message != null) result.message = message;
    if (reason != null) result.reason = reason;
    if (principalProjection != null)
      result.principalProjection = principalProjection;
    return result;
  }

  EdgeHelloResponse._();

  factory EdgeHelloResponse.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeHelloResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeHelloResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOB(1, _omitFieldNames ? '' : 'accepted')
    ..aOS(2, _omitFieldNames ? '' : 'protocol')
    ..aInt64(3, _omitFieldNames ? '' : 'serverTimeUnixNano')
    ..aOS(4, _omitFieldNames ? '' : 'message')
    ..aOS(5, _omitFieldNames ? '' : 'reason')
    ..aOM<PrincipalProjection>(6, _omitFieldNames ? '' : 'principalProjection',
        subBuilder: PrincipalProjection.create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeHelloResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeHelloResponse copyWith(void Function(EdgeHelloResponse) updates) =>
      super.copyWith((message) => updates(message as EdgeHelloResponse))
          as EdgeHelloResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeHelloResponse create() => EdgeHelloResponse._();
  @$core.override
  EdgeHelloResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeHelloResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeHelloResponse>(create);
  static EdgeHelloResponse? _defaultInstance;

  @$pb.TagNumber(1)
  $core.bool get accepted => $_getBF(0);
  @$pb.TagNumber(1)
  set accepted($core.bool value) => $_setBool(0, value);
  @$pb.TagNumber(1)
  $core.bool hasAccepted() => $_has(0);
  @$pb.TagNumber(1)
  void clearAccepted() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get protocol => $_getSZ(1);
  @$pb.TagNumber(2)
  set protocol($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasProtocol() => $_has(1);
  @$pb.TagNumber(2)
  void clearProtocol() => $_clearField(2);

  @$pb.TagNumber(3)
  $fixnum.Int64 get serverTimeUnixNano => $_getI64(2);
  @$pb.TagNumber(3)
  set serverTimeUnixNano($fixnum.Int64 value) => $_setInt64(2, value);
  @$pb.TagNumber(3)
  $core.bool hasServerTimeUnixNano() => $_has(2);
  @$pb.TagNumber(3)
  void clearServerTimeUnixNano() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get message => $_getSZ(3);
  @$pb.TagNumber(4)
  set message($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasMessage() => $_has(3);
  @$pb.TagNumber(4)
  void clearMessage() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get reason => $_getSZ(4);
  @$pb.TagNumber(5)
  set reason($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasReason() => $_has(4);
  @$pb.TagNumber(5)
  void clearReason() => $_clearField(5);

  @$pb.TagNumber(6)
  PrincipalProjection get principalProjection => $_getN(5);
  @$pb.TagNumber(6)
  set principalProjection(PrincipalProjection value) => $_setField(6, value);
  @$pb.TagNumber(6)
  $core.bool hasPrincipalProjection() => $_has(5);
  @$pb.TagNumber(6)
  void clearPrincipalProjection() => $_clearField(6);
  @$pb.TagNumber(6)
  PrincipalProjection ensurePrincipalProjection() => $_ensure(5);
}

/// ProjectedPrincipalToken is a secret-free verifier entry reserved for the
/// authenticated Control Plane-Edge credential-plane rollout. The digest is a
/// SHA-256 hex value; raw IOP tokens are never carried by this message.
class ProjectedPrincipalToken extends $pb.GeneratedMessage {
  factory ProjectedPrincipalToken({
    $core.String? tokenDigestSha256,
    $core.String? principalRef,
    $core.String? principalAlias,
    $core.String? tokenRef,
    $fixnum.Int64? tokenRevision,
  }) {
    final result = create();
    if (tokenDigestSha256 != null) result.tokenDigestSha256 = tokenDigestSha256;
    if (principalRef != null) result.principalRef = principalRef;
    if (principalAlias != null) result.principalAlias = principalAlias;
    if (tokenRef != null) result.tokenRef = tokenRef;
    if (tokenRevision != null) result.tokenRevision = tokenRevision;
    return result;
  }

  ProjectedPrincipalToken._();

  factory ProjectedPrincipalToken.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ProjectedPrincipalToken.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ProjectedPrincipalToken',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'tokenDigestSha256')
    ..aOS(2, _omitFieldNames ? '' : 'principalRef')
    ..aOS(3, _omitFieldNames ? '' : 'principalAlias')
    ..aOS(4, _omitFieldNames ? '' : 'tokenRef')
    ..a<$fixnum.Int64>(
        5, _omitFieldNames ? '' : 'tokenRevision', $pb.PbFieldType.OU6,
        defaultOrMaker: $fixnum.Int64.ZERO)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectedPrincipalToken clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectedPrincipalToken copyWith(
          void Function(ProjectedPrincipalToken) updates) =>
      super.copyWith((message) => updates(message as ProjectedPrincipalToken))
          as ProjectedPrincipalToken;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ProjectedPrincipalToken create() => ProjectedPrincipalToken._();
  @$core.override
  ProjectedPrincipalToken createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ProjectedPrincipalToken getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ProjectedPrincipalToken>(create);
  static ProjectedPrincipalToken? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get tokenDigestSha256 => $_getSZ(0);
  @$pb.TagNumber(1)
  set tokenDigestSha256($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasTokenDigestSha256() => $_has(0);
  @$pb.TagNumber(1)
  void clearTokenDigestSha256() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get principalRef => $_getSZ(1);
  @$pb.TagNumber(2)
  set principalRef($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasPrincipalRef() => $_has(1);
  @$pb.TagNumber(2)
  void clearPrincipalRef() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get principalAlias => $_getSZ(2);
  @$pb.TagNumber(3)
  set principalAlias($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasPrincipalAlias() => $_has(2);
  @$pb.TagNumber(3)
  void clearPrincipalAlias() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get tokenRef => $_getSZ(3);
  @$pb.TagNumber(4)
  set tokenRef($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasTokenRef() => $_has(3);
  @$pb.TagNumber(4)
  void clearTokenRef() => $_clearField(4);

  @$pb.TagNumber(5)
  $fixnum.Int64 get tokenRevision => $_getI64(4);
  @$pb.TagNumber(5)
  set tokenRevision($fixnum.Int64 value) => $_setInt64(4, value);
  @$pb.TagNumber(5)
  $core.bool hasTokenRevision() => $_has(4);
  @$pb.TagNumber(5)
  void clearTokenRevision() => $_clearField(5);
}

/// ProjectedPrincipalRoute is a secret-free principal route binding. It names
/// the selected credential slot and revision but never carries ciphertext,
/// plaintext provider credentials, or runtime authorization headers.
class ProjectedPrincipalRoute extends $pb.GeneratedMessage {
  factory ProjectedPrincipalRoute({
    $core.String? routeId,
    $core.String? routeAlias,
    $core.String? principalRef,
    $core.String? credentialSlotRef,
    $core.String? profileId,
    $core.String? upstreamModel,
    $core.String? resourceSelector,
    $fixnum.Int64? routeRevision,
    $fixnum.Int64? credentialRevision,
  }) {
    final result = create();
    if (routeId != null) result.routeId = routeId;
    if (routeAlias != null) result.routeAlias = routeAlias;
    if (principalRef != null) result.principalRef = principalRef;
    if (credentialSlotRef != null) result.credentialSlotRef = credentialSlotRef;
    if (profileId != null) result.profileId = profileId;
    if (upstreamModel != null) result.upstreamModel = upstreamModel;
    if (resourceSelector != null) result.resourceSelector = resourceSelector;
    if (routeRevision != null) result.routeRevision = routeRevision;
    if (credentialRevision != null)
      result.credentialRevision = credentialRevision;
    return result;
  }

  ProjectedPrincipalRoute._();

  factory ProjectedPrincipalRoute.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory ProjectedPrincipalRoute.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'ProjectedPrincipalRoute',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'routeId')
    ..aOS(2, _omitFieldNames ? '' : 'routeAlias')
    ..aOS(3, _omitFieldNames ? '' : 'principalRef')
    ..aOS(4, _omitFieldNames ? '' : 'credentialSlotRef')
    ..aOS(5, _omitFieldNames ? '' : 'profileId')
    ..aOS(6, _omitFieldNames ? '' : 'upstreamModel')
    ..aOS(7, _omitFieldNames ? '' : 'resourceSelector')
    ..a<$fixnum.Int64>(
        8, _omitFieldNames ? '' : 'routeRevision', $pb.PbFieldType.OU6,
        defaultOrMaker: $fixnum.Int64.ZERO)
    ..a<$fixnum.Int64>(
        9, _omitFieldNames ? '' : 'credentialRevision', $pb.PbFieldType.OU6,
        defaultOrMaker: $fixnum.Int64.ZERO)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectedPrincipalRoute clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  ProjectedPrincipalRoute copyWith(
          void Function(ProjectedPrincipalRoute) updates) =>
      super.copyWith((message) => updates(message as ProjectedPrincipalRoute))
          as ProjectedPrincipalRoute;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static ProjectedPrincipalRoute create() => ProjectedPrincipalRoute._();
  @$core.override
  ProjectedPrincipalRoute createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static ProjectedPrincipalRoute getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<ProjectedPrincipalRoute>(create);
  static ProjectedPrincipalRoute? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get routeId => $_getSZ(0);
  @$pb.TagNumber(1)
  set routeId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasRouteId() => $_has(0);
  @$pb.TagNumber(1)
  void clearRouteId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get routeAlias => $_getSZ(1);
  @$pb.TagNumber(2)
  set routeAlias($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasRouteAlias() => $_has(1);
  @$pb.TagNumber(2)
  void clearRouteAlias() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get principalRef => $_getSZ(2);
  @$pb.TagNumber(3)
  set principalRef($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasPrincipalRef() => $_has(2);
  @$pb.TagNumber(3)
  void clearPrincipalRef() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get credentialSlotRef => $_getSZ(3);
  @$pb.TagNumber(4)
  set credentialSlotRef($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasCredentialSlotRef() => $_has(3);
  @$pb.TagNumber(4)
  void clearCredentialSlotRef() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get profileId => $_getSZ(4);
  @$pb.TagNumber(5)
  set profileId($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasProfileId() => $_has(4);
  @$pb.TagNumber(5)
  void clearProfileId() => $_clearField(5);

  @$pb.TagNumber(6)
  $core.String get upstreamModel => $_getSZ(5);
  @$pb.TagNumber(6)
  set upstreamModel($core.String value) => $_setString(5, value);
  @$pb.TagNumber(6)
  $core.bool hasUpstreamModel() => $_has(5);
  @$pb.TagNumber(6)
  void clearUpstreamModel() => $_clearField(6);

  @$pb.TagNumber(7)
  $core.String get resourceSelector => $_getSZ(6);
  @$pb.TagNumber(7)
  set resourceSelector($core.String value) => $_setString(6, value);
  @$pb.TagNumber(7)
  $core.bool hasResourceSelector() => $_has(6);
  @$pb.TagNumber(7)
  void clearResourceSelector() => $_clearField(7);

  @$pb.TagNumber(8)
  $fixnum.Int64 get routeRevision => $_getI64(7);
  @$pb.TagNumber(8)
  set routeRevision($fixnum.Int64 value) => $_setInt64(7, value);
  @$pb.TagNumber(8)
  $core.bool hasRouteRevision() => $_has(7);
  @$pb.TagNumber(8)
  void clearRouteRevision() => $_clearField(8);

  @$pb.TagNumber(9)
  $fixnum.Int64 get credentialRevision => $_getI64(8);
  @$pb.TagNumber(9)
  set credentialRevision($fixnum.Int64 value) => $_setInt64(8, value);
  @$pb.TagNumber(9)
  $core.bool hasCredentialRevision() => $_has(8);
  @$pb.TagNumber(9)
  void clearCredentialRevision() => $_clearField(9);
}

/// PrincipalProjection is an immutable, generation-fenced authorization and
/// routing snapshot. These value types are dormant until the Control
/// Plane-Edge transport provides authenticated peer identity and integrity.
class PrincipalProjection extends $pb.GeneratedMessage {
  factory PrincipalProjection({
    $fixnum.Int64? generation,
    $fixnum.Int64? issuedAtUnixNano,
    $fixnum.Int64? expiresAtUnixNano,
    $core.Iterable<ProjectedPrincipalToken>? tokens,
    $core.Iterable<ProjectedPrincipalRoute>? routes,
  }) {
    final result = create();
    if (generation != null) result.generation = generation;
    if (issuedAtUnixNano != null) result.issuedAtUnixNano = issuedAtUnixNano;
    if (expiresAtUnixNano != null) result.expiresAtUnixNano = expiresAtUnixNano;
    if (tokens != null) result.tokens.addAll(tokens);
    if (routes != null) result.routes.addAll(routes);
    return result;
  }

  PrincipalProjection._();

  factory PrincipalProjection.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory PrincipalProjection.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'PrincipalProjection',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..a<$fixnum.Int64>(
        1, _omitFieldNames ? '' : 'generation', $pb.PbFieldType.OU6,
        defaultOrMaker: $fixnum.Int64.ZERO)
    ..aInt64(2, _omitFieldNames ? '' : 'issuedAtUnixNano')
    ..aInt64(3, _omitFieldNames ? '' : 'expiresAtUnixNano')
    ..pPM<ProjectedPrincipalToken>(4, _omitFieldNames ? '' : 'tokens',
        subBuilder: ProjectedPrincipalToken.create)
    ..pPM<ProjectedPrincipalRoute>(5, _omitFieldNames ? '' : 'routes',
        subBuilder: ProjectedPrincipalRoute.create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjection clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjection copyWith(void Function(PrincipalProjection) updates) =>
      super.copyWith((message) => updates(message as PrincipalProjection))
          as PrincipalProjection;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static PrincipalProjection create() => PrincipalProjection._();
  @$core.override
  PrincipalProjection createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static PrincipalProjection getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<PrincipalProjection>(create);
  static PrincipalProjection? _defaultInstance;

  @$pb.TagNumber(1)
  $fixnum.Int64 get generation => $_getI64(0);
  @$pb.TagNumber(1)
  set generation($fixnum.Int64 value) => $_setInt64(0, value);
  @$pb.TagNumber(1)
  $core.bool hasGeneration() => $_has(0);
  @$pb.TagNumber(1)
  void clearGeneration() => $_clearField(1);

  @$pb.TagNumber(2)
  $fixnum.Int64 get issuedAtUnixNano => $_getI64(1);
  @$pb.TagNumber(2)
  set issuedAtUnixNano($fixnum.Int64 value) => $_setInt64(1, value);
  @$pb.TagNumber(2)
  $core.bool hasIssuedAtUnixNano() => $_has(1);
  @$pb.TagNumber(2)
  void clearIssuedAtUnixNano() => $_clearField(2);

  @$pb.TagNumber(3)
  $fixnum.Int64 get expiresAtUnixNano => $_getI64(2);
  @$pb.TagNumber(3)
  set expiresAtUnixNano($fixnum.Int64 value) => $_setInt64(2, value);
  @$pb.TagNumber(3)
  $core.bool hasExpiresAtUnixNano() => $_has(2);
  @$pb.TagNumber(3)
  void clearExpiresAtUnixNano() => $_clearField(3);

  @$pb.TagNumber(4)
  $pb.PbList<ProjectedPrincipalToken> get tokens => $_getList(3);

  @$pb.TagNumber(5)
  $pb.PbList<ProjectedPrincipalRoute> get routes => $_getList(4);
}

/// PrincipalProjectionApplyRequest and PrincipalProjectionApplyResponse reserve
/// the future apply operation payload without registering a parser or handler
/// on the current unauthenticated Control Plane-Edge connection.
class PrincipalProjectionApplyRequest extends $pb.GeneratedMessage {
  factory PrincipalProjectionApplyRequest({
    PrincipalProjection? projection,
  }) {
    final result = create();
    if (projection != null) result.projection = projection;
    return result;
  }

  PrincipalProjectionApplyRequest._();

  factory PrincipalProjectionApplyRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory PrincipalProjectionApplyRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'PrincipalProjectionApplyRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOM<PrincipalProjection>(1, _omitFieldNames ? '' : 'projection',
        subBuilder: PrincipalProjection.create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjectionApplyRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjectionApplyRequest copyWith(
          void Function(PrincipalProjectionApplyRequest) updates) =>
      super.copyWith(
              (message) => updates(message as PrincipalProjectionApplyRequest))
          as PrincipalProjectionApplyRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static PrincipalProjectionApplyRequest create() =>
      PrincipalProjectionApplyRequest._();
  @$core.override
  PrincipalProjectionApplyRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static PrincipalProjectionApplyRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<PrincipalProjectionApplyRequest>(
          create);
  static PrincipalProjectionApplyRequest? _defaultInstance;

  @$pb.TagNumber(1)
  PrincipalProjection get projection => $_getN(0);
  @$pb.TagNumber(1)
  set projection(PrincipalProjection value) => $_setField(1, value);
  @$pb.TagNumber(1)
  $core.bool hasProjection() => $_has(0);
  @$pb.TagNumber(1)
  void clearProjection() => $_clearField(1);
  @$pb.TagNumber(1)
  PrincipalProjection ensureProjection() => $_ensure(0);
}

class PrincipalProjectionApplyResponse extends $pb.GeneratedMessage {
  factory PrincipalProjectionApplyResponse({
    $core.bool? applied,
    $fixnum.Int64? acceptedGeneration,
    $core.String? reason,
  }) {
    final result = create();
    if (applied != null) result.applied = applied;
    if (acceptedGeneration != null)
      result.acceptedGeneration = acceptedGeneration;
    if (reason != null) result.reason = reason;
    return result;
  }

  PrincipalProjectionApplyResponse._();

  factory PrincipalProjectionApplyResponse.fromBuffer(
          $core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory PrincipalProjectionApplyResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'PrincipalProjectionApplyResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOB(1, _omitFieldNames ? '' : 'applied')
    ..a<$fixnum.Int64>(
        2, _omitFieldNames ? '' : 'acceptedGeneration', $pb.PbFieldType.OU6,
        defaultOrMaker: $fixnum.Int64.ZERO)
    ..aOS(3, _omitFieldNames ? '' : 'reason')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjectionApplyResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  PrincipalProjectionApplyResponse copyWith(
          void Function(PrincipalProjectionApplyResponse) updates) =>
      super.copyWith(
              (message) => updates(message as PrincipalProjectionApplyResponse))
          as PrincipalProjectionApplyResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static PrincipalProjectionApplyResponse create() =>
      PrincipalProjectionApplyResponse._();
  @$core.override
  PrincipalProjectionApplyResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static PrincipalProjectionApplyResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<PrincipalProjectionApplyResponse>(
          create);
  static PrincipalProjectionApplyResponse? _defaultInstance;

  @$pb.TagNumber(1)
  $core.bool get applied => $_getBF(0);
  @$pb.TagNumber(1)
  set applied($core.bool value) => $_setBool(0, value);
  @$pb.TagNumber(1)
  $core.bool hasApplied() => $_has(0);
  @$pb.TagNumber(1)
  void clearApplied() => $_clearField(1);

  @$pb.TagNumber(2)
  $fixnum.Int64 get acceptedGeneration => $_getI64(1);
  @$pb.TagNumber(2)
  set acceptedGeneration($fixnum.Int64 value) => $_setInt64(1, value);
  @$pb.TagNumber(2)
  $core.bool hasAcceptedGeneration() => $_has(1);
  @$pb.TagNumber(2)
  void clearAcceptedGeneration() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get reason => $_getSZ(2);
  @$pb.TagNumber(3)
  set reason($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasReason() => $_has(2);
  @$pb.TagNumber(3)
  void clearReason() => $_clearField(3);
}

/// EdgeStatusRequest asks a connected Edge to report its Edge-owned node
/// registry snapshot. It carries only a correlation id; the Control Plane does
/// not address, connect to, or schedule Node directly through this contract.
class EdgeStatusRequest extends $pb.GeneratedMessage {
  factory EdgeStatusRequest({
    $core.String? requestId,
  }) {
    final result = create();
    if (requestId != null) result.requestId = requestId;
    return result;
  }

  EdgeStatusRequest._();

  factory EdgeStatusRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeStatusRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeStatusRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'requestId')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeStatusRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeStatusRequest copyWith(void Function(EdgeStatusRequest) updates) =>
      super.copyWith((message) => updates(message as EdgeStatusRequest))
          as EdgeStatusRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeStatusRequest create() => EdgeStatusRequest._();
  @$core.override
  EdgeStatusRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeStatusRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeStatusRequest>(create);
  static EdgeStatusRequest? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get requestId => $_getSZ(0);
  @$pb.TagNumber(1)
  set requestId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasRequestId() => $_has(0);
  @$pb.TagNumber(1)
  void clearRequestId() => $_clearField(1);
}

/// EdgeNodeSnapshot is a surface-neutral view of a node owned by the Edge. It
/// only mirrors what the Edge service exposes and must not carry Node address,
/// token, or scheduling fields.
class EdgeNodeSnapshot extends $pb.GeneratedMessage {
  factory EdgeNodeSnapshot({
    $core.String? nodeId,
    $core.String? alias,
    $core.String? label,
    $core.bool? connected,
    $0.NodeConfigPayload? config,
    $core.Iterable<$0.ProviderSnapshot>? providerSnapshots,
  }) {
    final result = create();
    if (nodeId != null) result.nodeId = nodeId;
    if (alias != null) result.alias = alias;
    if (label != null) result.label = label;
    if (connected != null) result.connected = connected;
    if (config != null) result.config = config;
    if (providerSnapshots != null)
      result.providerSnapshots.addAll(providerSnapshots);
    return result;
  }

  EdgeNodeSnapshot._();

  factory EdgeNodeSnapshot.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeNodeSnapshot.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeNodeSnapshot',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'nodeId')
    ..aOS(2, _omitFieldNames ? '' : 'alias')
    ..aOS(3, _omitFieldNames ? '' : 'label')
    ..aOB(4, _omitFieldNames ? '' : 'connected')
    ..aOM<$0.NodeConfigPayload>(5, _omitFieldNames ? '' : 'config',
        subBuilder: $0.NodeConfigPayload.create)
    ..pPM<$0.ProviderSnapshot>(6, _omitFieldNames ? '' : 'providerSnapshots',
        subBuilder: $0.ProviderSnapshot.create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeNodeSnapshot clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeNodeSnapshot copyWith(void Function(EdgeNodeSnapshot) updates) =>
      super.copyWith((message) => updates(message as EdgeNodeSnapshot))
          as EdgeNodeSnapshot;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeNodeSnapshot create() => EdgeNodeSnapshot._();
  @$core.override
  EdgeNodeSnapshot createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeNodeSnapshot getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeNodeSnapshot>(create);
  static EdgeNodeSnapshot? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get nodeId => $_getSZ(0);
  @$pb.TagNumber(1)
  set nodeId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasNodeId() => $_has(0);
  @$pb.TagNumber(1)
  void clearNodeId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get alias => $_getSZ(1);
  @$pb.TagNumber(2)
  set alias($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasAlias() => $_has(1);
  @$pb.TagNumber(2)
  void clearAlias() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get label => $_getSZ(2);
  @$pb.TagNumber(3)
  set label($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasLabel() => $_has(2);
  @$pb.TagNumber(3)
  void clearLabel() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.bool get connected => $_getBF(3);
  @$pb.TagNumber(4)
  set connected($core.bool value) => $_setBool(3, value);
  @$pb.TagNumber(4)
  $core.bool hasConnected() => $_has(3);
  @$pb.TagNumber(4)
  void clearConnected() => $_clearField(4);

  @$pb.TagNumber(5)
  $0.NodeConfigPayload get config => $_getN(4);
  @$pb.TagNumber(5)
  set config($0.NodeConfigPayload value) => $_setField(5, value);
  @$pb.TagNumber(5)
  $core.bool hasConfig() => $_has(4);
  @$pb.TagNumber(5)
  void clearConfig() => $_clearField(5);
  @$pb.TagNumber(5)
  $0.NodeConfigPayload ensureConfig() => $_ensure(4);

  /// provider_snapshots uses the runtime ProviderSnapshot wire name for node
  /// resources/providers. category distinguishes API and local inference.
  @$pb.TagNumber(6)
  $pb.PbList<$0.ProviderSnapshot> get providerSnapshots => $_getList(5);
}

/// EdgeStatusResponse returns the Edge-owned node snapshot list in reply to an
/// EdgeStatusRequest. The Control Plane observes this snapshot rather than
/// replicating the Edge-local registry.
class EdgeStatusResponse extends $pb.GeneratedMessage {
  factory EdgeStatusResponse({
    $core.String? requestId,
    $core.String? edgeId,
    $core.String? edgeName,
    $fixnum.Int64? observedTimeUnixNano,
    $core.Iterable<EdgeNodeSnapshot>? nodes,
    $core.Iterable<$core.MapEntry<$core.String, $core.String>>? metadata,
    $core.String? error,
    $core.Iterable<EdgeCapabilitySummary>? capabilities,
  }) {
    final result = create();
    if (requestId != null) result.requestId = requestId;
    if (edgeId != null) result.edgeId = edgeId;
    if (edgeName != null) result.edgeName = edgeName;
    if (observedTimeUnixNano != null)
      result.observedTimeUnixNano = observedTimeUnixNano;
    if (nodes != null) result.nodes.addAll(nodes);
    if (metadata != null) result.metadata.addEntries(metadata);
    if (error != null) result.error = error;
    if (capabilities != null) result.capabilities.addAll(capabilities);
    return result;
  }

  EdgeStatusResponse._();

  factory EdgeStatusResponse.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeStatusResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeStatusResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'requestId')
    ..aOS(2, _omitFieldNames ? '' : 'edgeId')
    ..aOS(3, _omitFieldNames ? '' : 'edgeName')
    ..aInt64(4, _omitFieldNames ? '' : 'observedTimeUnixNano')
    ..pPM<EdgeNodeSnapshot>(5, _omitFieldNames ? '' : 'nodes',
        subBuilder: EdgeNodeSnapshot.create)
    ..m<$core.String, $core.String>(6, _omitFieldNames ? '' : 'metadata',
        entryClassName: 'EdgeStatusResponse.MetadataEntry',
        keyFieldType: $pb.PbFieldType.OS,
        valueFieldType: $pb.PbFieldType.OS,
        packageName: const $pb.PackageName('iop'))
    ..aOS(7, _omitFieldNames ? '' : 'error')
    ..pPM<EdgeCapabilitySummary>(8, _omitFieldNames ? '' : 'capabilities',
        subBuilder: EdgeCapabilitySummary.create)
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeStatusResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeStatusResponse copyWith(void Function(EdgeStatusResponse) updates) =>
      super.copyWith((message) => updates(message as EdgeStatusResponse))
          as EdgeStatusResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeStatusResponse create() => EdgeStatusResponse._();
  @$core.override
  EdgeStatusResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeStatusResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeStatusResponse>(create);
  static EdgeStatusResponse? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get requestId => $_getSZ(0);
  @$pb.TagNumber(1)
  set requestId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasRequestId() => $_has(0);
  @$pb.TagNumber(1)
  void clearRequestId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get edgeId => $_getSZ(1);
  @$pb.TagNumber(2)
  set edgeId($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasEdgeId() => $_has(1);
  @$pb.TagNumber(2)
  void clearEdgeId() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get edgeName => $_getSZ(2);
  @$pb.TagNumber(3)
  set edgeName($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasEdgeName() => $_has(2);
  @$pb.TagNumber(3)
  void clearEdgeName() => $_clearField(3);

  @$pb.TagNumber(4)
  $fixnum.Int64 get observedTimeUnixNano => $_getI64(3);
  @$pb.TagNumber(4)
  set observedTimeUnixNano($fixnum.Int64 value) => $_setInt64(3, value);
  @$pb.TagNumber(4)
  $core.bool hasObservedTimeUnixNano() => $_has(3);
  @$pb.TagNumber(4)
  void clearObservedTimeUnixNano() => $_clearField(4);

  @$pb.TagNumber(5)
  $pb.PbList<EdgeNodeSnapshot> get nodes => $_getList(4);

  @$pb.TagNumber(6)
  $pb.PbMap<$core.String, $core.String> get metadata => $_getMap(5);

  @$pb.TagNumber(7)
  $core.String get error => $_getSZ(6);
  @$pb.TagNumber(7)
  set error($core.String value) => $_setString(6, value);
  @$pb.TagNumber(7)
  $core.bool hasError() => $_has(6);
  @$pb.TagNumber(7)
  void clearError() => $_clearField(7);

  @$pb.TagNumber(8)
  $pb.PbList<EdgeCapabilitySummary> get capabilities => $_getList(7);
}

class EdgeCapabilitySummary extends $pb.GeneratedMessage {
  factory EdgeCapabilitySummary({
    $core.String? kind,
    $core.bool? available,
    $core.String? status,
    $core.String? summary,
  }) {
    final result = create();
    if (kind != null) result.kind = kind;
    if (available != null) result.available = available;
    if (status != null) result.status = status;
    if (summary != null) result.summary = summary;
    return result;
  }

  EdgeCapabilitySummary._();

  factory EdgeCapabilitySummary.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeCapabilitySummary.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeCapabilitySummary',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'kind')
    ..aOB(2, _omitFieldNames ? '' : 'available')
    ..aOS(3, _omitFieldNames ? '' : 'status')
    ..aOS(4, _omitFieldNames ? '' : 'summary')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCapabilitySummary clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCapabilitySummary copyWith(
          void Function(EdgeCapabilitySummary) updates) =>
      super.copyWith((message) => updates(message as EdgeCapabilitySummary))
          as EdgeCapabilitySummary;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeCapabilitySummary create() => EdgeCapabilitySummary._();
  @$core.override
  EdgeCapabilitySummary createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeCapabilitySummary getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeCapabilitySummary>(create);
  static EdgeCapabilitySummary? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get kind => $_getSZ(0);
  @$pb.TagNumber(1)
  set kind($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasKind() => $_has(0);
  @$pb.TagNumber(1)
  void clearKind() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.bool get available => $_getBF(1);
  @$pb.TagNumber(2)
  set available($core.bool value) => $_setBool(1, value);
  @$pb.TagNumber(2)
  $core.bool hasAvailable() => $_has(1);
  @$pb.TagNumber(2)
  void clearAvailable() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get status => $_getSZ(2);
  @$pb.TagNumber(3)
  set status($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasStatus() => $_has(2);
  @$pb.TagNumber(3)
  void clearStatus() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get summary => $_getSZ(3);
  @$pb.TagNumber(4)
  set summary($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasSummary() => $_has(3);
  @$pb.TagNumber(4)
  void clearSummary() => $_clearField(4);
}

class EdgeCommandRequest extends $pb.GeneratedMessage {
  factory EdgeCommandRequest({
    $core.String? requestId,
    $core.String? commandId,
    $core.String? targetSelector,
    $core.String? operation,
    $core.Iterable<$core.MapEntry<$core.String, $core.String>>? parameters,
  }) {
    final result = create();
    if (requestId != null) result.requestId = requestId;
    if (commandId != null) result.commandId = commandId;
    if (targetSelector != null) result.targetSelector = targetSelector;
    if (operation != null) result.operation = operation;
    if (parameters != null) result.parameters.addEntries(parameters);
    return result;
  }

  EdgeCommandRequest._();

  factory EdgeCommandRequest.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeCommandRequest.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeCommandRequest',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'requestId')
    ..aOS(2, _omitFieldNames ? '' : 'commandId')
    ..aOS(3, _omitFieldNames ? '' : 'targetSelector')
    ..aOS(4, _omitFieldNames ? '' : 'operation')
    ..m<$core.String, $core.String>(5, _omitFieldNames ? '' : 'parameters',
        entryClassName: 'EdgeCommandRequest.ParametersEntry',
        keyFieldType: $pb.PbFieldType.OS,
        valueFieldType: $pb.PbFieldType.OS,
        packageName: const $pb.PackageName('iop'))
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandRequest clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandRequest copyWith(void Function(EdgeCommandRequest) updates) =>
      super.copyWith((message) => updates(message as EdgeCommandRequest))
          as EdgeCommandRequest;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeCommandRequest create() => EdgeCommandRequest._();
  @$core.override
  EdgeCommandRequest createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeCommandRequest getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeCommandRequest>(create);
  static EdgeCommandRequest? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get requestId => $_getSZ(0);
  @$pb.TagNumber(1)
  set requestId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasRequestId() => $_has(0);
  @$pb.TagNumber(1)
  void clearRequestId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get commandId => $_getSZ(1);
  @$pb.TagNumber(2)
  set commandId($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasCommandId() => $_has(1);
  @$pb.TagNumber(2)
  void clearCommandId() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get targetSelector => $_getSZ(2);
  @$pb.TagNumber(3)
  set targetSelector($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasTargetSelector() => $_has(2);
  @$pb.TagNumber(3)
  void clearTargetSelector() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get operation => $_getSZ(3);
  @$pb.TagNumber(4)
  set operation($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasOperation() => $_has(3);
  @$pb.TagNumber(4)
  void clearOperation() => $_clearField(4);

  @$pb.TagNumber(5)
  $pb.PbMap<$core.String, $core.String> get parameters => $_getMap(4);
}

class EdgeCommandResponse extends $pb.GeneratedMessage {
  factory EdgeCommandResponse({
    $core.String? requestId,
    $core.String? commandId,
    $core.String? edgeId,
    $core.String? status,
    $core.String? summary,
    $core.String? error,
  }) {
    final result = create();
    if (requestId != null) result.requestId = requestId;
    if (commandId != null) result.commandId = commandId;
    if (edgeId != null) result.edgeId = edgeId;
    if (status != null) result.status = status;
    if (summary != null) result.summary = summary;
    if (error != null) result.error = error;
    return result;
  }

  EdgeCommandResponse._();

  factory EdgeCommandResponse.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeCommandResponse.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeCommandResponse',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'requestId')
    ..aOS(2, _omitFieldNames ? '' : 'commandId')
    ..aOS(3, _omitFieldNames ? '' : 'edgeId')
    ..aOS(4, _omitFieldNames ? '' : 'status')
    ..aOS(5, _omitFieldNames ? '' : 'summary')
    ..aOS(6, _omitFieldNames ? '' : 'error')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandResponse clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandResponse copyWith(void Function(EdgeCommandResponse) updates) =>
      super.copyWith((message) => updates(message as EdgeCommandResponse))
          as EdgeCommandResponse;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeCommandResponse create() => EdgeCommandResponse._();
  @$core.override
  EdgeCommandResponse createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeCommandResponse getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeCommandResponse>(create);
  static EdgeCommandResponse? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get requestId => $_getSZ(0);
  @$pb.TagNumber(1)
  set requestId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasRequestId() => $_has(0);
  @$pb.TagNumber(1)
  void clearRequestId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get commandId => $_getSZ(1);
  @$pb.TagNumber(2)
  set commandId($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasCommandId() => $_has(1);
  @$pb.TagNumber(2)
  void clearCommandId() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get edgeId => $_getSZ(2);
  @$pb.TagNumber(3)
  set edgeId($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasEdgeId() => $_has(2);
  @$pb.TagNumber(3)
  void clearEdgeId() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get status => $_getSZ(3);
  @$pb.TagNumber(4)
  set status($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasStatus() => $_has(3);
  @$pb.TagNumber(4)
  void clearStatus() => $_clearField(4);

  @$pb.TagNumber(5)
  $core.String get summary => $_getSZ(4);
  @$pb.TagNumber(5)
  set summary($core.String value) => $_setString(4, value);
  @$pb.TagNumber(5)
  $core.bool hasSummary() => $_has(4);
  @$pb.TagNumber(5)
  void clearSummary() => $_clearField(5);

  @$pb.TagNumber(6)
  $core.String get error => $_getSZ(5);
  @$pb.TagNumber(6)
  set error($core.String value) => $_setString(5, value);
  @$pb.TagNumber(6)
  $core.bool hasError() => $_has(5);
  @$pb.TagNumber(6)
  void clearError() => $_clearField(6);
}

class EdgeCommandEvent extends $pb.GeneratedMessage {
  factory EdgeCommandEvent({
    $core.String? commandId,
    $core.String? edgeId,
    $core.String? phase,
    $core.String? summary,
    $fixnum.Int64? occurredAt,
  }) {
    final result = create();
    if (commandId != null) result.commandId = commandId;
    if (edgeId != null) result.edgeId = edgeId;
    if (phase != null) result.phase = phase;
    if (summary != null) result.summary = summary;
    if (occurredAt != null) result.occurredAt = occurredAt;
    return result;
  }

  EdgeCommandEvent._();

  factory EdgeCommandEvent.fromBuffer($core.List<$core.int> data,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromBuffer(data, registry);
  factory EdgeCommandEvent.fromJson($core.String json,
          [$pb.ExtensionRegistry registry = $pb.ExtensionRegistry.EMPTY]) =>
      create()..mergeFromJson(json, registry);

  static final $pb.BuilderInfo _i = $pb.BuilderInfo(
      _omitMessageNames ? '' : 'EdgeCommandEvent',
      package: const $pb.PackageName(_omitMessageNames ? '' : 'iop'),
      createEmptyInstance: create)
    ..aOS(1, _omitFieldNames ? '' : 'commandId')
    ..aOS(2, _omitFieldNames ? '' : 'edgeId')
    ..aOS(3, _omitFieldNames ? '' : 'phase')
    ..aOS(4, _omitFieldNames ? '' : 'summary')
    ..aInt64(5, _omitFieldNames ? '' : 'occurredAt')
    ..hasRequiredFields = false;

  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandEvent clone() => deepCopy();
  @$core.Deprecated('See https://github.com/google/protobuf.dart/issues/998.')
  EdgeCommandEvent copyWith(void Function(EdgeCommandEvent) updates) =>
      super.copyWith((message) => updates(message as EdgeCommandEvent))
          as EdgeCommandEvent;

  @$core.override
  $pb.BuilderInfo get info_ => _i;

  @$core.pragma('dart2js:noInline')
  static EdgeCommandEvent create() => EdgeCommandEvent._();
  @$core.override
  EdgeCommandEvent createEmptyInstance() => create();
  @$core.pragma('dart2js:noInline')
  static EdgeCommandEvent getDefault() => _defaultInstance ??=
      $pb.GeneratedMessage.$_defaultFor<EdgeCommandEvent>(create);
  static EdgeCommandEvent? _defaultInstance;

  @$pb.TagNumber(1)
  $core.String get commandId => $_getSZ(0);
  @$pb.TagNumber(1)
  set commandId($core.String value) => $_setString(0, value);
  @$pb.TagNumber(1)
  $core.bool hasCommandId() => $_has(0);
  @$pb.TagNumber(1)
  void clearCommandId() => $_clearField(1);

  @$pb.TagNumber(2)
  $core.String get edgeId => $_getSZ(1);
  @$pb.TagNumber(2)
  set edgeId($core.String value) => $_setString(1, value);
  @$pb.TagNumber(2)
  $core.bool hasEdgeId() => $_has(1);
  @$pb.TagNumber(2)
  void clearEdgeId() => $_clearField(2);

  @$pb.TagNumber(3)
  $core.String get phase => $_getSZ(2);
  @$pb.TagNumber(3)
  set phase($core.String value) => $_setString(2, value);
  @$pb.TagNumber(3)
  $core.bool hasPhase() => $_has(2);
  @$pb.TagNumber(3)
  void clearPhase() => $_clearField(3);

  @$pb.TagNumber(4)
  $core.String get summary => $_getSZ(3);
  @$pb.TagNumber(4)
  set summary($core.String value) => $_setString(3, value);
  @$pb.TagNumber(4)
  $core.bool hasSummary() => $_has(3);
  @$pb.TagNumber(4)
  void clearSummary() => $_clearField(4);

  @$pb.TagNumber(5)
  $fixnum.Int64 get occurredAt => $_getI64(4);
  @$pb.TagNumber(5)
  set occurredAt($fixnum.Int64 value) => $_setInt64(4, value);
  @$pb.TagNumber(5)
  $core.bool hasOccurredAt() => $_has(4);
  @$pb.TagNumber(5)
  void clearOccurredAt() => $_clearField(5);
}

const $core.bool _omitFieldNames =
    $core.bool.fromEnvironment('protobuf.omit_field_names');
const $core.bool _omitMessageNames =
    $core.bool.fromEnvironment('protobuf.omit_message_names');
