<?php

namespace Shm\ShmBlueprints\Auth;

use Shm\Shm;
use Shm\ShmAuth\Auth;
use Shm\ShmSocial\ShmSocAuth;
use Shm\ShmSocial\ShmSocialAuth\ShmAppleAuth;

use Shm\ShmTypes\StructureType;

/**
 * Main authentication factory class
 * 
 * This class provides factory methods for creating different types of authentication
 * handlers including SMS, email, social, Apple, and other authentication methods.
 */
class ShmAuth
{
    /**
     * Constructor
     */
    public function __construct()
    {
        // Constructor implementation
    }

    /**
     * Create SMS authentication handler
     * 
     * @return ShmSmsAuth SMS authentication instance
     */
    public function sms(): ShmSmsAuth
    {
        return new ShmSmsAuth();
    }

    /**
     * Create email set authentication handler
     * 
     * @return ShmEmailSet Email set authentication instance
     */
    public function emailSet(): ShmEmailSet
    {
        return new ShmEmailSet();
    }

    /**
     * Create message authentication handler
     * 
     * @return ShmMsgAuth Message authentication instance
     */
    public function msg(): ShmMsgAuth
    {
        return new ShmMsgAuth();
    }

    /**
     * Create message set handler
     *
     * @return ShmMsgSet Message set instance
     */
    public function msgSet(): ShmMsgSet
    {
        return new ShmMsgSet();
    }

    /**
     * Create SMS set handler
     *
     * @return ShmSmsSet SMS set instance
     */
    public function smsSet(): ShmSmsSet
    {
        return new ShmSmsSet();
    }

    /**
     * Create call set handler
     *
     * @return ShmCallSet Call set instance
     */
    public function callSet(): ShmCallSet
    {
        return new ShmCallSet();
    }

    /**
     * Create passport set handler
     *
     * @return ShmPassportSet Passport set instance
     */
    public function passportSet(): ShmPassportSet
    {
        return new ShmPassportSet();
    }

    /**
     * Create email authentication handler
     * 
     * @return ShmEmailAuth Email authentication instance
     */
    public function email(): ShmEmailAuth
    {
        return new ShmEmailAuth();
    }

    /**
     * Create login authentication handler
     * 
     * @return ShmLoginAuth Login authentication instance
     */
    public function login(): ShmLoginAuth
    {
        return new ShmLoginAuth();
    }

    /**
     * Create QR authentication handler
     * 
     * @return ShmQRAuth QR authentication instance
     */
    public function qrPass(): ShmQRPassAuth
    {
        return new ShmQRPassAuth();
    }

    /**
     * Create QR token authentication handler
     * 
     * @return ShmQRTokenAuth QR token authentication instance
     */
    public function qrToken(): ShmQRTokenAuth
    {
        return new ShmQRTokenAuth();
    }

    /**
     * Create social authentication handler
     * 
     * @return ShmSocAuth Social authentication instance
     */
    public function soc(): ShmSocAuth
    {
        return new ShmSocAuth();
    }

    /**
     * Create Apple authentication handler
     * 
     * @return ShmAppleAuth Apple authentication instance
     */


    /**
     * Create passport authentication handler
     * 
     * @return ShmPassportAuth Passport authentication instance
     */
    public function passport(): ShmPassportAuth
    {
        return new ShmPassportAuth();
    }


    /**
     * Create call authentication handler
     * 
     * @return ShmCallAuth Call authentication instance
     */
    public function call(): ShmCallAuth
    {
        return new ShmCallAuth();
    }
}