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

import adtcore from './adtcore';
import atom from './atom';

export default {
  $xmlns: {
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    xsd: 'http://www.w3.org/2001/XMLSchema',
    atom: 'http://www.w3.org/2005/Atom',
    adtcore: 'http://www.sap.com/adt/core',
    abapsource: 'http://www.sap.com/adt/abapsource',
  },
  $imports: [
    adtcore,
    atom,
  ],
  targetNamespace: 'http://www.sap.com/adt/abapsource',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  element: [
    {
      name: 'syntaxConfigurations',
      type: 'abapsource:AbapSyntaxConfigurations',
    },
    {
      name: 'syntaxConfiguration',
      type: 'abapsource:AbapSyntaxConfiguration',
    },
  ],
  complexType: [
    {
      name: 'AbapSourceMainObject',
      complexContent: {
        extension: {
          base: 'adtcore:AdtMainObject',
          sequence: {
            element: [
              {
                name: 'template',
                type: 'abapsource:AbapSourceTemplate',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'syntaxConfiguration',
                type: 'abapsource:AbapSyntaxConfiguration',
                minOccurs: '0',
                maxOccurs: '1',
              },
            ],
          },
          attribute: [
            {
              name: 'sourceUri',
              type: 'xsd:string',
            },
            {
              name: 'sourceObjectStatus',
              type: 'abapsource:AbapSourceObjectStatus',
            },
            {
              name: 'fixPointArithmetic',
              type: 'xsd:boolean',
            },
            {
              name: 'activeUnicodeCheck',
              type: 'xsd:boolean',
            },
          ],
        },
      },
    },
    {
      name: 'AbapSourceTemplate',
      sequence: {
        element: [
          {
            name: 'property',
            type: 'abapsource:AbapSourceTemplateProperty',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'AbapSourceTemplateProperty',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'key',
              type: 'xsd:string',
            },
          ],
        },
      },
    },
    {
      name: 'AbapSourceObject',
      complexContent: {
        extension: {
          base: 'adtcore:AdtObject',
          attribute: [
            {
              name: 'sourceUri',
              type: 'xsd:string',
            },
          ],
        },
      },
    },
    {
      name: 'AbapSyntaxConfiguration',
      sequence: {
        element: [
          {
            name: 'language',
            type: 'abapsource:AbapLanguage',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'objectUsage',
            type: 'abapsource:AbapObjectUsage',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'AbapSyntaxConfigurations',
      sequence: {
        element: [
          {
            ref: 'abapsource:syntaxConfiguration',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
    },
    {
      name: 'AbapLanguage',
      sequence: {
        element: [
          {
            name: 'version',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'description',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            ref: 'atom:link',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
    },
    {
      name: 'AbapObjectUsage',
      sequence: {
        element: [
          {
            ref: 'atom:link',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'restricted',
          type: 'xsd:boolean',
        },
      ],
    },
  ],
  simpleType: [
    {
      name: 'AbapSourceObjectStatus',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'SAPStandardProduction',
          },
          {
            value: 'customerProduction',
          },
          {
            value: 'system',
          },
          {
            value: 'test',
          },
        ],
      },
    },
    {
      name: 'AbapSourceObjectVisibility',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'private',
          },
          {
            value: 'protected',
          },
          {
            value: 'package',
          },
          {
            value: 'public',
          },
        ],
      },
    },
  ],
} as const;
