from datazen import ROOT_NAMESPACE as ROOT_NAMESPACE
from datazen.enums import DataType as DataType
from datazen.environment.base import BaseEnvironment as BaseEnvironment
from datazen.load import DEFAULT_LOADS as DEFAULT_LOADS, LoadedFiles as LoadedFiles
from datazen.schemas import inject_custom_schemas as inject_custom_schemas, load_types as load_types, validate as validate
from typing import List

class SchemaEnvironment(BaseEnvironment):
    def load_schema_types(self, sch_loads: LoadedFiles = ..., name: str = ...) -> dict: ...
    def load_schemas(self, require_all: bool = ..., sch_loads: LoadedFiles = ..., sch_types_loads: LoadedFiles = ..., name: str = ..., modify_registry: bool = ...) -> dict: ...
    def enforce_schemas(self, data: dict, require_all: bool = ..., sch_loads: LoadedFiles = ..., sch_types_loads: LoadedFiles = ..., name: str = ...) -> bool: ...
    def add_schema_type_dirs(self, dir_paths: List[str], rel_path: str = ..., name: str = ..., allow_dup: bool = ...) -> int: ...
    def add_schema_dirs(self, dir_paths: List[str], rel_path: str = ..., name: str = ..., allow_dup: bool = ...) -> int: ...
