# Stubs for zope.interface.declarations (Python 3.6)
#
# NOTE: This dynamically typed stub was automatically generated by stubgen.

from typing import Any
from zope.interface._zope_interface_coptimizations import ClassProvidesBase
from zope.interface.interface import Specification

__docformat__: str
BuiltinImplementationSpecifications: Any

class named:
    name: Any = ...
    def __init__(self, name: Any) -> None: ...
    def __call__(self, ob: Any): ...

class Declaration(Specification):
    def __init__(self, *interfaces: Any) -> None: ...
    def changed(self, originally_changed: Any) -> None: ...
    def __contains__(self, interface: Any): ...
    def __iter__(self): ...
    def flattened(self): ...
    def __sub__(self, other: Any): ...
    def __add__(self, other: Any): ...
    __radd__: Any = ...

class Implements(Declaration):
    inherit: Any = ...
    declared: Any = ...
    __name__: str = ...
    @classmethod
    def named(cls, name: Any, *interfaces: Any): ...
    def __reduce__(self): ...
    def __hash__(self): ...
    def __lt__(self, other: Any): ...
    def __le__(self, other: Any): ...
    def __gt__(self, other: Any): ...
    def __ge__(self, other: Any): ...

def implementedByFallback(cls): ...
implementedBy = implementedByFallback

def classImplementsOnly(cls, *interfaces: Any) -> None: ...
def classImplements(cls, *interfaces: Any) -> None: ...

class implementer:
    interfaces: Any = ...
    def __init__(self, *interfaces: Any) -> None: ...
    def __call__(self, ob: Any): ...

class implementer_only:
    interfaces: Any = ...
    def __init__(self, *interfaces: Any) -> None: ...
    def __call__(self, ob: Any): ...

def implements(*interfaces: Any) -> None: ...
def implementsOnly(*interfaces: Any) -> None: ...

class Provides(Declaration):
    def __init__(self, cls: Any, *interfaces: Any) -> None: ...
    def __reduce__(self): ...
    __module__: str = ...
    def __get__(self, inst: Any, cls: Any): ...
ProvidesClass = Provides
InstanceDeclarations: Any

def directlyProvides(object: Any, *interfaces: Any) -> None: ...
def alsoProvides(object: Any, *interfaces: Any) -> None: ...
def noLongerProvides(object: Any, interface: Any) -> None: ...

class ClassProvidesBaseFallback:
    def __get__(self, inst: Any, cls: Any): ...
ClassProvidesBasePy = ClassProvidesBaseFallback
ClassProvidesBase = ClassProvidesBaseFallback

class ClassProvides(Declaration, ClassProvidesBase):
    def __init__(self, cls: Any, metacls: Any, *interfaces: Any) -> None: ...
    def __reduce__(self): ...
    __get__: Any = ...

def directlyProvidedBy(object: Any): ...
def classProvides(*interfaces: Any) -> None: ...

class provider:
    interfaces: Any = ...
    def __init__(self, *interfaces: Any) -> None: ...
    def __call__(self, ob: Any): ...

def moduleProvides(*interfaces: Any) -> None: ...
def ObjectSpecification(direct: Any, cls: Any): ...
def getObjectSpecificationFallback(ob: Any): ...
getObjectSpecification = getObjectSpecificationFallback

def providedByFallback(ob: Any): ...
providedBy = providedByFallback

class ObjectSpecificationDescriptorFallback:
    def __get__(self, inst: Any, cls: Any): ...
ObjectSpecificationDescriptor = ObjectSpecificationDescriptorFallback
objectSpecificationDescriptor: Any
