/**
* Copyright (c) 2017-present, Facebook, Inc.
* All rights reserved.
*
* This source code is licensed under the BSD-style license found in the
* LICENSE file in the root directory of this source tree. An additional grant
* of patent rights can be found in the PATENTS file in the same directory.
*/
package com.facebook.litho.specmodels.model;
import java.lang.annotation.Annotation;
import java.util.List;
import com.squareup.javapoet.AnnotationSpec;
import com.squareup.javapoet.TypeName;
/**
* Model that is an abstract representation of a method param.
*/
public interface MethodParamModel {
/**
* @return the type of the param.
*/
TypeName getType();
/**
* @return the name of the param.
*/
String getName();
/**
* @return all components library annotations that are on the param.
*/
List<Annotation> getAnnotations();
/**
* @return all non-library annotations that are on the param.
*/
List<AnnotationSpec> getExternalAnnotations();
/**
* @return the object that this model represents.
*/
Object getRepresentedObject();
}