<?php

namespace MintyPHP\Repository\Database;

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

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

    public function recordApplied(string $filename): void;

    public function beginTransaction(): void;

    public function commit(): void;

    public function rollback(): void;

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