// @generated by protoc-gen-es v2.10.2 with parameter "target=ts,import_extension=ts"
// @generated from file plm/v1/task.proto (package plm.v1, syntax proto3)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv2";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv2";
import type { LocalizedPose } from "../../geometry/v1/pose_pb.ts";
import { file_geometry_v1_pose } from "../../geometry/v1/pose_pb.ts";
import type { Vector3 } from "../../geometry/v1/vector3_pb.ts";
import { file_geometry_v1_vector3 } from "../../geometry/v1/vector3_pb.ts";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file plm/v1/task.proto.
 */
export const file_plm_v1_task: GenFile = /*@__PURE__*/
  fileDesc("ChFwbG0vdjEvdGFzay5wcm90bxIGcGxtLnYxIvMDCgtUYXNrTWVzc2FnZRIKCgJpZBgBIAEoCRIMCgRuYW1lGAIgASgJEhMKC2Rlc2NyaXB0aW9uGAMgASgJEhcKD3NlcXVlbmNlX251bWJlchgEIAEoAxIPCgdwYXJ0X2lkGAUgASgJEhAKCG1vZGVsX2lkGAYgASgJEiMKCXRhc2tfdHlwZRgHIAEoDjIQLnBsbS52MS5UYXNrVHlwZRIqCgZ0YXJnZXQYCCABKAsyGi5nZW9tZXRyeS52MS5Mb2NhbGl6ZWRQb3NlEiYKCGFwcHJvYWNoGAkgASgLMhQuZ2VvbWV0cnkudjEuVmVjdG9yMxIRCglwYXJlbnRfaWQYCiABKAkSEgoKYWdlbnRzX2lkcxgLIAMoCRITCgthc3NpZ25lZF90bxgMIAEoCRIgCgVzdGF0ZRgNIAEoDjIRLnBsbS52MS5UYXNrU3RhdGUSFQoNcHJlY29uZGl0aW9ucxgOIAMoCRISCgpkZXBlbmRhbnRzGA8gAygJEj8KFWFzc2lnbm1lbnRfcHJlZmVyZW5jZRgTIAEoDjIgLnBsbS52MS5UYXNrQXNzaWdubWVudFByZWZlcmVuY2USFAoMY2FuX3JlYXNzaWduGBAgASgIEg4KBmNhbl9kbxgRIAEoCBIQCghjYW5fdW5kbxgSIAEoCCKPAQoSVGFza1VwZGF0ZWRNZXNzYWdlEgoKAmlkGAEgASgJEhMKC2Fzc2lnbmVkX3RvGAIgASgJEiAKBXN0YXRlGAMgASgOMhEucGxtLnYxLlRhc2tTdGF0ZRIUCgxjYW5fcmVhc3NpZ24YBCABKAgSDgoGY2FuX2RvGAUgASgIEhAKCGNhbl91bmRvGAYgASgIKrABCglUYXNrU3RhdGUSGgoWVEFTS19TVEFURV9VTlNQRUNJRklFRBAAEiMKH1RBU0tfU1RBVEVfTUlTU0lOR19QUkVDT05ESVRJT04QARIWChJUQVNLX1NUQVRFX1dBSVRJTkcQAhIaChZUQVNLX1NUQVRFX0lOX1BST0dSRVNTEAMSGAoUVEFTS19TVEFURV9DT01QTEVURUQQBBIUChBUQVNLX1NUQVRFX0VSUk9SEAYq6QEKCFRhc2tUeXBlEhkKFVRBU0tfVFlQRV9VTlNQRUNJRklFRBAAEhUKEVRBU0tfVFlQRV9JTlNQRUNUEAESFAoQVEFTS19UWVBFX0ZBU1RFThACEhYKElRBU0tfVFlQRV9VTkZBU1RFThADEhMKD1RBU0tfVFlQRV9NT1VOVBAEEhUKEVRBU0tfVFlQRV9VTk1PVU5UEAUSEgoOVEFTS19UWVBFX01PVkUQBhIUChBUQVNLX1RZUEVfUkVNT1ZFEAcSEwoPVEFTS19UWVBFX0FQUExZEAgSEgoOVEFTS19UWVBFX1dJUEUQCSr2AQoYVGFza0Fzc2lnbm1lbnRQcmVmZXJlbmNlEioKJlRBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX1VOU1BFQ0lGSUVEEAASKwonVEFTS19BU1NJR05NRU5UX1BSRUZFUkVOQ0VfUFJFRkVSX0hVTUFOEAESKQolVEFTS19BU1NJR05NRU5UX1BSRUZFUkVOQ0VfT05MWV9IVU1BThACEisKJ1RBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX1BSRUZFUl9ST0JPVBADEikKJVRBU0tfQVNTSUdOTUVOVF9QUkVGRVJFTkNFX09OTFlfUk9CT1QQBEKMAQoKY29tLnBsbS52MUIJVGFza1Byb3RvUAFaMWdpdGh1Yi5jb20vY29ib3Rhci9wcm90b2NvbC9tZXNzYWdlcy9wbG0vdjE7cGxtdjGiAgNQWFiqAg9NZXNzYWdlcy5QbG0uVjHKAgZQbG1cVjHiAhJQbG1cVjFcR1BCTWV0YWRhdGHqAgdQbG06OlYxYgZwcm90bzM", [file_geometry_v1_pose, file_geometry_v1_vector3]);

