"""Identity domain module.

Provide user identity, workspace scoping, and permission models
for local-first multi-user support.

The scope lattice enforces boundaries:
    workspace -> project -> resource

All operations occur within a workspace context, with optional
project scoping for finer-grained organization.
"""

from noteflow.domain.identity.context import (
    OperationContext,
    ProjectContext,
    UserContext,
    WorkspaceContext,
)
from noteflow.domain.identity.entities import (
    ProjectMembership,
    User,
    Workspace,
    WorkspaceMembership,
    WorkspaceSettings,
)
from noteflow.domain.identity.roles import ProjectRole, WorkspaceRole

# Default names for local-first mode
DEFAULT_USER_DISPLAY_NAME = "Local User"
DEFAULT_WORKSPACE_NAME = "Personal"
DEFAULT_PROJECT_NAME = "General"

__all__ = [
    "DEFAULT_PROJECT_NAME",
    "DEFAULT_USER_DISPLAY_NAME",
    "DEFAULT_WORKSPACE_NAME",
    "OperationContext",
    "ProjectContext",
    "ProjectMembership",
    "ProjectRole",
    "User",
    "UserContext",
    "Workspace",
    "WorkspaceContext",
    "WorkspaceMembership",
    "WorkspaceRole",
    "WorkspaceSettings",
]
