# frozen_string_literal: true

# Copyright 2025 Google LLC
#
# 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
#
#     https://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.

# Auto-generated by gapic-generator-ruby. DO NOT EDIT!


module Google
  module Cloud
    module GeminiDataAnalytics
      module V1beta
        # A collection of context to apply to this conversation
        # @!attribute [rw] system_instruction
        #   @return [::String]
        #     Optional. The basic entry point for data owners creating domain knowledge
        #     for Agent.
        #
        #     Why: Business jargon (e.g., YTD revenue is calculated as…, Retirement Age
        #     is 65 in the USA, etc) and system instructions (e.g., answer like a Pirate)
        #     can help the model understand the business context around a user question.
        # @!attribute [rw] datasource_references
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::DatasourceReferences]
        #     Required. Data sources that are available for answering the question.
        # @!attribute [rw] options
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::ConversationOptions]
        #     Optional. Additional options for the conversation.
        # @!attribute [rw] example_queries
        #   @return [::Array<::Google::Cloud::GeminiDataAnalytics::V1beta::ExampleQuery>]
        #     Optional. A list of example queries, providing examples of relevant and
        #     commonly used SQL queries and their corresponding natural language queries
        #     optionally present.
        class Context
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Example of relevant and commonly used SQL query and its corresponding natural
        # language queries optionally present.
        # @!attribute [rw] sql_query
        #   @return [::String]
        #     Optional. The SQL query that should be generated to answer the natural
        #     language question. For example: "SELECT COUNT(*) FROM orders WHERE
        #     order_date BETWEEN '2024-01-01' AND '2024-01-31'"
        # @!attribute [rw] natural_language_question
        #   @return [::String]
        #     Optional. A natural language question that a user might ask.
        #     For example: "How many orders were placed last month?"
        class ExampleQuery
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Options for the conversation.
        # @!attribute [rw] chart
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::ChartOptions]
        #     Optional. Options for chart generation.
        # @!attribute [rw] analysis
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::AnalysisOptions]
        #     Optional. Options for analysis.
        class ConversationOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods
        end

        # Options for chart generation.
        # @!attribute [rw] image
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::ChartOptions::ImageOptions]
        #     Optional. When specified, the agent will render generated charts using the
        #     provided format. Defaults to no image.
        class ChartOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Options for rendering images of generated charts.
          # @!attribute [rw] no_image
          #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::ChartOptions::ImageOptions::NoImage]
          #     No image.
          #
          #     Note: The following fields are mutually exclusive: `no_image`, `svg`. If a field in that set is populated, all other fields in the set will automatically be cleared.
          # @!attribute [rw] svg
          #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::ChartOptions::ImageOptions::SvgOptions]
          #     SVG format.
          #
          #     Note: The following fields are mutually exclusive: `svg`, `no_image`. If a field in that set is populated, all other fields in the set will automatically be cleared.
          class ImageOptions
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods

            # No image.
            class NoImage
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end

            # SVG options.
            class SvgOptions
              include ::Google::Protobuf::MessageExts
              extend ::Google::Protobuf::MessageExts::ClassMethods
            end
          end
        end

        # Options for analysis.
        # @!attribute [rw] python
        #   @return [::Google::Cloud::GeminiDataAnalytics::V1beta::AnalysisOptions::Python]
        #     Optional. Options for Python analysis.
        class AnalysisOptions
          include ::Google::Protobuf::MessageExts
          extend ::Google::Protobuf::MessageExts::ClassMethods

          # Options for Python analysis.
          # @!attribute [rw] enabled
          #   @return [::Boolean]
          #     Optional. Whether to enable Python analysis.
          #     Defaults to false.
          class Python
            include ::Google::Protobuf::MessageExts
            extend ::Google::Protobuf::MessageExts::ClassMethods
          end
        end
      end
    end
  end
end