/**
 * TODO: add required skill?
 * TODO: add tool_role?
 * TODO: add validation
 * TODO: add allowed_actors
 *
 * @generated from message plm.v1.TaskMessage
 */
export type TaskMessage = Message<"plm.v1.TaskMessage"> & {
  /**
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * @generated from field: string name = 2;
   */
  name: string;

  /**
   * TODO: rename to instruction_text
   *
   * @generated from field: string description = 3;
   */
  description: string;

  /**
   * @generated from field: int64 sequence_number = 4;
   */
  sequenceNumber: bigint;

  /**
   * @generated from field: string part_id = 5;
   */
  partId: string;

  /**
   * @generated from field: string model_id = 6;
   */
  modelId: string;

  /**
   * @generated from field: plm.v1.TaskType task_type = 7;
   */
  taskType: TaskType;

  /**
   * @generated from field: geometry.v1.LocalizedPose target = 8;
   */
  target?: LocalizedPose;

  /**
   * @generated from field: geometry.v1.Vector3 approach = 9;
   */
  approach?: Vector3;

  /**
   * @generated from field: string parent_id = 10;
   */
  parentId: string;

  /**
   * @generated from field: repeated string agents_ids = 11;
   */
  agentsIds: string[];

  /**
   * @generated from field: string assigned_to = 12;
   */
  assignedTo: string;

  /**
   * @generated from field: plm.v1.TaskState state = 13;
   */
  state: TaskState;

  /**
   * @generated from field: repeated string preconditions = 14;
   */
  preconditions: string[];

  /**
   * @generated from field: repeated string dependants = 15;
   */
  dependants: string[];

  /**
   * @generated from field: plm.v1.TaskAssignmentPreference assignment_preference = 19;
   */
  assignmentPreference: TaskAssignmentPreference;

  /**
   * @generated from field: bool can_reassign = 16;
   */
  canReassign: boolean;

  /**
   * @generated from field: bool can_do = 17;
   */
  canDo: boolean;

  /**
   * TODO: 'complete-importance': could be different levels of "this must be explicitly completed" or tie it together with user level, such that expertise level (expert, intermediate, novice) equal and above intermediate can {bulk, automatic, ... } complete and below must explicitly complete. This should potentially also be tied to the part and this field(s) can then be a custom override for this specific task.
   *
   * @generated from field: bool can_undo = 18;
   */
  canUndo: boolean;
};

/**
 * Describes the message plm.v1.TaskMessage.
 * Use `create(TaskMessageSchema)` to create a new message.
 */
export const TaskMessageSchema: GenMessage<TaskMessage> = /*@__PURE__*/
  messageDesc(file_plm_v1_task, 0);

/**
 * @generated from message plm.v1.TaskUpdatedMessage
 */
export type TaskUpdatedMessage = Message<"plm.v1.TaskUpdatedMessage"> & {
  /**
   * @generated from field: string id = 1;
   */
  id: string;

  /**
   * @generated from field: string assigned_to = 2;
   */
  assignedTo: string;

  /**
   * @generated from field: plm.v1.TaskState state = 3;
   */
  state: TaskState;

  /**
   * @generated from field: bool can_reassign = 4;
   */
  canReassign: boolean;

  /**
   * @generated from field: bool can_do = 5;
   */
  canDo: boolean;

  /**
   * @generated from field: bool can_undo = 6;
   */
  canUndo: boolean;
};

