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

import atom from './atom';

export default {
  $xmlns: {
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    xsd: 'http://www.w3.org/2001/XMLSchema',
    adtcore: 'http://www.sap.com/adt/core',
    atom: 'http://www.w3.org/2005/Atom',
  },
  $imports: [
    atom,
  ],
  targetNamespace: 'http://www.sap.com/adt/core',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  'xml:lang': 'en',
  element: [
    {
      name: 'mainObject',
      type: 'adtcore:AdtMainObject',
    },
    {
      name: 'objectReferences',
      type: 'adtcore:AdtObjectReferenceList',
    },
    {
      name: 'objectReference',
      type: 'adtcore:AdtObjectReference',
    },
    {
      name: 'content',
      type: 'adtcore:AdtContent',
    },
  ],
  complexType: [
    {
      name: 'AdtObject',
      sequence: {
        element: [
          {
            name: 'containerRef',
            type: 'adtcore:AdtObjectReference',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            ref: 'atom:link',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
          {
            name: 'adtTemplate',
            type: 'adtcore:AdtTemplate',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
          use: 'required',
        },
        {
          name: 'type',
          type: 'xsd:string',
          use: 'required',
        },
        {
          name: 'changedBy',
          type: 'adtcore:User',
        },
        {
          name: 'changedAt',
          type: 'xsd:dateTime',
        },
        {
          name: 'createdAt',
          type: 'xsd:dateTime',
        },
        {
          name: 'createdBy',
          type: 'adtcore:User',
        },
        {
          name: 'version',
          type: 'adtcore:AdtVersionEnum',
        },
        {
          name: 'description',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'descriptionTextLimit',
          type: 'xsd:int',
          use: 'optional',
        },
        {
          name: 'language',
          type: 'adtcore:Language',
          use: 'optional',
        },
      ],
    },
    {
      name: 'AdtMainObject',
      complexContent: {
        extension: {
          base: 'adtcore:AdtObject',
          sequence: {
            element: [
              {
                name: 'packageRef',
                type: 'adtcore:AdtPackageReference',
                minOccurs: '0',
                maxOccurs: '1',
              },
            ],
          },
          attribute: [
            {
              name: 'masterSystem',
              type: 'adtcore:System',
              use: 'optional',
            },
            {
              name: 'masterLanguage',
              type: 'adtcore:Language',
              use: 'optional',
            },
            {
              name: 'responsible',
              type: 'adtcore:User',
              use: 'optional',
            },
            {
              name: 'abapLanguageVersion',
              type: 'xsd:string',
              use: 'optional',
            },
          ],
        },
      },
    },
    {
      name: 'AdtObjectReferenceList',
      sequence: {
        element: [
          {
            ref: 'adtcore:objectReference',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'AdtObjectReference',
      sequence: {
        element: [
          {
            name: 'extension',
            type: 'adtcore:AdtExtension',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'uri',
          type: 'xsd:anyURI',
          use: 'optional',
        },
        {
          name: 'parentUri',
          type: 'xsd:anyURI',
          use: 'optional',
        },
        {
          name: 'type',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'name',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'packageName',
          type: 'adtcore:PackageName',
          use: 'optional',
        },
        {
          name: 'description',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'AdtExtension',
      final: '#all',
      sequence: {
        any: [
          {
            minOccurs: '0',
            maxOccurs: 'unbounded',
            namespace: '##other',
            processContents: 'lax',
          },
        ],
      },
    },
    {
      name: 'AdtTemplate',
      sequence: {
        element: [
          {
            name: 'adtProperty',
            type: 'adtcore:AdtTemplateProperty',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'AdtTemplateProperty',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'key',
              type: 'xsd:string',
            },
          ],
        },
      },
    },
    {
      name: 'AdtPackageReference',
      complexContent: {
        extension: {
          base: 'adtcore:AdtObjectReference',
        },
      },
    },
    {
      name: 'AdtSwitchReference',
      complexContent: {
        extension: {
          base: 'adtcore:AdtObjectReference',
          attribute: [
            {
              name: 'state',
              type: 'adtcore:AdtSwitchStateEnum',
            },
          ],
        },
      },
    },
    {
      name: 'AdtContent',
      simpleContent: {
        extension: {
          base: 'xsd:string',
          attribute: [
            {
              name: 'type',
              type: 'xsd:string',
            },
            {
              name: 'encoding',
              type: 'xsd:string',
            },
          ],
        },
      },
    },
  ],
  simpleType: [
    {
      name: 'PackageName',
      restriction: {
        base: 'xsd:string',
        minLength: [
          {
            value: '0',
          },
        ],
        maxLength: [
          {
            value: '30',
          },
        ],
        pattern: [
          {
            value: '[$/_A-Z]+[A-Z0-9_/]*',
          },
        ],
      },
    },
    {
      name: 'Language',
      restriction: {
        base: 'xsd:string',
        length: [
          {
            value: '2',
          },
        ],
        pattern: [
          {
            value: '([A-Z,a-z]*)',
          },
        ],
      },
    },
    {
      name: 'System',
      restriction: {
        base: 'xsd:string',
        minLength: [
          {
            value: '0',
          },
        ],
        maxLength: [
          {
            value: '10',
          },
        ],
      },
    },
    {
      name: 'User',
      restriction: {
        base: 'xsd:string',
        minLength: [
          {
            value: '0',
          },
        ],
        maxLength: [
          {
            value: '12',
          },
        ],
      },
    },
    {
      name: 'AdtVersionEnum',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'active',
          },
          {
            value: 'inactive',
          },
          {
            value: 'workingArea',
          },
          {
            value: 'new',
          },
          {
            value: 'partlyActive',
          },
          {
            value: '',
          },
          {
            value: 'activeWithInactiveVersion',
          },
        ],
      },
    },
    {
      name: 'AdtSwitchStateEnum',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'on',
          },
          {
            value: 'off',
          },
          {
            value: 'stand-by',
          },
          {
            value: '',
          },
          {
            value: 'undefined',
          },
        ],
      },
    },
  ],
} as const;
