# Import Linter configuration for aiochainscan.
#
# Initial contracts are intentionally permissive to avoid breaking existing code.
# We will tighten them iteratively during the migration.

[importlinter]
root_package = aiochainscan

[importlinter:contract:1]
name = Domain must be isolated
type = forbidden
source_modules =
    aiochainscan.domain
forbidden_modules =
    aiochainscan.ports
    aiochainscan.services
    aiochainscan.adapters
    aiochainscan.core
    aiochainscan.modules
    aiochainscan.scanners

[importlinter:contract:2]
name = Ports must not depend on upper layers
type = forbidden
source_modules =
    aiochainscan.ports
forbidden_modules =
    aiochainscan.services
    aiochainscan.adapters
    aiochainscan.core
    aiochainscan.modules
    aiochainscan.scanners

[importlinter:contract:3]
name = Services should not depend on adapters (initial)
type = forbidden
source_modules =
    aiochainscan.services
forbidden_modules =
    aiochainscan.adapters
