<?php
/**
 * BookiFlex Core
 *
 * @package    BookiFlex
 * @subpackage Core
 * @author     BookiFlex
 * @copyright  Copyright (c) 2025 BookiFlex
 * @license    GPL-2.0-or-later
 *
 * @link       https://bookiflex.com
 */

declare(strict_types=1);

namespace BookiFlex\Core\Contract;

defined( 'ABSPATH' ) || exit;

/**
 * Interface for extension uninstallers
 *
 * Extensions implement this interface to provide their own cleanup logic
 * during plugin uninstallation.
 */
interface UninstallerInterface
{
    /**
     * Delete version-specific data
     *
     * This method is ALWAYS called during uninstall, regardless of whether
     * another edition is installed. Use this for edition-specific options,
     * transients, or other data unique to Free or Pro.
     *
     * @return void
     */
    public function deleteVersionData(): void;

    /**
     * Delete shared data
     *
     * This method is called ONLY when the other edition is NOT installed,
     * meaning it's safe to delete all shared data. Use this for:
     * - Database tables
     * - Shared options
     * - Custom post types
     * - Any data common to both Free and Pro
     *
     * @return void
     */
    public function deleteSharedData(): void;
}