# Copyright 2026 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.

module(
    name = "com_google_mpact-sim",
    version = "1.0.0",
)

# Core Dependencies
bazel_dep(
    name = "abseil-cpp",
    version = "20240116.2",
)
bazel_dep(
    name = "protobuf",
    version = "29.0",
    repo_name = "com_google_protobuf",
)
bazel_dep(
    name = "googletest",
    version = "1.14.0.bcr.1",
    repo_name = "com_google_googletest",
)
bazel_dep(
    name = "re2",
    version = "2023-11-01",
    repo_name = "com_googlesource_code_re2",
)
bazel_dep(
    name = "rules_license",
    version = "1.0.0",
)
bazel_dep(
    name = "bazel_skylib",
    version = "1.7.1",
)
bazel_dep(
    name = "rules_cc",
    version = "0.1.3",
)

# In MODULE.bazel
non_module_deps = use_extension(
    "//:extensions.bzl",
    "non_module_deps",
)
use_repo(
    non_module_deps,
    "com_github_serge1_elfio",
    "org_antlr4_cpp_runtime",
    "org_antlr_tool",
)
