load("@prysm//tools/go:def.bzl", "go_library", "go_test")

go_library(
    name = "go_default_library",
    srcs = [
        "block_header_root.go",
        "builder_pending_payments_root.go",
        "builder_pending_withdrawals_root.go",
        "builders_root.go",
        "eth1_root.go",
        "execution_payload_availability_root.go",
        "field_root_attestation.go",
        "field_root_eth1.go",
        "field_root_validator.go",
        "field_root_vector.go",
        "historical_summaries_root.go",
        "log.go",
        "participation_bit_root.go",
        "pending_attestation_root.go",
        "pending_consolidations_root.go",
        "pending_deposits_root.go",
        "pending_partial_withdrawals_root.go",
        "proposer_lookahead_root.go",
        "reference.go",
        "sync_committee.root.go",
        "trie_helpers.go",
        "unrealized_justification.go",
        "validator_map_handler.go",
        "validator_reader.go",
        "validator_root.go",
    ],
    importpath = "github.com/OffchainLabs/prysm/v7/beacon-chain/state/stateutil",
    visibility = ["//visibility:public"],
    deps = [
        "//beacon-chain/core/transition/stateutils:go_default_library",
        "//config/fieldparams:go_default_library",
        "//config/params:go_default_library",
        "//consensus-types/primitives:go_default_library",
        "//container/multi-value-slice:go_default_library",
        "//container/trie:go_default_library",
        "//crypto/hash:go_default_library",
        "//crypto/hash/htr:go_default_library",
        "//encoding/bytesutil:go_default_library",
        "//encoding/ssz:go_default_library",
        "//math:go_default_library",
        "//proto/prysm/v1alpha1:go_default_library",
        "@com_github_pkg_errors//:go_default_library",
        "@com_github_sirupsen_logrus//:go_default_library",
    ],
)

go_test(
    name = "go_default_test",
    srcs = [
        "benchmark_test.go",
        "field_root_test.go",
        "field_root_validator_test.go",
        "proposer_lookahead_root_test.go",
        "reference_bench_test.go",
        "state_root_test.go",
        "trie_helpers_test.go",
        "unrealized_justification_test.go",
        "validator_root_test.go",
    ],
    embed = [":go_default_library"],
    deps = [
        "//beacon-chain/state:go_default_library",
        "//config/fieldparams:go_default_library",
        "//config/params:go_default_library",
        "//consensus-types/primitives:go_default_library",
        "//container/multi-value-slice:go_default_library",
        "//crypto/hash:go_default_library",
        "//encoding/bytesutil:go_default_library",
        "//encoding/ssz:go_default_library",
        "//math:go_default_library",
        "//proto/prysm/v1alpha1:go_default_library",
        "//runtime/interop:go_default_library",
        "//testing/assert:go_default_library",
        "//testing/require:go_default_library",
        "//testing/util:go_default_library",
    ],
)

go_test(
    name = "go_benchmark_test",
    size = "medium",
    srcs = ["benchmark_test.go"],
    args = [
        "-test.bench=.",
        "-test.benchmem",
        "-test.v",
    ],
    local = True,
    tags = [
        "benchmark",
        "no-cache",
    ],
    deps = [
        "//beacon-chain/state/stateutil:go_default_library",
        "//crypto/hash:go_default_library",
        "//encoding/ssz:go_default_library",
        "//proto/prysm/v1alpha1:go_default_library",
        "//testing/require:go_default_library",
        "//testing/util:go_default_library",
    ],
)
