<?php
/**
 * Migration Interface for Easy Invoice
 *
 * @package     EasyInvoice
 * @subpackage  Migration
 * @since       2.0.0
 */

namespace EasyInvoice\Migration\Src;

/**
 * Migration interface.
 *
 * All migration classes must implement this interface.
 *
 * @since 2.0.0
 */
interface MigrationInterface {

    /**
     * Run the migration.
     *
     * @since 2.0.0
     * @return array Migration result with 'success' and 'message' keys.
     */
    public function migrate(): array;

    /**
     * Check if migration is needed.
     *
     * @since 2.0.0
     * @return bool
     */
    public function is_needed(): bool;

    /**
     * Get migration description.
     *
     * @since 2.0.0
     * @return string
     */
    public function get_description(): string;

    /**
     * Get migration version.
     *
     * @since 2.0.0
     * @return string
     */
    public function get_version(): string;
}
