# Зависимости Level 1 > Пояснение нормативной модели зависимостей Level 1. Матрица слоёв задаёт допустимые связи, а модули образуют граф зависимостей. ## Что считается зависимостью - Обычный импорт, импорт типа и реэкспорт одинаково создают архитектурную зависимость. - Импорт между файлами одного модуля не пересекает модульную границу и не создаёт отдельный узел графа. - Импорт любого внутреннего файла, сегмента или компонента считается зависимостью ближайшего модуля-владельца. - Вложенный модуль является обычным самостоятельным узлом графа. - Группы, сегменты и компоненты не являются самостоятельными узлами графа. Точка входа фреймворка не является модулем. Её импорты участвуют в проверке направления слоёв, но не образуют исходящий узел графа модулей. Ресурс `shared` также не является модулем. Его прямой импорт участвует в проверке направления слоёв, но не нарушает требование о публичном API модуля. ## Допустимые связи - Модуль может импортировать модули своего слоя и слоёв, разрешённых нормативной матрицей. - Модули одного слоя могут импортировать друг друга. - Промежуточный слой не является обязательным посредником. - `infra` и `ui` не импортируют друг друга; их связывает владелец из `domains`, `compositions` или `app`. Доменный модуль Level 1 может импортировать публичный API другого доменного модуля. Runtime- и type-only импорты одинаково создают ребро графа, поэтому общий граф обязан оставаться ацикличным. ```ts // domains/orders import type { Product } from '@/domains/catalog' ``` Level 1 не требует отдельного механизма междоменной инъекции. Более строгая модель cross-domain зависимостей задаётся Level 2. Матрица слоёв определена в [Слоях](./layers.md). ## Связанные правила - [`SLM-L1-LAYER-A002`](../rules/level-1.md#slm-l1-layer-a002) - [`SLM-L1-MODULE-A004`](../rules/level-1.md#slm-l1-module-a004) - [`SLM-L1-DEPENDENCY-A005`](../rules/level-1.md#slm-l1-dependency-a005) - [`SLM-L1-NESTED_MODULE-A010`](../rules/level-1.md#slm-l1-nested_module-a010) ## Публичный API ```ts // Допустимо import { Button } from '@/ui/button' // Недопустимо import { Button } from '@/ui/button/button' ``` ## Циклы ```text ui/modal → ui/button → ui/icon ui/icon -/→ ui/modal ```