<?php // phpcs:ignore WordPress.Files.FileName.NotHyphenatedLowercase, WordPress.Files.FileName.InvalidClassFileName
/**
 * Interface for the Snooze settings reader.
 *
 * Centralizes access to the WordPress options that control the Snooze
 * feature so callers don't reach for `get_option()` directly.
 *
 * @package Autoship\Services\Snooze\Interfaces
 * @since   2.13.0
 */

namespace Autoship\Services\Snooze\Interfaces;

/**
 * Reader for Snooze configuration stored in WordPress options.
 *
 * All getters apply their respective filter hooks so themes / other
 * plugins can override values.
 */
interface SnoozeSettingsInterface {

	/**
	 * Whether the Snooze feature is enabled in WP-Admin.
	 *
	 * @return bool
	 */
	public function is_enabled(): bool;

	/**
	 * The merchant-configured action label (default: "Snooze").
	 *
	 * @return string
	 */
	public function get_action_label(): string;

	/**
	 * Pause-action behavior: "alongside" or "instead".
	 *
	 * @return string
	 */
	public function get_pause_behavior(): string;

	/**
	 * Frequency source: "qmc" or "plugin".
	 *
	 * @return string
	 */
	public function get_frequency_source(): string;

	/**
	 * Whether subscribers can pick a custom resume date.
	 *
	 * @return bool
	 */
	public function is_custom_date_allowed(): bool;

	/**
	 * Maximum snooze duration in days. 0 means no limit.
	 *
	 * @return int
	 */
	public function get_max_duration_days(): int;
}
