<?php
/**
 * Notification Service Interface
 *
 * Interface for notification service operations
 *
 * @package NemtlyBooking
 * @since   PBOOKING_SINCE
 */

namespace NemtlyBooking\Interfaces;

/**
 * Notification Service Interface
 *
 * @since PBOOKING_SINCE
 */
interface Notification_Service_Interface extends Service_Interface {

    /**
     * Send booking confirmation notification
     *
     * @since PBOOKING_SINCE
     *
     * @param array $data Booking data.
     *
     * @return bool|WP_Error True on success, error on failure.
     */
    public function send_booking_confirmation( $data );

    /**
     * Send booking status change notification
     *
     * @since PBOOKING_SINCE
     *
     * @param array $data Status change data.
     *
     * @return bool|WP_Error True on success, error on failure.
     */
    public function send_status_notification( $data );

    /**
     * Send booking cancellation notification
     *
     * @since PBOOKING_SINCE
     *
     * @param array $data Cancellation data.
     *
     * @return bool|WP_Error True on success, error on failure.
     */
    public function send_cancellation_notification( $data );

    /**
     * Send reminder notification
     *
     * @since PBOOKING_SINCE
     *
     * @param array $data Reminder data.
     *
     * @return bool|WP_Error True on success, error on failure.
     */
    public function send_reminder_notification( $data );

    /**
     * Send admin notification
     *
     * @since PBOOKING_SINCE
     *
     * @param string $type Notification type.
     * @param mixed  $data Notification data.
     *
     * @return bool|WP_Error True on success, error on failure.
     */
    public function send_admin_notification( $type, $data );

    /**
     * Get email settings
     *
     * @since PBOOKING_SINCE
     *
     * @return array Email settings.
     */
    public function get_email_settings();

    /**
     * Check if notifications are enabled
     *
     * @since PBOOKING_SINCE
     *
     * @return bool True if enabled, false otherwise.
     */
    public function is_enabled();

    /**
     * Process custom template
     *
     * @since PBOOKING_SINCE
     *
     * @param string $template Template string.
     * @param array  $data    Template data.
     *
     * @return string Processed template.
     */
    public function process_template( $template, $data );
}
