# This file was auto generated by Styx.
# Do not edit this file directly.

import typing
import pathlib
from styxdefs import *
import dataclasses

VNO_MATCH_CHECK_METADATA = Metadata(
    id="d1efb9fab3c72ba5b84a4f1cb65492e1bcaadf76.boutiques",
    name="vno_match_check",
    package="freesurfer",
    container_image_tag="freesurfer/freesurfer:7.4.1",
)


class VnoMatchCheckOutputs(typing.NamedTuple):
    """
    Output object returned when calling `vno_match_check(...)`.
    """
    root: OutputPathType
    """Output root folder. This is the root folder for all outputs."""


def vno_match_check(
    subjid: str,
    debug: bool = False,
    right_hemi: bool = False,
    left_hemi: bool = False,
    runner: Runner | None = None,
) -> VnoMatchCheckOutputs:
    """
    Checks that all surfaces and surface data files for a subject have the same
    number of vertices.
    
    Author: FreeSurfer Developers
    
    URL: https://github.com/freesurfer/freesurfer
    
    Args:
        subjid: Subject ID for which the vertex number check is performed.
        debug: Prints progress text.
        right_hemi: Checks only the right hemisphere.
        left_hemi: Checks only the left hemisphere.
        runner: Command runner.
    Returns:
        NamedTuple of outputs (described in `VnoMatchCheckOutputs`).
    """
    runner = runner or get_global_runner()
    execution = runner.start_execution(VNO_MATCH_CHECK_METADATA)
    cargs = []
    cargs.append("vno_match_check")
    cargs.append(subjid)
    if debug:
        cargs.append("debug")
    if right_hemi:
        cargs.append("rh")
    if left_hemi:
        cargs.append("lh")
    ret = VnoMatchCheckOutputs(
        root=execution.output_file("."),
    )
    execution.run(cargs)
    return ret


__all__ = [
    "VNO_MATCH_CHECK_METADATA",
    "VnoMatchCheckOutputs",
    "vno_match_check",
]
