load("//bazel:build.bzl", "redpanda_cc_library")

redpanda_cc_library(
    name = "types",
    hdrs = [
        "schemas/types.h",
    ],
    include_prefix = "security/audit",
    visibility = ["//visibility:public"],
    deps = [
        "//src/v/base",
        "//src/v/json",
        "//src/v/version",
    ],
)

redpanda_cc_library(
    name = "audit",
    srcs = [
        "audit_log_manager.cc",
        "logger.cc",
        "probes.cc",
        "schemas/hashing_utils.cc",
        "schemas/utils.cc",
    ],
    hdrs = [
        "audit_log_manager.h",
        "client_probe.h",
        "logger.h",
        "probe.h",
        "schemas/application_activity.h",
        "schemas/hashing_utils.h",
        "schemas/iam.h",
        "schemas/schemas.h",
        "schemas/utils.h",
        "types.h",
    ],
    implementation_deps = [
        "//src/v/kafka/data:record_batcher",
        "@abseil-cpp//absl/algorithm:container",
    ],
    include_prefix = "security/audit",
    visibility = ["//visibility:public"],
    deps = [
        ":types",
        "//src/v/base",
        "//src/v/cluster",
        "//src/v/config",
        "//src/v/hashing:combine",
        "//src/v/json",
        "//src/v/kafka/client",
        "//src/v/kafka/protocol",
        "//src/v/kafka/protocol:produce",
        "//src/v/kafka/protocol/schemata:add_offsets_to_txn_request",
        "//src/v/kafka/protocol/schemata:add_partitions_to_txn_request",
        "//src/v/kafka/protocol/schemata:alter_client_quotas_request",
        "//src/v/kafka/protocol/schemata:alter_configs_request",
        "//src/v/kafka/protocol/schemata:alter_partition_reassignments_request",
        "//src/v/kafka/protocol/schemata:create_acls_request",
        "//src/v/kafka/protocol/schemata:create_partitions_request",
        "//src/v/kafka/protocol/schemata:create_topics_request",
        "//src/v/kafka/protocol/schemata:delete_acls_request",
        "//src/v/kafka/protocol/schemata:delete_groups_request",
        "//src/v/kafka/protocol/schemata:delete_records_request",
        "//src/v/kafka/protocol/schemata:delete_topics_request",
        "//src/v/kafka/protocol/schemata:describe_acls_request",
        "//src/v/kafka/protocol/schemata:describe_client_quotas_request",
        "//src/v/kafka/protocol/schemata:describe_configs_request",
        "//src/v/kafka/protocol/schemata:describe_groups_request",
        "//src/v/kafka/protocol/schemata:describe_log_dirs_request",
        "//src/v/kafka/protocol/schemata:describe_producers_request",
        "//src/v/kafka/protocol/schemata:describe_transactions_request",
        "//src/v/kafka/protocol/schemata:end_txn_request",
        "//src/v/kafka/protocol/schemata:fetch_request",
        "//src/v/kafka/protocol/schemata:find_coordinator_request",
        "//src/v/kafka/protocol/schemata:heartbeat_request",
        "//src/v/kafka/protocol/schemata:incremental_alter_configs_request",
        "//src/v/kafka/protocol/schemata:init_producer_id_request",
        "//src/v/kafka/protocol/schemata:join_group_request",
        "//src/v/kafka/protocol/schemata:leave_group_request",
        "//src/v/kafka/protocol/schemata:list_groups_request",
        "//src/v/kafka/protocol/schemata:list_offset_request",
        "//src/v/kafka/protocol/schemata:list_partition_reassignments_request",
        "//src/v/kafka/protocol/schemata:list_transactions_request",
        "//src/v/kafka/protocol/schemata:metadata_request",
        "//src/v/kafka/protocol/schemata:offset_commit_request",
        "//src/v/kafka/protocol/schemata:offset_delete_request",
        "//src/v/kafka/protocol/schemata:offset_fetch_request",
        "//src/v/kafka/protocol/schemata:offset_for_leader_epoch_request",
        "//src/v/kafka/protocol/schemata:produce_request",
        "//src/v/kafka/protocol/schemata:produce_response",
        "//src/v/kafka/protocol/schemata:sync_group_request",
        "//src/v/kafka/protocol/schemata:txn_offset_commit_request",
        "//src/v/metrics",
        "//src/v/model",
        "//src/v/net",
        "//src/v/reflection:type_traits",
        "//src/v/security",
        "//src/v/security:request_auth",
        "//src/v/ssx:semaphore",
        "//src/v/storage:parser_utils",
        "//src/v/strings:string_switch",
        "//src/v/utils:functional",
        "//src/v/utils:retry",
        "//src/v/utils:unresolved_address",
        "//src/v/version",
        "@boost//:algorithm",
        "@boost//:multi_index",
        "@seastar",
    ],
)
