"""
This type stub file was generated by pyright.
"""

from pydantic import BaseModel
from codegen.git.repo_operator import RepoOperator
from graph_sitter.enums import ProgrammingLanguage
from graph_sitter.secrets import Secrets

HARD_MAX_AI_LIMIT = ...
class SessionOptions(BaseModel):
    """Options for a session. A session is a single codemod run."""
    model_config = ...
    max_seconds: int | None = ...
    max_transactions: int | None = ...
    max_ai_requests: int = ...


class GSFeatureFlags(BaseModel):
    """Config for building the graph sitter graph. These are non-repo specific options that are set per-usecase.

    Attributes:
        debug: Warning if there are errors during parsing (such as unimplemented nodes)
        verify_graph: Verify the accuracy of the graph between resets. Will result in lag
        method_usages: Resolve . usages
    """
    model_config = ...
    debug: bool = ...
    verify_graph: bool = ...
    track_graph: bool = ...
    method_usages: bool = ...
    sync_enabled: bool = ...
    ts_dependency_manager: bool = ...
    ts_language_engine: bool = ...
    v8_ts_engine: bool = ...
    full_range_index: bool = ...
    ignore_process_errors: bool = ...
    import_resolution_overrides: dict[str, str] = ...


DefaultFlags = ...
TestFlags = ...
LintFlags = ...
ParseTestFlags = ...
class ProjectConfig(BaseModel):
    """Context for a codebase. A codebase is a set of files in a directory."""
    model_config = ...
    repo_operator: RepoOperator
    base_path: str | None = ...
    subdirectories: list[str] | None = ...
    programming_language: ProgrammingLanguage = ...


class CodebaseConfig(BaseModel):
    """Configuration for a Codebase. There can be 1 -> many codebases in a single repo
    TODO: replace with a DB model (move codebase columns off of RepoModel)
    """
    model_config = ...
    secrets: Secrets = ...
    feature_flags: GSFeatureFlags = ...


DefaultConfig = ...
