interface IPredicate {
    /**
   * @notice Verify the deprecation of a state update
   * @param exit ABI encoded PlasmaExit data
   * @param inputUtxo ABI encoded Input UTXO data
   * @param challengeData RLP encoded data of the challenge reference tx that encodes the following fields
   * headerNumber Header block number of which the reference tx was a part of
   * blockProof Proof that the block header (in the child chain) is a leaf in the submitted merkle root
   * blockNumber Block number of which the reference tx is a part of
   * blockTime Reference tx block time
   * blocktxRoot Transactions root of block
   * blockReceiptsRoot Receipts root of block
   * receipt Receipt of the reference transaction
   * receiptProof Merkle proof of the reference receipt
   * branchMask Merkle proof branchMask for the receipt
   * logIndex Log Index to read from the receipt
   * tx Challenge transaction
   * txProof Merkle proof of the challenge tx
   * @return Whether or not the state is deprecated
   */
    function verifyDeprecation(
        bytes calldata exit,
        bytes calldata inputUtxo,
        bytes calldata challengeData
    ) external returns (bool);

    function interpretStateUpdate(bytes calldata state)
        external
        view
        returns (bytes memory);
    function onFinalizeExit(bytes calldata data) external;
}
function verifyDeprecation(
    bytes calldata exit,
    bytes calldata inputUtxo,
    bytes calldata challengeData
) external returns (bool);

/**
 * @notice Verify the deprecation of a state update
 * @param exit ABI encoded PlasmaExit data
 * @param inputUtxo ABI encoded Input UTXO data
 * @param challengeData RLP encoded data of the challenge reference tx that encodes the following fields
 * headerNumber Header block number of which the reference tx was a part of
 * blockProof Proof that the block header (in the child chain) is a leaf in the submitted merkle root
 * blockNumber Block number of which the reference tx is a part of
 * blockTime Reference tx block time
 * blocktxRoot Transactions root of block
 * blockReceiptsRoot Receipts root of block
 * receipt Receipt of the reference transaction
 * receiptProof Merkle proof of the reference receipt
 * branchMask Merkle proof branchMask for the receipt
 * logIndex Log Index to read from the receipt
 * tx Challenge transaction
 * txProof Merkle proof of the challenge tx
 * @return Whether or not the state is deprecated
 */