/*
 Copyright 2013-2015 Jason Leyba

 Licensed under the Apache License, Version 2.0 (the "License");
 you may not use this file except in compliance with the License.
 You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

 Unless required by applicable law or agreed to in writing, software
 distributed under the License is distributed on an "AS IS" BASIS,
 WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 See the License for the specific language governing permissions and
 limitations under the License.
 */

// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: dossier.proto

package com.github.jsdossier.proto;

public interface BasePropertyOrBuilder extends
    // @@protoc_insertion_point(interface_extends:dossier.BaseProperty)
    com.google.protobuf.MessageOrBuilder {

  /**
   * <code>required string name = 1;</code>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  boolean hasName();
  /**
   * <code>required string name = 1;</code>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  java.lang.String getName();
  /**
   * <code>required string name = 1;</code>
   *
   * <pre>
   * The property's name; this should not be the fully qualified name.
   * </pre>
   */
  com.google.protobuf.ByteString
      getNameBytes();

  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  boolean hasSource();
  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  com.github.jsdossier.proto.SourceLink getSource();
  /**
   * <code>required .dossier.SourceLink source = 2;</code>
   *
   * <pre>
   * Link to the location in the source file where this property is defined.
   * </pre>
   */
  com.github.jsdossier.proto.SourceLinkOrBuilder getSourceOrBuilder();

  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  boolean hasDescription();
  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  com.github.jsdossier.proto.Comment getDescription();
  /**
   * <code>required .dossier.Comment description = 3;</code>
   *
   * <pre>
   * The property's block comment.
   * </pre>
   */
  com.github.jsdossier.proto.CommentOrBuilder getDescriptionOrBuilder();

  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  boolean hasDeprecation();
  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  com.github.jsdossier.proto.Deprecation getDeprecation();
  /**
   * <code>optional .dossier.Deprecation deprecation = 4;</code>
   *
   * <pre>
   * Whether this property is deprecated.
   * </pre>
   */
  com.github.jsdossier.proto.DeprecationOrBuilder getDeprecationOrBuilder();

  /**
   * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
   */
  boolean hasVisibility();
  /**
   * <code>optional .dossier.Visibility visibility = 5 [default = PUBLIC];</code>
   */
  com.github.jsdossier.proto.Visibility getVisibility();

  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  boolean hasTags();
  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  com.github.jsdossier.proto.Tags getTags();
  /**
   * <code>optional .dossier.Tags tags = 6;</code>
   */
  com.github.jsdossier.proto.TagsOrBuilder getTagsOrBuilder();

  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  boolean hasDefinedBy();
  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  com.github.jsdossier.proto.Comment getDefinedBy();
  /**
   * <code>optional .dossier.Comment defined_by = 7;</code>
   *
   * <pre>
   * The class or interface that defines this property.
   * </pre>
   */
  com.github.jsdossier.proto.CommentOrBuilder getDefinedByOrBuilder();

  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  boolean hasOverrides();
  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  com.github.jsdossier.proto.Comment getOverrides();
  /**
   * <code>optional .dossier.Comment overrides = 8;</code>
   *
   * <pre>
   * Parent class that defines this property.
   * </pre>
   */
  com.github.jsdossier.proto.CommentOrBuilder getOverridesOrBuilder();

  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  java.util.List<com.github.jsdossier.proto.Comment> 
      getSpecifiedByList();
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  com.github.jsdossier.proto.Comment getSpecifiedBy(int index);
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  int getSpecifiedByCount();
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  java.util.List<? extends com.github.jsdossier.proto.CommentOrBuilder> 
      getSpecifiedByOrBuilderList();
  /**
   * <code>repeated .dossier.Comment specified_by = 9;</code>
   *
   * <pre>
   * Interfaces that define this property.
   * </pre>
   */
  com.github.jsdossier.proto.CommentOrBuilder getSpecifiedByOrBuilder(
      int index);
}
