<?php

/**
    The resource owner password credentials (i.e., username and password)
    can be used directly as an authorization grant to obtain an access
    token.  The credentials should only be used when there is a high
    degree of trust between the resource owner and the client (e.g., the
    client is part of the device operating system or a highly privileged
    application), and when other authorization grant types are not
    available (such as an authorization code).

    Even though this grant type requires direct client access to the
    resource owner credentials, the resource owner credentials are used
    for a single request and are exchanged for an access token.  This
    grant type can eliminate the need for the client to store the
    resource owner credentials for future use, by exchanging the
    credentials with a long-lived access token or refresh token.
 */

namespace AuthStack\OAuth2\Model\Protocol\Grant;

use AuthStack\OAuth2\Model\Protocol\Request\PasswordCredentials\GrantRequest;
use AuthStack\OAuth2\Model\Protocol\Response\PasswordCredentials\GrantResponse;

class PasswordCredentials implements GrantInterface
{
    public function grantRequest(): GrantRequest
    {
        return new GrantRequest();
    }

    public function grantResponse(): GrantResponse
    {
        return new GrantResponse();
    }
}