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

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

export default {
  $xmlns: {
    adtcore: 'http://www.sap.com/adt/core',
    srvb: 'http://www.sap.com/adt/ddic/ServiceBindings',
    ecore: 'http://www.eclipse.org/emf/2002/Ecore',
    xsd: 'http://www.w3.org/2001/XMLSchema',
    Q1: 'http://www.w3.org/2005/Atom',
  },
  $imports: [
    adtcore,
    atom,
  ],
  targetNamespace: 'http://www.sap.com/adt/ddic/ServiceBindings',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  element: [
    {
      name: 'serviceBinding',
      type: 'srvb:ServiceBinding',
    },
  ],
  complexType: [
    {
      name: 'ServiceBinding',
      complexContent: {
        extension: {
          base: 'adtcore:AdtMainObject',
          sequence: {
            element: [
              {
                name: 'serviceDefinition',
                type: 'adtcore:AdtObjectReference',
                minOccurs: '1',
                maxOccurs: '1',
              },
              {
                name: 'services',
                type: 'srvb:Service',
                minOccurs: '1',
                maxOccurs: 'unbounded',
              },
              {
                name: 'binding',
                type: 'srvb:Binding',
                minOccurs: '1',
                maxOccurs: '1',
              },
            ],
          },
          attribute: [
            {
              name: 'contract',
              type: 'xsd:string',
            },
            {
              name: 'releaseSupported',
              type: 'xsd:boolean',
            },
            {
              name: 'published',
              type: 'xsd:boolean',
            },
            {
              name: 'repair',
              type: 'xsd:boolean',
            },
            {
              name: 'bindingCreated',
              type: 'xsd:boolean',
            },
            {
              name: 'allowedAction',
              type: 'xsd:string',
              use: 'optional',
            },
          ],
        },
      },
    },
    {
      name: 'Service',
      sequence: {
        element: [
          {
            name: 'content',
            type: 'srvb:ServiceContent',
            minOccurs: '1',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'ServiceContent',
      sequence: {
        element: [
          {
            name: 'serviceDefinition',
            type: 'adtcore:AdtObjectReference',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'bindingTypeData',
            type: 'srvb:BindingTypeData',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'version',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'minorVersion',
          type: 'xsd:int',
          use: 'optional',
        },
        {
          name: 'patchVersion',
          type: 'xsd:int',
          use: 'optional',
        },
        {
          name: 'buildVersion',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'releaseState',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'Binding',
      sequence: {
        element: [
          {
            name: 'implementation',
            type: 'adtcore:AdtObjectReference',
            minOccurs: '1',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'type',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'version',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'category',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'calculatedType',
          type: 'xsd:string',
        },
      ],
    },
    {
      name: 'BindingTypeData',
      sequence: {
        element: [
          {
            ref: 'adtcore:content',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            ref: 'Q1:link',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
    },
  ],
  simpleType: [
    {
      name: 'BindingType',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'odataV4',
          },
          {
            value: 'odataV2',
          },
          {
            value: 'INA',
          },
          {
            value: 'SQL1',
          },
          {
            value: 'SQL',
          },
        ],
      },
    },
    {
      name: 'ReleaseState',
      restriction: {
        base: 'xsd:string',
        enumeration: [
          {
            value: 'RELEASED',
          },
          {
            value: 'NOT_RELEASED',
          },
          {
            value: 'DEPRECATED',
          },
          {
            value: 'DECOMMISSIONED',
          },
          {
            value: 'REVOKED',
          },
          {
            value: 'RELEASED_KU',
          },
          {
            value: 'NOT_TO_BE_RELEASED',
          },
          {
            value: 'NOT_TO_BE_RELEASED_STABLE',
          },
          {
            value: 'RELEASED_WITH_FEATURE_TOGGLE',
          },
        ],
      },
    },
  ],
} as const;