/**
 * Describes the message plm.v1.TaskUpdatedMessage.
 * Use `create(TaskUpdatedMessageSchema)` to create a new message.
 */
export const TaskUpdatedMessageSchema: GenMessage<TaskUpdatedMessage> = /*@__PURE__*/
  messageDesc(file_plm_v1_task, 1);

/**
 * @generated from enum plm.v1.TaskState
 */
export enum TaskState {
  /**
   * @generated from enum value: TASK_STATE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: TASK_STATE_MISSING_PRECONDITION = 1;
   */
  MISSING_PRECONDITION = 1,

  /**
   * @generated from enum value: TASK_STATE_WAITING = 2;
   */
  WAITING = 2,

  /**
   * @generated from enum value: TASK_STATE_IN_PROGRESS = 3;
   */
  IN_PROGRESS = 3,

  /**
   * @generated from enum value: TASK_STATE_COMPLETED = 4;
   */
  COMPLETED = 4,

  /**
   * @generated from enum value: TASK_STATE_ERROR = 6;
   */
  ERROR = 6,
}

/**
 * Describes the enum plm.v1.TaskState.
 */
export const TaskStateSchema: GenEnum<TaskState> = /*@__PURE__*/
  enumDesc(file_plm_v1_task, 0);

/**
 * @generated from enum plm.v1.TaskType
 */
export enum TaskType {
  /**
   * @generated from enum value: TASK_TYPE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: TASK_TYPE_INSPECT = 1;
   */
  INSPECT = 1,

  /**
   * @generated from enum value: TASK_TYPE_FASTEN = 2;
   */
  FASTEN = 2,

  /**
   * @generated from enum value: TASK_TYPE_UNFASTEN = 3;
   */
  UNFASTEN = 3,

  /**
   * @generated from enum value: TASK_TYPE_MOUNT = 4;
   */
  MOUNT = 4,

  /**
   * @generated from enum value: TASK_TYPE_UNMOUNT = 5;
   */
  UNMOUNT = 5,

  /**
   * @generated from enum value: TASK_TYPE_MOVE = 6;
   */
  MOVE = 6,

  /**
   * @generated from enum value: TASK_TYPE_REMOVE = 7;
   */
  REMOVE = 7,

  /**
   * @generated from enum value: TASK_TYPE_APPLY = 8;
   */
  APPLY = 8,

  /**
   * @generated from enum value: TASK_TYPE_WIPE = 9;
   */
  WIPE = 9,
}

/**
 * Describes the enum plm.v1.TaskType.
 */
export const TaskTypeSchema: GenEnum<TaskType> = /*@__PURE__*/
  enumDesc(file_plm_v1_task, 1);

/**
 * @generated from enum plm.v1.TaskAssignmentPreference
 */
export enum TaskAssignmentPreference {
  /**
   * @generated from enum value: TASK_ASSIGNMENT_PREFERENCE_UNSPECIFIED = 0;
   */
  UNSPECIFIED = 0,

  /**
   * @generated from enum value: TASK_ASSIGNMENT_PREFERENCE_PREFER_HUMAN = 1;
   */
  PREFER_HUMAN = 1,

  /**
   * @generated from enum value: TASK_ASSIGNMENT_PREFERENCE_ONLY_HUMAN = 2;
   */
  ONLY_HUMAN = 2,

  /**
   * @generated from enum value: TASK_ASSIGNMENT_PREFERENCE_PREFER_ROBOT = 3;
   */
  PREFER_ROBOT = 3,

  /**
   * @generated from enum value: TASK_ASSIGNMENT_PREFERENCE_ONLY_ROBOT = 4;
   */
  ONLY_ROBOT = 4,
}

/**
 * Describes the enum plm.v1.TaskAssignmentPreference.
 */
export const TaskAssignmentPreferenceSchema: GenEnum<TaskAssignmentPreference> = /*@__PURE__*/
  enumDesc(file_plm_v1_task, 2);

