/**
 * Copyright Amazon.com, Inc. or its affiliates. All Rights Reserved.
 * SPDX-License-Identifier: Apache-2.0.
 */

#pragma once
#include <aws/cleanrooms/CleanRooms_EXPORTS.h>
#include <aws/core/utils/memory/stl/AWSVector.h>
#include <aws/core/utils/memory/stl/AWSString.h>
#include <aws/cleanrooms/model/CollaborationPrivacyBudgetSummary.h>
#include <utility>

namespace Aws
{
template<typename RESULT_TYPE>
class AmazonWebServiceResult;

namespace Utils
{
namespace Json
{
  class JsonValue;
} // namespace Json
} // namespace Utils
namespace CleanRooms
{
namespace Model
{
  class ListCollaborationPrivacyBudgetsResult
  {
  public:
    AWS_CLEANROOMS_API ListCollaborationPrivacyBudgetsResult() = default;
    AWS_CLEANROOMS_API ListCollaborationPrivacyBudgetsResult(const Aws::AmazonWebServiceResult<Aws::Utils::Json::JsonValue>& result);
    AWS_CLEANROOMS_API ListCollaborationPrivacyBudgetsResult& operator=(const Aws::AmazonWebServiceResult<Aws::Utils::Json::JsonValue>& result);


    ///@{
    /**
     * <p>Summaries of the collaboration privacy budgets.</p>
     */
    inline const Aws::Vector<CollaborationPrivacyBudgetSummary>& GetCollaborationPrivacyBudgetSummaries() const { return m_collaborationPrivacyBudgetSummaries; }
    template<typename CollaborationPrivacyBudgetSummariesT = Aws::Vector<CollaborationPrivacyBudgetSummary>>
    void SetCollaborationPrivacyBudgetSummaries(CollaborationPrivacyBudgetSummariesT&& value) { m_collaborationPrivacyBudgetSummariesHasBeenSet = true; m_collaborationPrivacyBudgetSummaries = std::forward<CollaborationPrivacyBudgetSummariesT>(value); }
    template<typename CollaborationPrivacyBudgetSummariesT = Aws::Vector<CollaborationPrivacyBudgetSummary>>
    ListCollaborationPrivacyBudgetsResult& WithCollaborationPrivacyBudgetSummaries(CollaborationPrivacyBudgetSummariesT&& value) { SetCollaborationPrivacyBudgetSummaries(std::forward<CollaborationPrivacyBudgetSummariesT>(value)); return *this;}
    template<typename CollaborationPrivacyBudgetSummariesT = CollaborationPrivacyBudgetSummary>
    ListCollaborationPrivacyBudgetsResult& AddCollaborationPrivacyBudgetSummaries(CollaborationPrivacyBudgetSummariesT&& value) { m_collaborationPrivacyBudgetSummariesHasBeenSet = true; m_collaborationPrivacyBudgetSummaries.emplace_back(std::forward<CollaborationPrivacyBudgetSummariesT>(value)); return *this; }
    ///@}

    ///@{
    /**
     * <p>The pagination token that's used to fetch the next set of results.</p>
     */
    inline const Aws::String& GetNextToken() const { return m_nextToken; }
    template<typename NextTokenT = Aws::String>
    void SetNextToken(NextTokenT&& value) { m_nextTokenHasBeenSet = true; m_nextToken = std::forward<NextTokenT>(value); }
    template<typename NextTokenT = Aws::String>
    ListCollaborationPrivacyBudgetsResult& WithNextToken(NextTokenT&& value) { SetNextToken(std::forward<NextTokenT>(value)); return *this;}
    ///@}

    ///@{
    
    inline const Aws::String& GetRequestId() const { return m_requestId; }
    template<typename RequestIdT = Aws::String>
    void SetRequestId(RequestIdT&& value) { m_requestIdHasBeenSet = true; m_requestId = std::forward<RequestIdT>(value); }
    template<typename RequestIdT = Aws::String>
    ListCollaborationPrivacyBudgetsResult& WithRequestId(RequestIdT&& value) { SetRequestId(std::forward<RequestIdT>(value)); return *this;}
    ///@}
  private:

    Aws::Vector<CollaborationPrivacyBudgetSummary> m_collaborationPrivacyBudgetSummaries;
    bool m_collaborationPrivacyBudgetSummariesHasBeenSet = false;

    Aws::String m_nextToken;
    bool m_nextTokenHasBeenSet = false;

    Aws::String m_requestId;
    bool m_requestIdHasBeenSet = false;
  };

} // namespace Model
} // namespace CleanRooms
} // namespace Aws
