/**
 * Auto-generated schema from XSD
 * 
 * DO NOT EDIT - Generated by ts-xsd codegen
 * Source: xsd/sap/packagesV1.xsd
 */

import adtcore from './adtcore';

export default {
  $xmlns: {
    adtcore: 'http://www.sap.com/adt/core',
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    xsd: 'http://www.w3.org/2001/XMLSchema',
    pak: 'http://www.sap.com/adt/packages',
  },
  $imports: [
    adtcore,
  ],
  targetNamespace: 'http://www.sap.com/adt/packages',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  element: [
    {
      name: 'package',
      type: 'pak:Package',
    },
    {
      name: 'packageTree',
      type: 'pak:PackageTree',
    },
  ],
  complexType: [
    {
      name: 'Package',
      complexContent: {
        extension: {
          base: 'adtcore:AdtMainObject',
          sequence: {
            element: [
              {
                name: 'attributes',
                type: 'pak:Attributes',
              },
              {
                name: 'superPackage',
                type: 'adtcore:AdtPackageReference',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'extensionAlias',
                type: 'pak:ExtensionAlias',
              },
              {
                name: 'switch',
                type: 'adtcore:AdtSwitchReference',
              },
              {
                name: 'applicationComponent',
                type: 'pak:ApplicationComponent',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'transport',
                type: 'pak:TransportProperties',
              },
              {
                name: 'translation',
                type: 'pak:Translation',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'useAccesses',
                type: 'pak:UseAccesses',
              },
              {
                name: 'packageInterfaces',
                type: 'pak:PackageInterfaces',
              },
              {
                name: 'subPackages',
                type: 'pak:SubPackages',
              },
            ],
          },
        },
      },
    },
    {
      name: 'Attributes',
      attribute: [
        {
          name: 'packageType',
          type: 'pak:PackageType',
          use: 'required',
        },
        {
          name: 'isPackageTypeEditable',
          type: 'xsd:boolean',
        },
        {
          name: 'isAddingObjectsAllowed',
          type: 'xsd:boolean',
        },
        {
          name: 'isAddingObjectsAllowedEditable',
          type: 'xsd:boolean',
        },
        {
          name: 'isEncapsulated',
          type: 'xsd:boolean',
        },
        {
          name: 'isEncapsulationEditable',
          type: 'xsd:boolean',
        },
        {
          name: 'isEncapsulationVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'recordChanges',
          type: 'xsd:boolean',
        },
        {
          name: 'isRecordChangesEditable',
          type: 'xsd:boolean',
        },
        {
          name: 'isSwitchVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'languageVersion',
          type: 'pak:ABAPLanguageVersion',
          use: 'optional',
        },
        {
          name: 'isLanguageVersionEditable',
          type: 'xsd:boolean',
          use: 'optional',
        },
        {
          name: 'isLanguageVersionVisible',
          type: 'xsd:boolean',
          use: 'optional',
        },
      ],
    },
    {
      name: 'TransportProperties',
      sequence: {
        element: [
          {
            name: 'softwareComponent',
            type: 'pak:SoftwareComponent',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'transportLayer',
            type: 'pak:TransportLayer',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'SoftwareComponent',
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
        },
        {
          name: 'description',
          type: 'xsd:string',
        },
        {
          name: 'type',
          type: 'xsd:string',
        },
        {
          name: 'typeDescription',
          type: 'xsd:string',
        },
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'TransportLayer',
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
        },
        {
          name: 'description',
          type: 'xsd:string',
        },
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'ApplicationComponent',
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
        },
        {
          name: 'description',
          type: 'xsd:string',
        },
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'ExtensionAlias',
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
        },
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'Translation',
      attribute: [
        {
          name: 'relevance',
          type: 'xsd:string',
        },
        {
          name: 'relevanceDescription',
          type: 'xsd:string',
        },
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'UseAccesses',
      sequence: {
        element: [
          {
            name: 'useAccess',
            type: 'pak:UseAccess',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'UseAccess',
      sequence: {
        element: [
          {
            name: 'packageInterfaceRef',
            type: 'adtcore:AdtObjectReference',
          },
          {
            name: 'packageRef',
            type: 'adtcore:AdtPackageReference',
          },
        ],
      },
      attribute: [
        {
          name: 'severity',
          type: 'pak:Severity',
        },
      ],
    },
    {
      name: 'PackageInterfaces',
      sequence: {
        element: [
          {
            name: 'packageInterfaceRef',
            type: 'adtcore:AdtObjectReference',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'SubPackages',
      sequence: {
        element: [
          {
            name: 'packageRef',
            type: 'adtcore:AdtObjectReference',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
    },
    {
      name: 'PackageTree',
      sequence: {
        element: [
          {
            name: 'treeNode',
            type: 'pak:TreeNode',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'isSuperTree',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'TreeNode',
      complexContent: {
        extension: {
          base: 'adtcore:AdtObjectReference',
          sequence: {
            element: [
              {
                name: 'superPackageRef',
                type: 'adtcore:AdtObjectReference',
              },
              {
                name: 'packageInterfaces',
                type: 'pak:PackageInterfaces',
              },
            ],
          },
          attribute: [
            {
              name: 'isEncapsulated',
              type: 'xsd:boolean',
            },
            {
              name: 'hasSubpackages',
              type: 'xsd:boolean',
            },
            {
              name: 'hasInterfaces',
              type: 'xsd:boolean',
            },
          ],
        },
      },
    },
  ],
  simpleType: [
    {
      name: 'PackageType',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'structure',
          },
          {
            value: 'main',
          },
          {
            value: 'development',
          },
          {
            value: '',
          },
        ],
      },
    },
    {
      name: 'Severity',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'none',
          },
          {
            value: 'error',
          },
          {
            value: 'warning',
          },
          {
            value: 'information',
          },
          {
            value: 'obsolet',
          },
          {
            value: '',
          },
        ],
      },
    },
    {
      name: 'ABAPLanguageVersion',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: '2',
          },
          {
            value: '5',
          },
          {
            value: '',
          },
        ],
      },
    },
  ],
} as const;
