/**
 * Auto-generated schema from XSD
 * 
 * DO NOT EDIT - Generated by ts-xsd codegen
 * Source: xsd/sap/tabletype.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',
    ttyp: 'http://www.sap.com/dictionary/tabletype',
  },
  $imports: [
    adtcore,
  ],
  targetNamespace: 'http://www.sap.com/dictionary/tabletype',
  attributeFormDefault: 'qualified',
  elementFormDefault: 'qualified',
  element: [
    {
      name: 'tableType',
      type: 'ttyp:TableType',
    },
  ],
  complexType: [
    {
      name: 'TableType',
      complexContent: {
        extension: {
          base: 'adtcore:AdtMainObject',
          sequence: {
            element: [
              {
                name: 'rowType',
                type: 'ttyp:RowType',
              },
              {
                name: 'initialRowCount',
                type: 'xsd:int',
                minOccurs: '0',
                maxOccurs: '1',
              },
              {
                name: 'accessType',
                type: 'xsd:string',
              },
              {
                name: 'primaryKey',
                type: 'ttyp:PrimaryKey',
              },
              {
                name: 'secondaryKeys',
                type: 'ttyp:SecondaryKeys',
              },
              {
                name: 'valueHelps',
                type: 'ttyp:ValueHelps',
              },
            ],
          },
        },
      },
    },
    {
      name: 'RowType',
      sequence: {
        element: [
          {
            name: 'typeKind',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'typeName',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'builtInType',
            type: 'ttyp:BuiltInType',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'rangeType',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'BuiltInType',
      sequence: {
        element: [
          {
            name: 'dataType',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'length',
            type: 'xsd:int',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'decimals',
            type: 'xsd:int',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'PrimaryKey',
      sequence: {
        element: [
          {
            name: 'definition',
            type: 'xsd:string',
          },
          {
            name: 'kind',
            type: 'xsd:string',
          },
          {
            name: 'components',
            type: 'ttyp:KeyComponents',
            minOccurs: '0',
            maxOccurs: '1',
          },
          {
            name: 'alias',
            type: 'xsd:string',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'isVisible',
          type: 'xsd:boolean',
          use: 'optional',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
          use: 'optional',
        },
      ],
    },
    {
      name: 'SecondaryKeys',
      sequence: {
        element: [
          {
            name: 'allowed',
            type: 'xsd:string',
          },
          {
            name: 'secondaryKey',
            type: 'ttyp:SecondaryKey',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'isVisible',
          type: 'xsd:boolean',
          use: 'optional',
        },
        {
          name: 'isEditable',
          type: 'xsd:boolean',
          use: 'optional',
        },
      ],
    },
    {
      name: 'SecondaryKey',
      sequence: {
        element: [
          {
            name: 'components',
            type: 'ttyp:KeyComponents',
            minOccurs: '0',
            maxOccurs: '1',
          },
        ],
      },
      attribute: [
        {
          name: 'identifier',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'description',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'language',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'access',
          type: 'xsd:string',
          use: 'optional',
        },
        {
          name: 'definition',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
    {
      name: 'KeyComponents',
      sequence: {
        element: [
          {
            name: 'component',
            type: 'ttyp:KeyComponent',
            minOccurs: '0',
            maxOccurs: 'unbounded',
          },
        ],
      },
      attribute: [
        {
          name: 'isVisible',
          type: 'xsd:boolean',
        },
      ],
    },
    {
      name: 'KeyComponent',
      attribute: [
        {
          name: 'name',
          type: 'xsd:string',
        },
      ],
    },
    {
      name: 'ValueHelps',
      sequence: {
        element: [
          {
            name: 'typeKindValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'keyDefinitionValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'keyKindValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'accessTypeValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'secKeyAccessValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'secKeyDefinitionValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
          {
            name: 'secKeyAllowedValues',
            type: 'ttyp:ValueHelpList',
            minOccurs: '1',
            maxOccurs: '1',
          },
        ],
      },
    },
    {
      name: 'ValueHelpList',
      sequence: {
        element: [
          {
            name: 'valueHelp',
            type: 'ttyp:ValueHelp',
            minOccurs: '1',
            maxOccurs: 'unbounded',
          },
        ],
      },
    },
    {
      name: 'ValueHelp',
      attribute: [
        {
          name: 'key',
          type: 'xsd:string',
          use: 'required',
        },
        {
          name: 'value',
          type: 'xsd:string',
          use: 'required',
        },
        {
          name: 'description',
          type: 'xsd:string',
          use: 'optional',
        },
      ],
    },
  ],
} as const;
