"""
Validation Rules

Specialized validators for specific aspects of semantic model integrity.

Each validator focuses on a specific validation concern:

- **DbtModelValidator**: Physical layer requirements and best practices
- **ReferenceValidator**: Table/column existence in dbt catalog
- **DuplicateValidator**: Unique naming across all components
- **DependencyValidator**: Acyclic relationship graphs
- **TemplateResolutionValidator**: Complete template expansion
- **SemanticModelValidator**: Semantic model structure and required fields
- **SchemaValidator**: YAML columns against actual Snowflake schema (optional)
- **SnowflakeSyntaxValidator**: SQL syntax validation against Snowflake (optional)

Rules are designed to be independent and composable, allowing
selective validation based on use case requirements.
"""

from snowflake_semantic_tools.core.validation.rules.dbt_models import DbtModelValidator
from snowflake_semantic_tools.core.validation.rules.dependencies import DependencyValidator
from snowflake_semantic_tools.core.validation.rules.duplicates import DuplicateValidator
from snowflake_semantic_tools.core.validation.rules.quoted_templates import QuotedTemplateValidator
from snowflake_semantic_tools.core.validation.rules.references import ReferenceValidator
from snowflake_semantic_tools.core.validation.rules.schema_validator import SchemaValidator
from snowflake_semantic_tools.core.validation.rules.semantic_models import SemanticModelValidator
from snowflake_semantic_tools.core.validation.rules.snowflake_syntax_validator import SnowflakeSyntaxValidator
from snowflake_semantic_tools.core.validation.rules.template_resolution import TemplateResolutionValidator

__all__ = [
    "DuplicateValidator",
    "DependencyValidator",
    "ReferenceValidator",
    "TemplateResolutionValidator",
    "DbtModelValidator",
    "SemanticModelValidator",
    "QuotedTemplateValidator",
    "SchemaValidator",
    "SnowflakeSyntaxValidator",
]
