/**
 * Kubernetes
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { V1alpha2DevWorkspaceSpecTemplateCommands } from './v1alpha2DevWorkspaceSpecTemplateCommands';
import { V1alpha2DevWorkspaceSpecTemplateComponents } from './v1alpha2DevWorkspaceSpecTemplateComponents';
import { V1alpha2DevWorkspaceSpecTemplateEvents } from './v1alpha2DevWorkspaceSpecTemplateEvents';
import { V1alpha2DevWorkspaceSpecTemplateParent } from './v1alpha2DevWorkspaceSpecTemplateParent';
import { V1alpha2DevWorkspaceSpecTemplateProjects } from './v1alpha2DevWorkspaceSpecTemplateProjects';
import { V1alpha2DevWorkspaceSpecTemplateStarterProjects } from './v1alpha2DevWorkspaceSpecTemplateStarterProjects';

/**
* Structure of the devworkspace. This is also the specification of a devworkspace template.
*/
export class V1alpha2DevWorkspaceSpecTemplate {
    /**
    * Map of implementation-dependant free-form YAML attributes.
    */
    'attributes'?: object;
    /**
    * Predefined, ready-to-use, devworkspace-related commands
    */
    'commands'?: Array<V1alpha2DevWorkspaceSpecTemplateCommands>;
    /**
    * List of the devworkspace components, such as editor and plugins, user-provided containers, or other types of components
    */
    'components'?: Array<V1alpha2DevWorkspaceSpecTemplateComponents>;
    'events'?: V1alpha2DevWorkspaceSpecTemplateEvents;
    'parent'?: V1alpha2DevWorkspaceSpecTemplateParent;
    /**
    * Projects worked on in the devworkspace, containing names and sources locations
    */
    'projects'?: Array<V1alpha2DevWorkspaceSpecTemplateProjects>;
    /**
    * StarterProjects is a project that can be used as a starting point when bootstrapping new projects
    */
    'starterProjects'?: Array<V1alpha2DevWorkspaceSpecTemplateStarterProjects>;
    /**
    * Map of key-value variables used for string replacement in the devfile. Values can be referenced via {{variable-key}} to replace the corresponding value in string fields in the devfile. Replacement cannot be used for   - schemaVersion, metadata, parent source   - element identifiers, e.g. command id, component name, endpoint name, project name   - references to identifiers, e.g. in events, a command\'s component, container\'s volume mount name   - string enums, e.g. command group kind, endpoint exposure
    */
    'variables'?: { [key: string]: string; };

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "attributes",
            "baseName": "attributes",
            "type": "object"
        },
        {
            "name": "commands",
            "baseName": "commands",
            "type": "Array<V1alpha2DevWorkspaceSpecTemplateCommands>"
        },
        {
            "name": "components",
            "baseName": "components",
            "type": "Array<V1alpha2DevWorkspaceSpecTemplateComponents>"
        },
        {
            "name": "events",
            "baseName": "events",
            "type": "V1alpha2DevWorkspaceSpecTemplateEvents"
        },
        {
            "name": "parent",
            "baseName": "parent",
            "type": "V1alpha2DevWorkspaceSpecTemplateParent"
        },
        {
            "name": "projects",
            "baseName": "projects",
            "type": "Array<V1alpha2DevWorkspaceSpecTemplateProjects>"
        },
        {
            "name": "starterProjects",
            "baseName": "starterProjects",
            "type": "Array<V1alpha2DevWorkspaceSpecTemplateStarterProjects>"
        },
        {
            "name": "variables",
            "baseName": "variables",
            "type": "{ [key: string]: string; }"
        }    ];

    static getAttributeTypeMap() {
        return V1alpha2DevWorkspaceSpecTemplate.attributeTypeMap;
    }
}

