/**
 * ****************************************************************************
 *   Copyright (c) 2020 CEA LIST.
 *  
 *  
 *   All rights reserved. This program and the accompanying materials
 *   are made available under the terms of the Eclipse Public License 2.0
 *   which accompanies this distribution, and is available at
 *   https://www.eclipse.org/legal/epl-2.0/
 *  
 *   SPDX-License-Identifier: EPL-2.0
 *  
 *   Contributors:
 *    Asma Smaoui (CEA LIST) asma.smaoui@cea.fr - Initial API and implementation
 *  
 *  ****************************************************************************
 */
package io.shell.admin.aas._1._0;


/**
 * <!-- begin-user-doc -->
 * A representation of the model object '<em><b>Reference Element T</b></em>'.
 * <!-- end-user-doc -->
 *
 * <p>
 * The following features are supported:
 * </p>
 * <ul>
 *   <li>{@link io.shell.admin.aas._1._0.ReferenceElementT#getValue <em>Value</em>}</li>
 * </ul>
 *
 * @see io.shell.admin.aas._1._0._0Package#getReferenceElementT()
 * @model extendedMetaData="name='referenceElement_t' kind='elementOnly'"
 * @generated
 */
public interface ReferenceElementT extends SubmodelElementAbstractT {
	/**
	 * Returns the value of the '<em><b>Value</b></em>' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @return the value of the '<em>Value</em>' containment reference.
	 * @see #setValue(ReferenceT)
	 * @see io.shell.admin.aas._1._0._0Package#getReferenceElementT_Value()
	 * @model containment="true" required="true"
	 *        extendedMetaData="kind='element' name='value' namespace='##targetNamespace'"
	 * @generated
	 */
	ReferenceT getValue();

	/**
	 * Sets the value of the '{@link io.shell.admin.aas._1._0.ReferenceElementT#getValue <em>Value</em>}' containment reference.
	 * <!-- begin-user-doc -->
	 * <!-- end-user-doc -->
	 * @param value the new value of the '<em>Value</em>' containment reference.
	 * @see #getValue()
	 * @generated
	 */
	void setValue(ReferenceT value);

} // ReferenceElementT
