load("//tools:copts.bzl", "COPTS")

cc_library(
    name = "mcts_types",
    hdrs = ["MCTSTypes.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
)

cc_library(
    name = "mcts_action",
    hdrs = ["MCTSAction.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
)

cc_library(
    name = "mcts_game_state",
    hdrs = ["MCTSGameState.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
    deps = [
        ":mcts_types",
    ],
)

cc_library(
    name = "mcts_game_engine",
    srcs = ["MCTSGameEngine.cpp"],
    hdrs = ["MCTSGameEngine.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
    deps = [
        ":mcts_action",
        ":mcts_game_state",
        ":mcts_types",
    ],
)

cc_library(
    name = "mcts_node",
    hdrs = ["MCTSNode.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai:__pkg__",
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
    deps = [
        ":mcts_action",
        ":mcts_game_state",
        ":mcts_types",
    ],
)

cc_library(
    name = "abstract_mcts_ai",
    srcs = ["AbstractMCTSAI.cpp"],
    hdrs = ["AbstractMCTSAI.hpp"],
    copts = COPTS,
    visibility = [
        "//src/main/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/common/mcts:__subpackages__",
        "//src/test/cpp/net/eagle0/shardok/ai/mcts:__subpackages__",
    ],
    deps = [
        ":mcts_action",
        ":mcts_game_engine",
        ":mcts_game_state",
        ":mcts_node",
        ":mcts_types",
    ],
)

# Individual targets are exposed above - no need for a catch-all target
# Each component should be imported explicitly by its consumers
