<?php

namespace Src\Modules\JsonObjects\Interfaces\Infrastructure;

use Src\Modules\JsonObjects\Interfaces\IFactory as IModuleFactory;
use Src\Modules\JsonObjects\Interfaces\Infrastructure\IItemStorage;
use Src\Modules\JsonObjects\Interfaces\Infrastructure\IItemPersistLayer;
use Src\Modules\JsonObjects\Interfaces\Infrastructure\IDirsStorage;
use Src\Modules\JsonObjects\Interfaces\Infrastructure\IDirsQuery;
use Src\Modules\JsonObjects\Interfaces\Infrastructure\IDirsPersistLayer;

interface IFactory
{
    public function init(array $conf = []): void;
    public function setModuleFactory(IModuleFactory $factory);
    public function getStorage(): IItemStorage;
    public function getPersistLayer(): IItemPersistLayer;
    public function createDirsQuery(): IDirsQuery;
    public function getDirsStorage(): IDirsStorage;
    public function getDirsPersistLayer(): IDirsPersistLayer;
}
