<?php

namespace MintyPHP\Repository\Module;

/** Contract for module migration tracking: table creation, applied-file queries, and statement execution. */
interface ModuleMigrationRepositoryInterface
{
    public function ensureTrackingTable(): void;

    /**
     * @return array<string, true>
     */
    public function getAppliedFilenames(string $moduleId): array;

    public function recordApplied(string $moduleId, string $filename): void;

    public function beginTransaction(): void;

    public function commit(): void;

    public function rollback(): void;

    public function executeStatement(string $sql): void;
}
