"""PyAuthz Strawberry GraphQL integration — authorization for GraphQL APIs.

Provides a schema extension, resolver-level and field-level decorators for
integrating PyAuthz authorization into Strawberry GraphQL applications.

Quick Example:
    import strawberry
    from pyauthz_strawberry import PyAuthzExtension, requires, get_subject

    schema = strawberry.Schema(
        query=Query,
        extensions=[PyAuthzExtension(pyauthz=rp, subject_resolver=resolve_user)],
    )

    @strawberry.type
    class Mutation:
        @strawberry.mutation
        @requires("documents:delete")
        async def delete_document(self, info, id: str) -> bool:
            ...
"""

from pyauthz_strawberry.decorator import requires
from pyauthz_strawberry.extension import PyAuthzExtension, get_pyauthz, get_subject

__all__ = [
    "PyAuthzExtension",
    "requires",
    "get_subject",
    "get_pyauthz",
]
