"""
CRISPRDesigner2: CRISPR gRNA design for SpCas9 (NGG PAM).

A Python package for designing CRISPR guide RNAs with on-target (RS3)
and off-target (GuideScan2) scoring.
"""

from crisprdesigner2.extraction import (
    extract_guides,
    extract_guides_from_bed,
    reverse_complement,
    open_fasta,
    CONTEXT_PADDING,
)
from crisprdesigner2.filters import (
    apply_filters,
    get_passing_guides,
    is_valid_guide,
    FILTERS,
)
from crisprdesigner2.scoring import (
    score_guides_rs3,
    score_single_guide_rs3,
    score_guides_guidescan,
    compute_specificity_mock,
)
from crisprdesigner2.output import (
    write_outputs,
    read_design_guides_txt,
    read_design_guides_bed,
    scale_score_to_bed,
    validate_dataframe,
    TXT_COLUMNS,
    BED_COLUMNS,
)
from crisprdesigner2.cache import (
    load_predesigned_guides,
    filter_predesigned_regions,
    merge_with_predesigned,
    get_covered_guide_sets,
    count_guides_per_region,
)

__version__ = "0.1.0"

__all__ = [
    # Extraction
    "extract_guides",
    "extract_guides_from_bed",
    "reverse_complement",
    "open_fasta",
    "CONTEXT_PADDING",
    # Filters
    "apply_filters",
    "get_passing_guides",
    "is_valid_guide",
    "FILTERS",
    # Scoring
    "score_guides_rs3",
    "score_single_guide_rs3",
    "score_guides_guidescan",
    "compute_specificity_mock",
    # Output
    "write_outputs",
    "read_design_guides_txt",
    "read_design_guides_bed",
    "scale_score_to_bed",
    "validate_dataframe",
    "TXT_COLUMNS",
    "BED_COLUMNS",
    # Cache
    "load_predesigned_guides",
    "filter_predesigned_regions",
    "merge_with_predesigned",
    "get_covered_guide_sets",
    "count_guides_per_region",
]
