/*
 *  Licensed to the Apache Software Foundation (ASF) under one
 *  or more contributor license agreements.  See the NOTICE file
 *  distributed with this work for additional information
 *  regarding copyright ownership.  The ASF licenses this file
 *  to you under the Apache License, Version 2.0 (the
 *  "License"); you may not use this file except in compliance
 *  with the License.  You may obtain a copy of the License at
 *
 *    http://www.apache.org/licenses/LICENSE-2.0
 *
 *  Unless required by applicable law or agreed to in writing,
 *  software distributed under the License is distributed on an
 *  "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
 *  KIND, either express or implied.  See the License for the
 *  specific language governing permissions and limitations
 *  under the License.
 */

// Generated by scripts/generate-step-names.js — do not edit manually.
// Re-run `npm run generate-step-names` after changes to Gremlin.g4.

/**
 * Canonical camelCase Gremlin step names derived from the gremlin-language grammar.
 * Used to safely identify step names during normalization.
 */
export const GREMLIN_STEP_NAMES: ReadonlySet<string> = new Set([
  'E',
  'V',
  'addE',
  'addLabel',
  'addV',
  'aggregate',
  'all',
  'and',
  'any',
  'as',
  'asBool',
  'asDate',
  'asString',
  'barrier',
  'both',
  'bothE',
  'bothV',
  'branch',
  'by',
  'call',
  'cap',
  'choose',
  'coalesce',
  'coin',
  'combine',
  'concat',
  'conjoin',
  'connectedComponent',
  'constant',
  'count',
  'cyclicPath',
  'dateAdd',
  'dateDiff',
  'dedup',
  'difference',
  'discard',
  'disjunct',
  'drop',
  'dropLabel',
  'dropLabels',
  'element',
  'elementMap',
  'emit',
  'fail',
  'filter',
  'flatMap',
  'fold',
  'format',
  'from',
  'group',
  'groupCount',
  'has',
  'hasId',
  'hasKey',
  'hasLabel',
  'hasNot',
  'hasValue',
  'id',
  'identity',
  'in',
  'inE',
  'inV',
  'index',
  'inject',
  'intersect',
  'io',
  'is',
  'key',
  'lTrim',
  'label',
  'labels',
  'length',
  'limit',
  'local',
  'loops',
  'map',
  'match',
  'math',
  'max',
  'mean',
  'merge',
  'mergeE',
  'mergeV',
  'min',
  'none',
  'not',
  'option',
  'optional',
  'or',
  'order',
  'otherV',
  'out',
  'outE',
  'outV',
  'pageRank',
  'path',
  'peerPressure',
  'product',
  'profile',
  'project',
  'properties',
  'property',
  'propertyMap',
  'rTrim',
  'range',
  'read',
  'repeat',
  'replace',
  'reverse',
  'sack',
  'sample',
  'select',
  'shortestPath',
  'sideEffect',
  'simplePath',
  'skip',
  'split',
  'subgraph',
  'substring',
  'sum',
  'tail',
  'timeLimit',
  'times',
  'to',
  'toE',
  'toLower',
  'toUpper',
  'toV',
  'tree',
  'trim',
  'unfold',
  'union',
  'until',
  'value',
  'valueMap',
  'values',
  'where',
  'with',
  'write',
]);

/**
 * PascalCase equivalents of Gremlin step names, as used by Go and .NET dialects.
 * Used as an allowlist when converting PascalCase tokens to camelCase during normalization.
 */
export const GREMLIN_STEP_NAMES_PASCAL: ReadonlySet<string> = new Set([
  'E',
  'V',
  'AddE',
  'AddLabel',
  'AddV',
  'Aggregate',
  'All',
  'And',
  'Any',
  'As',
  'AsBool',
  'AsDate',
  'AsString',
  'Barrier',
  'Both',
  'BothE',
  'BothV',
  'Branch',
  'By',
  'Call',
  'Cap',
  'Choose',
  'Coalesce',
  'Coin',
  'Combine',
  'Concat',
  'Conjoin',
  'ConnectedComponent',
  'Constant',
  'Count',
  'CyclicPath',
  'DateAdd',
  'DateDiff',
  'Dedup',
  'Difference',
  'Discard',
  'Disjunct',
  'Drop',
  'DropLabel',
  'DropLabels',
  'Element',
  'ElementMap',
  'Emit',
  'Fail',
  'Filter',
  'FlatMap',
  'Fold',
  'Format',
  'From',
  'Group',
  'GroupCount',
  'Has',
  'HasId',
  'HasKey',
  'HasLabel',
  'HasNot',
  'HasValue',
  'Id',
  'Identity',
  'In',
  'InE',
  'InV',
  'Index',
  'Inject',
  'Intersect',
  'Io',
  'Is',
  'Key',
  'LTrim',
  'Label',
  'Labels',
  'Length',
  'Limit',
  'Local',
  'Loops',
  'Map',
  'Match',
  'Math',
  'Max',
  'Mean',
  'Merge',
  'MergeE',
  'MergeV',
  'Min',
  'None',
  'Not',
  'Option',
  'Optional',
  'Or',
  'Order',
  'OtherV',
  'Out',
  'OutE',
  'OutV',
  'PageRank',
  'Path',
  'PeerPressure',
  'Product',
  'Profile',
  'Project',
  'Properties',
  'Property',
  'PropertyMap',
  'RTrim',
  'Range',
  'Read',
  'Repeat',
  'Replace',
  'Reverse',
  'Sack',
  'Sample',
  'Select',
  'ShortestPath',
  'SideEffect',
  'SimplePath',
  'Skip',
  'Split',
  'Subgraph',
  'Substring',
  'Sum',
  'Tail',
  'TimeLimit',
  'Times',
  'To',
  'ToE',
  'ToLower',
  'ToUpper',
  'ToV',
  'Tree',
  'Trim',
  'Unfold',
  'Union',
  'Until',
  'Value',
  'ValueMap',
  'Values',
  'Where',
  'With',
  'Write',
]);
