const defaultTagOrder = [
  {
    tags: [
      // Brief descriptions
      'summary',
      'typeSummary',

      // Module/file-level
      'module',
      'exports',
      'file',
      'fileoverview',
      'overview',
      'import',

      // Identifying (name, type)
      'template',
      'typedef',
      'interface',
      'record',
      'name',
      'kind',
      'type',
      'alias',
      'external',
      'host',
      'callback',
      'func',
      'function',
      'method',
      'class',
      'constructor',

      // Relationships
      'modifies',
      'mixes',
      'mixin',
      'mixinClass',
      'mixinFunction',
      'namespace',
      'borrows',
      'constructs',
      'lends',
      'implements',
      'requires',

      // Long descriptions
      'desc',
      'description',
      'classdesc',
      'tutorial',
      'copyright',
      'license',

      // Simple annotations

      // TypeScript
      'internal',
      'overload',

      'const',
      'constant',
      'final',
      'global',
      'readonly',
      'abstract',
      'virtual',
      'var',
      'member',
      'memberof',
      'memberof!',
      'inner',
      'instance',
      'inheritdoc',
      'inheritDoc',
      'override',
      'hideconstructor',

      // Core function/object info
      'param',
      'arg',
      'argument',
      'prop',
      'property',
      'return',
      'returns',

      // Important behavior details
      'async',
      'generator',
      'default',
      'defaultvalue',
      'enum',
      'augments',
      'extends',
      'throws',
      'exception',
      'yield',
      'yields',
      'event',
      'fires',
      'emits',
      'listens',
      'this',

      // TypeScript
      'satisfies',

      // Access
      'static',
      'private',
      'protected',
      'public',
      'access',
      'package',

      '-other',

      // Supplementary descriptions
      'see',
      'example',

      // METADATA

      // Other Closure (undocumented) metadata
      'closurePrimitive',
      'customElement',
      'expose',
      'hidden',
      'idGenerator',
      'meaning',
      'ngInject',
      'owner',
      'wizaction',

      // Other Closure (documented) metadata
      'define',
      'dict',
      'export',
      'externs',
      'implicitCast',
      'noalias',
      'nocollapse',
      'nocompile',
      'noinline',
      'nosideeffects',
      'polymer',
      'polymerBehavior',
      'preserve',
      'struct',
      'suppress',
      'unrestricted',

      // @homer0/prettier-plugin-jsdoc metadata
      'category',

      // Non-Closure metadata
      'ignore',
      'author',
      'version',
      'variation',
      'since',
      'deprecated',
      'todo',
    ],
  },
];

export default defaultTagOrder;
