// SPDX-License-Identifier: MIT
pragma solidity 0.8.24;

/// @notice Exact integration surface implemented by the V3 governance executor.
/// @dev Release authorization remains a separate, human-controlled gate.
interface IV3GovernancePolicyCommitment {
    function governancePolicyCommitment() external view returns (bytes32);
    function isGovernanceCallAllowed(address target, uint256 value, bytes calldata data)
        external view returns (bool);
}

/// @notice Generated constants binding the reviewed policy and source scope.
library V3GovernancePolicyCommitment {
    bytes32 internal constant POLICY_SHA256 =
        hex"e3d0758853fd5110609fd8a734f91f5aa0583eafc2abf1531007cb941a36d297";
    bytes32 internal constant BASE_GOVERNANCE_POLICY_SHA256 =
        hex"c94784bc91de3b01c7ea27f945fbd27a3fb9a25f345bf681fc91fe119aee8eaf";
    bytes32 internal constant BASE_GOVERNANCE_POLICY_FILE_SHA256 =
        hex"199bc19b0dce98f18c8d8acddae0c793f1015864f64daef0e2dc0e6039d26b36";
    bytes32 internal constant SUPPORTED_MODULES_SHA256 =
        hex"d3f4d42fb1b6e2b434252fc876da7aa9ba1fc20528e42312102840a0f842c116";
    bytes32 internal constant DISPOSITIONS_SHA256 =
        hex"63934a0484e41b2ecd3ea32e7051c8d29b45eea2aeeb39c47bb3a103b5da0a4e";
    bytes32 internal constant GOVERNANCE_SOURCE_SHA256 =
        hex"993a66ca97ce77b6b240d8ed607e26d9755f86ecdf0361dffd70951d83ac8cfe";
    bytes32 internal constant GOVERNANCE_TEST_SHA256 =
        hex"dbdb7100407367e52c75a4839b5dd558a920e52364dd3265cca0f57c075876d8";
    bytes32 internal constant GOVERNANCE_ARTIFACT_SHA256 =
        hex"05f3786c5069b7cf9ca07a997341da5334289c49de6cab9c4091e0d3bc677762";
    bytes32 internal constant BASE_SNAPSHOT_MANIFEST_SHA256 =
        hex"f552579ad9a75c9b8bf4ff6caad73967e3589236750a420ee19553c85afb1238";
    bytes32 internal constant BASE_SNAPSHOT_CHECKER_SHA256 =
        hex"7c0a7391a5e5d3513bd924b1e650c3588a7657353eb41114ea819b7d858a2e86";
    bytes32 internal constant CANDIDATE_ID = hex"e4449c05058a0e09bdfc8730288acb0f3aaa6de00dec1f72283be26dc58c06e1";
}
