# Stubs for xeno.abstract (Python 3)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.

from .attributes import ClassAttributes, get_providers
from .errors import CircularDependencyError, InjectionError, InvalidResourceError, MissingDependencyError, MissingResourceError
from .namespaces import Namespace
from abc import ABCMeta, abstractmethod
from typing import Any, Optional

class AbstractInjector(metaclass=ABCMeta):
    resources: Any = ...
    singletons: Any = ...
    dep_graph: Any = ...
    injection_interceptors: Any = ...
    ns_index: Any = ...
    resource_attrs: Any = ...
    def __init__(self, *modules: Any) -> None: ...
    @abstractmethod
    def create(self, class_: Any) -> Any: ...
    @abstractmethod
    def inject(self, obj: Any, aliases: Any = ..., namespace: str = ...) -> Any: ...
    @abstractmethod
    def require(self, name: Any, method: Optional[Any] = ...) -> Any: ...
    @abstractmethod
    def provide(self, name: Any, value: Any, is_singleton: bool = ..., namespace: Optional[Any] = ...) -> Any: ...
    def get_namespace(self, name: Optional[Any] = ...): ...
    def add_module(self, module: Any, skip_cycle_check: bool = ...) -> None: ...
    def add_injection_interceptor(self, interceptor: Any) -> None: ...
    def has(self, name: Any): ...
    def get_dependency_tree(self, resource_name: Any): ...
    def get_dependency_graph(self, resource_name: Any, *other_resource_names: Any): ...
    def get_ordered_dependencies(self, resource_name: Any): ...
    def get_dependencies(self, resource_name: Any): ...
    def get_resource_attributes(self, resource_name: Any): ...
    def scan_resources(self, filter_f: Any) -> None: ...
    def unbind_singleton(self, resource_name: Optional[Any] = ..., unbind_all: bool = ...) -> None: ...
    def check_for_cycles(self): ...
