<?php
namespace Aws\TimestreamWrite;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Timestream Write** service.
 * @method \Aws\Result createBatchLoadTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createBatchLoadTaskAsync(array $args = [])
 * @method \Aws\Result createDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDatabaseAsync(array $args = [])
 * @method \Aws\Result createTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTableAsync(array $args = [])
 * @method \Aws\Result deleteDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDatabaseAsync(array $args = [])
 * @method \Aws\Result deleteTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTableAsync(array $args = [])
 * @method \Aws\Result describeBatchLoadTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBatchLoadTaskAsync(array $args = [])
 * @method \Aws\Result describeDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDatabaseAsync(array $args = [])
 * @method \Aws\Result describeEndpoints(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEndpointsAsync(array $args = [])
 * @method \Aws\Result describeTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTableAsync(array $args = [])
 * @method \Aws\Result listBatchLoadTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listBatchLoadTasksAsync(array $args = [])
 * @method \Aws\Result listDatabases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDatabasesAsync(array $args = [])
 * @method \Aws\Result listTables(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTablesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result resumeBatchLoadTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resumeBatchLoadTaskAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDatabaseAsync(array $args = [])
 * @method \Aws\Result updateTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTableAsync(array $args = [])
 * @method \Aws\Result writeRecords(array $args = [])
 * @method \GuzzleHttp\Promise\Promise writeRecordsAsync(array $args = [])
 */
class TimestreamWriteClient extends AwsClient {}


<?php
namespace Aws\TimestreamWrite\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon Timestream Write** service.
 */
class TimestreamWriteException extends AwsException {}


<?php
namespace Aws\Tnb;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Telco Network Builder** service.
 * @method \Aws\Result cancelSolNetworkOperation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelSolNetworkOperationAsync(array $args = [])
 * @method \Aws\Result createSolFunctionPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSolFunctionPackageAsync(array $args = [])
 * @method \Aws\Result createSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result createSolNetworkPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSolNetworkPackageAsync(array $args = [])
 * @method \Aws\Result deleteSolFunctionPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSolFunctionPackageAsync(array $args = [])
 * @method \Aws\Result deleteSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result deleteSolNetworkPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSolNetworkPackageAsync(array $args = [])
 * @method \Aws\Result getSolFunctionInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolFunctionInstanceAsync(array $args = [])
 * @method \Aws\Result getSolFunctionPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolFunctionPackageAsync(array $args = [])
 * @method \Aws\Result getSolFunctionPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolFunctionPackageContentAsync(array $args = [])
 * @method \Aws\Result getSolFunctionPackageDescriptor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolFunctionPackageDescriptorAsync(array $args = [])
 * @method \Aws\Result getSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result getSolNetworkOperation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolNetworkOperationAsync(array $args = [])
 * @method \Aws\Result getSolNetworkPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolNetworkPackageAsync(array $args = [])
 * @method \Aws\Result getSolNetworkPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolNetworkPackageContentAsync(array $args = [])
 * @method \Aws\Result getSolNetworkPackageDescriptor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSolNetworkPackageDescriptorAsync(array $args = [])
 * @method \Aws\Result instantiateSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise instantiateSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result listSolFunctionInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSolFunctionInstancesAsync(array $args = [])
 * @method \Aws\Result listSolFunctionPackages(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSolFunctionPackagesAsync(array $args = [])
 * @method \Aws\Result listSolNetworkInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSolNetworkInstancesAsync(array $args = [])
 * @method \Aws\Result listSolNetworkOperations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSolNetworkOperationsAsync(array $args = [])
 * @method \Aws\Result listSolNetworkPackages(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSolNetworkPackagesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result putSolFunctionPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putSolFunctionPackageContentAsync(array $args = [])
 * @method \Aws\Result putSolNetworkPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putSolNetworkPackageContentAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result terminateSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise terminateSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateSolFunctionPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSolFunctionPackageAsync(array $args = [])
 * @method \Aws\Result updateSolNetworkInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSolNetworkInstanceAsync(array $args = [])
 * @method \Aws\Result updateSolNetworkPackage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSolNetworkPackageAsync(array $args = [])
 * @method \Aws\Result validateSolFunctionPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise validateSolFunctionPackageContentAsync(array $args = [])
 * @method \Aws\Result validateSolNetworkPackageContent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise validateSolNetworkPackageContentAsync(array $args = [])
 */
class TnbClient extends AwsClient {}


<?php
namespace Aws\Tnb\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Telco Network Builder** service.
 */
class TnbException extends AwsException {}


<?php
namespace Aws\Token;

use InvalidArgumentException;
use Psr\Http\Message\RequestInterface;

/**
 * Interface used to provide interchangeable strategies for adding authorization
 * to requests using the various AWS signature protocols.
 */
class BearerTokenAuthorization implements TokenAuthorization
{
    /**
     * Adds the specified token to a request by adding the required headers.
     *
     * @param RequestInterface     $request     Request to sign
     * @param TokenInterface       $token       Token
     *
     * @return RequestInterface Returns the modified request.
     */
    public function authorizeRequest(
        RequestInterface $request,
        TokenInterface $token
    ) {
        if (empty($token) || empty($token->getToken())) {
            throw new InvalidArgumentException(
                "Cannot authorize a request with an empty token"
            );
        }
        $accessToken = $token->getToken();
        return $request->withHeader('Authorization', "Bearer {$accessToken}");
    }
}


<?php
namespace Aws\Token;

trait ParsesIniTrait
{
    /**
     * Gets profiles from specified $filename, or default ini files.
     */
    private static function loadProfiles($filename)
    {
        $profileData = \Aws\parse_ini_file($filename, true, INI_SCANNER_RAW);
        $configFilename = self::getHomeDir() . '/.aws/config';
        if (is_readable($configFilename)) {
            $configProfiles = \Aws\parse_ini_file($configFilename, true, INI_SCANNER_RAW);
            $profileData = array_merge($configProfiles, $profileData);
        }
        foreach ($profileData as $name => $profile) {
            // standardize config profile names
            $name = str_replace('profile ', '', $name);
            $profileData[$name] = $profile;
        }

        return $profileData;
    }

    /**
     * Gets the environment's HOME directory if available.
     *
     * @return null|string
     */
    private static function getHomeDir()
    {
        // On Linux/Unix-like systems, use the HOME environment variable
        if ($homeDir = getenv('HOME')) {
            return $homeDir;
        }

        // Get the HOMEDRIVE and HOMEPATH values for Windows hosts
        $homeDrive = getenv('HOMEDRIVE');
        $homePath = getenv('HOMEPATH');

        return ($homeDrive && $homePath) ? $homeDrive . $homePath : null;
    }
}


<?php
namespace Aws\Token;

/**
 * Provides access to an AWS token used for accessing AWS services
 *
 */
interface RefreshableTokenProviderInterface
{
    /**
     * Attempts to refresh this token object
     *
     * @return Token | Exception
     */
    public function refresh();

    /**
     * Check if a refresh should be attempted
     *
     * @return boolean
     */
    public function shouldAttemptRefresh();
}


<?php
namespace Aws\Token;

/**
 * Token that comes from the SSO provider
 */
class SsoToken extends Token
{
    private $refreshToken;
    private $clientId;
    private $clientSecret;
    private $registrationExpiresAt;
    private $region;
    private $startUrl;

    /**
     * Constructs a new SSO token object, with the specified AWS
     * token
     *
     * @param string $token   Security token to use
     * @param int    $expires UNIX timestamp for when the token expires
     * @param int    $refreshToken An opaque string returned by the sso-oidc service
     * @param int    $clientId  The client ID generated when performing the registration portion of the OIDC authorization flow
     * @param int    $clientSecret The client secret generated when performing the registration portion of the OIDC authorization flow
     * @param int    $registrationExpiresAt The expiration time of the client registration (clientId and clientSecret)
     * @param int    $region The configured sso_region for the profile that credentials are being resolved for
     * @param int    $startUrl The configured sso_start_url for the profile that credentials are being resolved for
     */
    public function __construct(
        $token,
        $expires,
        $refreshToken = null,
        $clientId = null,
        $clientSecret = null,
        $registrationExpiresAt = null,
        $region = null,
        $startUrl = null
    ) {
        parent::__construct($token, $expires);
        $this->refreshToken = $refreshToken;
        $this->clientId = $clientId;
        $this->clientSecret = $clientSecret;
        $this->registrationExpiresAt = $registrationExpiresAt;
        $this->region = $region;
        $this->startUrl = $startUrl;
    }

    /**
     * @return bool
     */
    public function isExpired()
    {
        if (isset($this->registrationExpiresAt)
            && time() >= $this->registrationExpiresAt
        ) {
            return false;
        }
        return $this->expires !== null && time() >= $this->expires;
    }

    /**
     * @return string|null
     */
    public function getRefreshToken()
    {
        return $this->refreshToken;
    }

    /**
     * @return string|null
     */
    public function getClientId()
    {
        return $this->clientId;
    }

    /**
     * @return string|null
     */
    public function getClientSecret()
    {
        return $this->clientSecret;
    }

    /**
     * @return int|null
     */
    public function getRegistrationExpiresAt()
    {
        return $this->registrationExpiresAt;
    }

    /**
     * @return string|null
     */
    public function getRegion()
    {
        return $this->region;
    }

    /**
     * @return string|null
     */
    public function getStartUrl()
    {
        return $this->startUrl;
    }
}


<?php
namespace Aws\Token;

use Aws\Exception\TokenException;
use GuzzleHttp\Promise;

/**
 * Token that comes from the SSO provider
 */
class SsoTokenProvider implements RefreshableTokenProviderInterface
{
    use ParsesIniTrait;

    const ENV_PROFILE = 'AWS_PROFILE';

    private $ssoProfileName;
    private $filename;
    private $ssoOidcClient;

    /**
     * Constructs a new SsoTokenProvider object, which will fetch a token from an authenticated SSO profile
     * @param string $ssoProfileName The name of the profile that contains the sso_session key
     * @param int    $filename Name of the config file to sso profile from
     */
    public function __construct($ssoProfileName, $filename = null, $ssoOidcClient = null) {
        $profileName = getenv(self::ENV_PROFILE) ?: 'default';
        $this->ssoProfileName = !empty($ssoProfileName) ? $ssoProfileName : $profileName;
        $this->filename =  !empty($filename)
            ? $filename :
            self::getHomeDir() . '/.aws/config';
        $this->ssoOidcClient = $ssoOidcClient;
    }

    /*
     * Loads cached sso credentials
     *
     * @return PromiseInterface
     */
    public function __invoke()
    {
        return Promise\Coroutine::of(function () {
            if (!@is_readable($this->filename)) {
                throw new TokenException("Cannot read profiles from $this->filename");
            }
            $profiles = self::loadProfiles($this->filename);
            if (!isset($profiles[$this->ssoProfileName])) {
                throw new TokenException("Profile {$this->ssoProfileName} does not exist in {$this->filename}.");
            }
            $ssoProfile = $profiles[$this->ssoProfileName];
            if (empty($ssoProfile['sso_session'])) {
                throw new TokenException(
                    "Profile {$this->ssoProfileName} in {$this->filename} must contain an sso_session."
                );
            }

            $sessionProfileName = 'sso-session ' . $ssoProfile['sso_session'];
            if (empty($profiles[$sessionProfileName])) {
                throw new TokenException(
                    "Profile {$this->ssoProfileName} does not exist in {$this->filename}"
                );
            }

            $sessionProfileData = $profiles[$sessionProfileName];
            if (empty($sessionProfileData['sso_start_url'])
                || empty($sessionProfileData['sso_region'])
            ) {
                throw new TokenException(
                    "Profile {$this->ssoProfileName} in {$this->filename} must contain the following keys: "
                    . "sso_start_url and sso_region."
                );
            }

            $tokenLocation = self::getTokenLocation($ssoProfile['sso_session']);
            if (!@is_readable($tokenLocation)) {
                throw new TokenException("Unable to read token file at $tokenLocation");
            }
            $tokenData = $this->getTokenData($tokenLocation);
            $this->validateTokenData($tokenLocation, $tokenData);
            yield new SsoToken(
                $tokenData['accessToken'],
                $tokenData['expiresAt'],
                isset($tokenData['refreshToken']) ? $tokenData['refreshToken'] : null,
                isset($tokenData['clientId']) ? $tokenData['clientId'] : null,
                isset($tokenData['clientSecret']) ? $tokenData['clientSecret'] : null,
                isset($tokenData['registrationExpiresAt']) ? $tokenData['registrationExpiresAt'] : null,
                isset($tokenData['region']) ? $tokenData['region'] : null,
                isset($tokenData['startUrl']) ? $tokenData['startUrl'] : null
            );
        });
    }

    /**
     * Refreshes the token
     * @return mixed|null
     */
    public function refresh() {
        try {
            //try to reload from disk
            $token = $this();
            if (
                $token instanceof SsoToken
                && !$token->shouldAttemptRefresh()
            ) {
                return $token;
            }
        } finally {
            //if reload from disk fails, try refreshing
            $tokenLocation = self::getTokenLocation($this->ssoProfileName);
            $tokenData = $this->getTokenData($tokenLocation);
            if (
                empty($this->ssoOidcClient)
                || empty($tokenData['startUrl'])
            ) {
                throw new TokenException(
                    "Cannot refresh this token without an 'ssooidcClient' "
                    . "and a 'start_url'"
                );
            }
            $response = $this->ssoOidcClient->createToken([
                'clientId' => $tokenData['clientId'],
                'clientSecret' => $tokenData['clientSecret'],
                'grantType' => 'refresh_token', // REQUIRED
                'refreshToken' => $tokenData['refreshToken'],
            ]);
            if ($response['@metadata']['statusCode'] == 200) {
                $tokenData['accessToken'] = $response['accessToken'];
                $tokenData['expiresAt'] = time () + $response['expiresIn'];
                $tokenData['refreshToken'] = $response['refreshToken'];
                $token = new SsoToken(
                    $tokenData['accessToken'],
                    $tokenData['expiresAt'],
                    $tokenData['refreshToken'],
                    isset($tokenData['clientId']) ? $tokenData['clientId'] : null,
                    isset($tokenData['clientSecret']) ? $tokenData['clientSecret'] : null,
                    isset($tokenData['registrationExpiresAt']) ? $tokenData['registrationExpiresAt'] : null,
                    isset($tokenData['region']) ? $tokenData['region'] : null,
                    isset($tokenData['startUrl']) ? $tokenData['startUrl'] : null                );

                $this->writeNewTokenDataToDisk($tokenData, $tokenLocation);

                return $token;
            }
        }
    }

    public function shouldAttemptRefresh()
    {
        $tokenLocation = self::getTokenLocation($this->ssoProfileName);
        $tokenData = $this->getTokenData($tokenLocation);
        return strtotime("-10 minutes") >= strtotime($tokenData['expiresAt']);
    }

    /**
     * @param $sso_session
     * @return string
     */
    public static function getTokenLocation($sso_session)
    {
        return self::getHomeDir()
            . '/.aws/sso/cache/'
            . mb_convert_encoding(sha1($sso_session), "UTF-8")
            . ".json";
    }

    /**
     * @param $tokenLocation
     * @return array
     */
    function getTokenData($tokenLocation)
    {
        return json_decode(file_get_contents($tokenLocation), true);
    }

    /**
     * @param $tokenData
     * @param $tokenLocation
     * @return mixed
     */
    private function validateTokenData($tokenLocation, $tokenData)
    {
        if (empty($tokenData['accessToken']) || empty($tokenData['expiresAt'])) {
            throw new TokenException(
                "Token file at {$tokenLocation} must contain an access token and an expiration"
            );
        }

        $expiration = strtotime($tokenData['expiresAt']);
        if ($expiration === false) {
            throw new TokenException("Cached SSO token returned an invalid expiration");
        } elseif ($expiration < time()) {
            throw new TokenException("Cached SSO token returned an expired token");
        }
        return $tokenData;
    }

    /**
     * @param array $tokenData
     * @param string $tokenLocation
     * @return void
     */
    private function writeNewTokenDataToDisk(array $tokenData, $tokenLocation)
    {
        $tokenData['expiresAt'] = gmdate(
            'Y-m-d\TH:i:s\Z',
            $tokenData['expiresAt']
        );
        file_put_contents($tokenLocation, json_encode(array_filter($tokenData)));
    }
}


<?php
namespace Aws\Token;

use Aws\Token\TokenInterface;

/**
 * Basic implementation of the AWS Token interface that allows callers to
 * pass in an AWS token in the constructor.
 */
class Token implements TokenInterface, \Serializable
{
    protected $token;
    protected $expires;

    /**
     * Constructs a new basic token object, with the specified AWS
     * token
     *
     * @param string $token   Security token to use
     * @param int    $expires UNIX timestamp for when the token expires
     */
    public function __construct($token, $expires = null)
    {
        $this->token = $token;
        $this->expires = $expires;
    }

    /**
     * Sets the state of a token object
     *
     * @param array $state   array containing 'token' and 'expires'
     */
    public static function __set_state(array $state)
    {
        return new self(
            $state['token'],
            $state['expires']
        );
    }

    /**
     * @return string
     */
    public function getToken()
    {
        return $this->token;
    }

    /**
     * @return int
     */
    public function getExpiration()
    {
        return $this->expires;
    }

    /**
     * @return bool
     */
    public function isExpired()
    {
        return $this->expires !== null && time() >= $this->expires;
    }

    /**
     * @return array
     */
    public function toArray()
    {
        return [
            'token'   => $this->token,
            'expires' => $this->expires
        ];
    }

    /**
     * @return string
     */
    public function serialize()
    {
        return json_encode($this->__serialize());
    }

    /**
     * Sets the state of the object from serialized json data
     */
    public function unserialize($serialized)
    {
        $data = json_decode($serialized, true);

        $this->__unserialize($data);
    }

    /**
     * @return array
     */
    public function __serialize()
    {
        return $this->toArray();
    }

    /**
     *  Sets the state of this object from an array
     */
    public function __unserialize($data)
    {
        $this->token = $data['token'];
        $this->expires = $data['expires'];
    }
}


<?php
namespace Aws\Token;

use Psr\Http\Message\RequestInterface;

/**
 * Interface used to provide interchangeable strategies for adding authorization
 * to requests using the various AWS signature protocols.
 */
interface TokenAuthorization
{
    /**
     * Adds the specified token to a request by adding the required headers.
     *
     * @param RequestInterface     $request     Request to sign
     * @param TokenInterface       $token       Token
     *
     * @return RequestInterface Returns the modified request.
     */
    public function authorizeRequest(
        RequestInterface $request,
        TokenInterface $token
    );
}


<?php
namespace Aws\Token;

/**
 * Provides access to an AWS token used for accessing AWS services
 */
interface TokenInterface
{
    /**
     * Returns the token this token object.
     *
     * @return string
     */
    public function getToken();

    /**
     * Get the UNIX timestamp in which the token will expire
     *
     * @return int|null
     */
    public function getExpiration();

    /**
     * Check if the token are expired
     *
     * @return bool
     */
    public function isExpired();

    /**
     * Converts the token to an associative array.
     *
     * @return array
     */
    public function toArray();
}


<?php
namespace Aws\Token;

use Aws;
use Aws\Api\DateTimeResult;
use Aws\CacheInterface;
use Aws\Exception\TokenException;
use GuzzleHttp\Promise;

/**
 * Token providers are functions that accept no arguments and return a
 * promise that is fulfilled with an {@see \Aws\Token\TokenInterface}
 * or rejected with an {@see \Aws\Exception\TokenException}.
 *
 * <code>
 * use Aws\Token\TokenProvider;
 * $provider = TokenProvider::defaultProvider();
 * // Returns a TokenInterface or throws.
 * $token = $provider()->wait();
 * </code>
 *
 * Token providers can be composed to create a token using conditional
 * logic that can create different tokens in different environments. You
 * can compose multiple providers into a single provider using
 * {@see Aws\Token\TokenProvider::chain}. This function accepts
 * providers as variadic arguments and returns a new function that will invoke
 * each provider until a token is successfully returned.
 */
class TokenProvider
{
    use ParsesIniTrait;
    const ENV_PROFILE = 'AWS_PROFILE';

    /**
     * Create a default token provider tha checks for cached a SSO token from
     * the CLI
     *
     * This provider is automatically wrapped in a memoize function that caches
     * previously provided tokens.
     *
     * @param array $config Optional array of token provider options.
     *
     * @return callable
     */
    public static function defaultProvider(array $config = [])
    {

        $cacheable = [
            'sso',
        ];

        $defaultChain = [];

        if (
            !isset($config['use_aws_shared_config_files'])
            || $config['use_aws_shared_config_files'] !== false
        ) {
            $profileName = getenv(self::ENV_PROFILE) ?: 'default';
            $defaultChain['sso'] = self::sso(
                $profileName,
                self::getHomeDir() . '/.aws/config',
                $config
            );
        }

        if (isset($config['token'])
            && $config['token'] instanceof CacheInterface
        ) {
            foreach ($cacheable as $provider) {
                if (isset($defaultChain[$provider])) {
                    $defaultChain[$provider] = self::cache(
                        $defaultChain[$provider],
                        $config['token'],
                        'aws_cached_' . $provider . '_token'
                    );
                }
            }
        }

        return self::memoize(
            call_user_func_array(
                [TokenProvider::class, 'chain'],
                array_values($defaultChain)
            )
        );
    }

    /**
     * Create a token provider function from a static token.
     *
     * @param TokenInterface $token
     *
     * @return callable
     */
    public static function fromToken(TokenInterface $token)
    {
        $promise = Promise\Create::promiseFor($token);

        return function () use ($promise) {
            return $promise;
        };
    }

    /**
     * Creates an aggregate token provider that invokes the provided
     * variadic providers one after the other until a provider returns
     * a token.
     *
     * @return callable
     */
    public static function chain()
    {
        $links = func_get_args();
        //Common use case for when aws_shared_config_files is false
        if (empty($links)) {
            return function () {
                return Promise\Create::promiseFor(false);
            };
        }

        return function () use ($links) {
            /** @var callable $parent */
            $parent = array_shift($links);
            $promise = $parent();
            while ($next = array_shift($links)) {
                $promise = $promise->otherwise($next);
            }
            return $promise;
        };
    }

    /**
     * Wraps a token provider and caches a previously provided token.
     * Ensures that cached tokens are refreshed when they expire.
     *
     * @param callable $provider Token provider function to wrap.
     * @return callable
     */
    public static function memoize(callable $provider)
    {
        return function () use ($provider) {
            static $result;
            static $isConstant;

            // Constant tokens will be returned constantly.
            if ($isConstant) {
                return $result;
            }

            // Create the initial promise that will be used as the cached value
            // until it expires.
            if (null === $result) {
                $result = $provider();
            }

            // Return a token that could expire and refresh when needed.
            return $result
                ->then(function (TokenInterface $token) use ($provider, &$isConstant, &$result) {
                    // Determine if the token is constant.
                    if (!$token->getExpiration()) {
                        $isConstant = true;
                        return $token;
                    }

                    if (!$token->isExpired()) {
                        return $token;
                    }
                    return $result = $provider();
                })
                ->otherwise(function($reason) use (&$result) {
                    // Cleanup rejected promise.
                    $result = null;
                    return Promise\Create::promiseFor(null);
                });
        };
    }

    /**
     * Wraps a token provider and saves provided token in an
     * instance of Aws\CacheInterface. Forwards calls when no token found
     * in cache and updates cache with the results.
     *
     * @param callable $provider Token provider function to wrap
     * @param CacheInterface $cache Cache to store the token
     * @param string|null $cacheKey (optional) Cache key to use
     *
     * @return callable
     */
    public static function cache(
        callable $provider,
        CacheInterface $cache,
        $cacheKey = null
    ) {
        $cacheKey = $cacheKey ?: 'aws_cached_token';

        return function () use ($provider, $cache, $cacheKey) {
            $found = $cache->get($cacheKey);
            if (is_array($found) && isset($found['token'])) {
                if (isset($found['token']) && $found['token'] instanceof TokenInterface) {
                    $foundToken = $found['token'];
                    if (!$foundToken->isExpired()) {
                        return Promise\Create::promiseFor($foundToken);
                    }
                    if (isset($found['refreshMethod']) && is_callable($found['refreshMethod'])) {
                        return Promise\Create::promiseFor($found['refreshMethod']());
                    }
                }
            }

            return $provider()
                ->then(function (TokenInterface $token) use (
                    $cache,
                    $cacheKey
                ) {
                    $cache->set(
                        $cacheKey,
                        $token,
                        null === $token->getExpiration() ?
                            0 : $token->getExpiration() - time()
                    );

                    return $token;
                });
        };
    }

    /**
     * Gets profiles from the ~/.aws/config ini file
     */
    private static function loadDefaultProfiles() {
        $profiles = [];
        $configFile = self::getHomeDir() . '/.aws/config';

        if (file_exists($configFile)) {
            $configProfileData = \Aws\parse_ini_file($configFile, true, INI_SCANNER_RAW);
            foreach ($configProfileData as $name => $profile) {
                // standardize config profile names
                $name = str_replace('profile ', '', $name);
                if (!isset($profiles[$name])) {
                    $profiles[$name] = $profile;
                }
            }
        }

        return $profiles;
    }

    private static function reject($msg)
    {
        return new Promise\RejectedPromise(new TokenException($msg));
    }

    /**
     * Token provider that creates a token from cached sso credentials
     *
     * @param string $ssoProfileName the name of the ini profile name
     * @param string $filename the location of the ini file
     * @param array $config configuration options
     *
     * @return SsoToken
     * @see Aws\Token\SsoToken for $config details.
     */
    public static function sso($profileName, $filename, $config = [])
    {
        return new SsoTokenProvider($profileName, $filename, $config);
    }
}


<?php
namespace Aws\TranscribeService;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Transcribe Service** service.
 * @method \Aws\Result createCallAnalyticsCategory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCallAnalyticsCategoryAsync(array $args = [])
 * @method \Aws\Result createLanguageModel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createLanguageModelAsync(array $args = [])
 * @method \Aws\Result createMedicalVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createMedicalVocabularyAsync(array $args = [])
 * @method \Aws\Result createVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createVocabularyAsync(array $args = [])
 * @method \Aws\Result createVocabularyFilter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createVocabularyFilterAsync(array $args = [])
 * @method \Aws\Result deleteCallAnalyticsCategory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCallAnalyticsCategoryAsync(array $args = [])
 * @method \Aws\Result deleteCallAnalyticsJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCallAnalyticsJobAsync(array $args = [])
 * @method \Aws\Result deleteLanguageModel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteLanguageModelAsync(array $args = [])
 * @method \Aws\Result deleteMedicalTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteMedicalTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result deleteMedicalVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteMedicalVocabularyAsync(array $args = [])
 * @method \Aws\Result deleteTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result deleteVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteVocabularyAsync(array $args = [])
 * @method \Aws\Result deleteVocabularyFilter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteVocabularyFilterAsync(array $args = [])
 * @method \Aws\Result describeLanguageModel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLanguageModelAsync(array $args = [])
 * @method \Aws\Result getCallAnalyticsCategory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCallAnalyticsCategoryAsync(array $args = [])
 * @method \Aws\Result getCallAnalyticsJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCallAnalyticsJobAsync(array $args = [])
 * @method \Aws\Result getMedicalTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMedicalTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result getMedicalVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMedicalVocabularyAsync(array $args = [])
 * @method \Aws\Result getTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result getVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getVocabularyAsync(array $args = [])
 * @method \Aws\Result getVocabularyFilter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getVocabularyFilterAsync(array $args = [])
 * @method \Aws\Result listCallAnalyticsCategories(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCallAnalyticsCategoriesAsync(array $args = [])
 * @method \Aws\Result listCallAnalyticsJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCallAnalyticsJobsAsync(array $args = [])
 * @method \Aws\Result listLanguageModels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLanguageModelsAsync(array $args = [])
 * @method \Aws\Result listMedicalTranscriptionJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listMedicalTranscriptionJobsAsync(array $args = [])
 * @method \Aws\Result listMedicalVocabularies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listMedicalVocabulariesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTranscriptionJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTranscriptionJobsAsync(array $args = [])
 * @method \Aws\Result listVocabularies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVocabulariesAsync(array $args = [])
 * @method \Aws\Result listVocabularyFilters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVocabularyFiltersAsync(array $args = [])
 * @method \Aws\Result startCallAnalyticsJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startCallAnalyticsJobAsync(array $args = [])
 * @method \Aws\Result startMedicalTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startMedicalTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result startTranscriptionJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startTranscriptionJobAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateCallAnalyticsCategory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateCallAnalyticsCategoryAsync(array $args = [])
 * @method \Aws\Result updateMedicalVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateMedicalVocabularyAsync(array $args = [])
 * @method \Aws\Result updateVocabulary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateVocabularyAsync(array $args = [])
 * @method \Aws\Result updateVocabularyFilter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateVocabularyFilterAsync(array $args = [])
 */
class TranscribeServiceClient extends AwsClient {}


<?php
namespace Aws\TranscribeService\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon Transcribe Service** service.
 */
class TranscribeServiceException extends AwsException {}


<?php
namespace Aws\Transfer;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Transfer for SFTP** service.
 * @method \Aws\Result createAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccessAsync(array $args = [])
 * @method \Aws\Result createAgreement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAgreementAsync(array $args = [])
 * @method \Aws\Result createConnector(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createConnectorAsync(array $args = [])
 * @method \Aws\Result createProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createProfileAsync(array $args = [])
 * @method \Aws\Result createServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServerAsync(array $args = [])
 * @method \Aws\Result createUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
 * @method \Aws\Result createWorkflow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWorkflowAsync(array $args = [])
 * @method \Aws\Result deleteAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccessAsync(array $args = [])
 * @method \Aws\Result deleteAgreement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAgreementAsync(array $args = [])
 * @method \Aws\Result deleteCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCertificateAsync(array $args = [])
 * @method \Aws\Result deleteConnector(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteConnectorAsync(array $args = [])
 * @method \Aws\Result deleteHostKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteHostKeyAsync(array $args = [])
 * @method \Aws\Result deleteProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteProfileAsync(array $args = [])
 * @method \Aws\Result deleteServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServerAsync(array $args = [])
 * @method \Aws\Result deleteSshPublicKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSshPublicKeyAsync(array $args = [])
 * @method \Aws\Result deleteUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
 * @method \Aws\Result deleteWorkflow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWorkflowAsync(array $args = [])
 * @method \Aws\Result describeAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccessAsync(array $args = [])
 * @method \Aws\Result describeAgreement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAgreementAsync(array $args = [])
 * @method \Aws\Result describeCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCertificateAsync(array $args = [])
 * @method \Aws\Result describeConnector(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeConnectorAsync(array $args = [])
 * @method \Aws\Result describeExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeExecutionAsync(array $args = [])
 * @method \Aws\Result describeHostKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeHostKeyAsync(array $args = [])
 * @method \Aws\Result describeProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeProfileAsync(array $args = [])
 * @method \Aws\Result describeSecurityPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSecurityPolicyAsync(array $args = [])
 * @method \Aws\Result describeServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeServerAsync(array $args = [])
 * @method \Aws\Result describeUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUserAsync(array $args = [])
 * @method \Aws\Result describeWorkflow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorkflowAsync(array $args = [])
 * @method \Aws\Result importCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importCertificateAsync(array $args = [])
 * @method \Aws\Result importHostKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importHostKeyAsync(array $args = [])
 * @method \Aws\Result importSshPublicKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importSshPublicKeyAsync(array $args = [])
 * @method \Aws\Result listAccesses(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccessesAsync(array $args = [])
 * @method \Aws\Result listAgreements(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAgreementsAsync(array $args = [])
 * @method \Aws\Result listCertificates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCertificatesAsync(array $args = [])
 * @method \Aws\Result listConnectors(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listConnectorsAsync(array $args = [])
 * @method \Aws\Result listExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listExecutionsAsync(array $args = [])
 * @method \Aws\Result listHostKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listHostKeysAsync(array $args = [])
 * @method \Aws\Result listProfiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listProfilesAsync(array $args = [])
 * @method \Aws\Result listSecurityPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSecurityPoliciesAsync(array $args = [])
 * @method \Aws\Result listServers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listServersAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listUsers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listUsersAsync(array $args = [])
 * @method \Aws\Result listWorkflows(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorkflowsAsync(array $args = [])
 * @method \Aws\Result sendWorkflowStepState(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendWorkflowStepStateAsync(array $args = [])
 * @method \Aws\Result startFileTransfer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startFileTransferAsync(array $args = [])
 * @method \Aws\Result startServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startServerAsync(array $args = [])
 * @method \Aws\Result stopServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopServerAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result testIdentityProvider(array $args = [])
 * @method \GuzzleHttp\Promise\Promise testIdentityProviderAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAccessAsync(array $args = [])
 * @method \Aws\Result updateAgreement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAgreementAsync(array $args = [])
 * @method \Aws\Result updateCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateCertificateAsync(array $args = [])
 * @method \Aws\Result updateConnector(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateConnectorAsync(array $args = [])
 * @method \Aws\Result updateHostKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateHostKeyAsync(array $args = [])
 * @method \Aws\Result updateProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateProfileAsync(array $args = [])
 * @method \Aws\Result updateServer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateServerAsync(array $args = [])
 * @method \Aws\Result updateUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateUserAsync(array $args = [])
 */
class TransferClient extends AwsClient {}


<?php
namespace Aws\Transfer\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Transfer for SFTP** service.
 */
class TransferException extends AwsException {}


<?php
namespace Aws\Translate;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Translate** service.
 * @method \Aws\Result createParallelData(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createParallelDataAsync(array $args = [])
 * @method \Aws\Result deleteParallelData(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteParallelDataAsync(array $args = [])
 * @method \Aws\Result deleteTerminology(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTerminologyAsync(array $args = [])
 * @method \Aws\Result describeTextTranslationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTextTranslationJobAsync(array $args = [])
 * @method \Aws\Result getParallelData(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getParallelDataAsync(array $args = [])
 * @method \Aws\Result getTerminology(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTerminologyAsync(array $args = [])
 * @method \Aws\Result importTerminology(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importTerminologyAsync(array $args = [])
 * @method \Aws\Result listLanguages(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLanguagesAsync(array $args = [])
 * @method \Aws\Result listParallelData(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listParallelDataAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTerminologies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTerminologiesAsync(array $args = [])
 * @method \Aws\Result listTextTranslationJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTextTranslationJobsAsync(array $args = [])
 * @method \Aws\Result startTextTranslationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startTextTranslationJobAsync(array $args = [])
 * @method \Aws\Result stopTextTranslationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopTextTranslationJobAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result translateDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise translateDocumentAsync(array $args = [])
 * @method \Aws\Result translateText(array $args = [])
 * @method \GuzzleHttp\Promise\Promise translateTextAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateParallelData(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateParallelDataAsync(array $args = [])
 */
class TranslateClient extends AwsClient {}


<?php
namespace Aws\Translate\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon Translate** service.
 */
class TranslateException extends AwsException {}


<?php
namespace Aws\VerifiedPermissions;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Verified Permissions** service.
 * @method \Aws\Result createIdentitySource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createIdentitySourceAsync(array $args = [])
 * @method \Aws\Result createPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createPolicyAsync(array $args = [])
 * @method \Aws\Result createPolicyStore(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createPolicyStoreAsync(array $args = [])
 * @method \Aws\Result createPolicyTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createPolicyTemplateAsync(array $args = [])
 * @method \Aws\Result deleteIdentitySource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIdentitySourceAsync(array $args = [])
 * @method \Aws\Result deletePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePolicyAsync(array $args = [])
 * @method \Aws\Result deletePolicyStore(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePolicyStoreAsync(array $args = [])
 * @method \Aws\Result deletePolicyTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePolicyTemplateAsync(array $args = [])
 * @method \Aws\Result getIdentitySource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIdentitySourceAsync(array $args = [])
 * @method \Aws\Result getPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPolicyAsync(array $args = [])
 * @method \Aws\Result getPolicyStore(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPolicyStoreAsync(array $args = [])
 * @method \Aws\Result getPolicyTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPolicyTemplateAsync(array $args = [])
 * @method \Aws\Result getSchema(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSchemaAsync(array $args = [])
 * @method \Aws\Result isAuthorized(array $args = [])
 * @method \GuzzleHttp\Promise\Promise isAuthorizedAsync(array $args = [])
 * @method \Aws\Result isAuthorizedWithToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise isAuthorizedWithTokenAsync(array $args = [])
 * @method \Aws\Result listIdentitySources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIdentitySourcesAsync(array $args = [])
 * @method \Aws\Result listPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPoliciesAsync(array $args = [])
 * @method \Aws\Result listPolicyStores(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPolicyStoresAsync(array $args = [])
 * @method \Aws\Result listPolicyTemplates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPolicyTemplatesAsync(array $args = [])
 * @method \Aws\Result putSchema(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putSchemaAsync(array $args = [])
 * @method \Aws\Result updateIdentitySource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIdentitySourceAsync(array $args = [])
 * @method \Aws\Result updatePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePolicyAsync(array $args = [])
 * @method \Aws\Result updatePolicyStore(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePolicyStoreAsync(array $args = [])
 * @method \Aws\Result updatePolicyTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePolicyTemplateAsync(array $args = [])
 */
class VerifiedPermissionsClient extends AwsClient {}


<?php
namespace Aws\VerifiedPermissions\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon Verified Permissions** service.
 */
class VerifiedPermissionsException extends AwsException {}


<?php
namespace Aws\VoiceID;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Voice ID** service.
 * @method \Aws\Result associateFraudster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateFraudsterAsync(array $args = [])
 * @method \Aws\Result createDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDomainAsync(array $args = [])
 * @method \Aws\Result createWatchlist(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWatchlistAsync(array $args = [])
 * @method \Aws\Result deleteDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDomainAsync(array $args = [])
 * @method \Aws\Result deleteFraudster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteFraudsterAsync(array $args = [])
 * @method \Aws\Result deleteSpeaker(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSpeakerAsync(array $args = [])
 * @method \Aws\Result deleteWatchlist(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWatchlistAsync(array $args = [])
 * @method \Aws\Result describeDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDomainAsync(array $args = [])
 * @method \Aws\Result describeFraudster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeFraudsterAsync(array $args = [])
 * @method \Aws\Result describeFraudsterRegistrationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeFraudsterRegistrationJobAsync(array $args = [])
 * @method \Aws\Result describeSpeaker(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSpeakerAsync(array $args = [])
 * @method \Aws\Result describeSpeakerEnrollmentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSpeakerEnrollmentJobAsync(array $args = [])
 * @method \Aws\Result describeWatchlist(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWatchlistAsync(array $args = [])
 * @method \Aws\Result disassociateFraudster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateFraudsterAsync(array $args = [])
 * @method \Aws\Result evaluateSession(array $args = [])
 * @method \GuzzleHttp\Promise\Promise evaluateSessionAsync(array $args = [])
 * @method \Aws\Result listDomains(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDomainsAsync(array $args = [])
 * @method \Aws\Result listFraudsterRegistrationJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFraudsterRegistrationJobsAsync(array $args = [])
 * @method \Aws\Result listFraudsters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFraudstersAsync(array $args = [])
 * @method \Aws\Result listSpeakerEnrollmentJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSpeakerEnrollmentJobsAsync(array $args = [])
 * @method \Aws\Result listSpeakers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSpeakersAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWatchlists(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWatchlistsAsync(array $args = [])
 * @method \Aws\Result optOutSpeaker(array $args = [])
 * @method \GuzzleHttp\Promise\Promise optOutSpeakerAsync(array $args = [])
 * @method \Aws\Result startFraudsterRegistrationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startFraudsterRegistrationJobAsync(array $args = [])
 * @method \Aws\Result startSpeakerEnrollmentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startSpeakerEnrollmentJobAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDomainAsync(array $args = [])
 * @method \Aws\Result updateWatchlist(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWatchlistAsync(array $args = [])
 */
class VoiceIDClient extends AwsClient {}


<?php
namespace Aws\VoiceID\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon Voice ID** service.
 */
class VoiceIDException extends AwsException {}


<?php
namespace Aws\VPCLattice;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon VPC Lattice** service.
 * @method \Aws\Result batchUpdateRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchUpdateRuleAsync(array $args = [])
 * @method \Aws\Result createAccessLogSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccessLogSubscriptionAsync(array $args = [])
 * @method \Aws\Result createListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createListenerAsync(array $args = [])
 * @method \Aws\Result createRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleAsync(array $args = [])
 * @method \Aws\Result createService(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServiceAsync(array $args = [])
 * @method \Aws\Result createServiceNetwork(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServiceNetworkAsync(array $args = [])
 * @method \Aws\Result createServiceNetworkServiceAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServiceNetworkServiceAssociationAsync(array $args = [])
 * @method \Aws\Result createServiceNetworkVpcAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createServiceNetworkVpcAssociationAsync(array $args = [])
 * @method \Aws\Result createTargetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTargetGroupAsync(array $args = [])
 * @method \Aws\Result deleteAccessLogSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccessLogSubscriptionAsync(array $args = [])
 * @method \Aws\Result deleteAuthPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAuthPolicyAsync(array $args = [])
 * @method \Aws\Result deleteListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteListenerAsync(array $args = [])
 * @method \Aws\Result deleteResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourcePolicyAsync(array $args = [])
 * @method \Aws\Result deleteRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleAsync(array $args = [])
 * @method \Aws\Result deleteService(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServiceAsync(array $args = [])
 * @method \Aws\Result deleteServiceNetwork(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServiceNetworkAsync(array $args = [])
 * @method \Aws\Result deleteServiceNetworkServiceAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServiceNetworkServiceAssociationAsync(array $args = [])
 * @method \Aws\Result deleteServiceNetworkVpcAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteServiceNetworkVpcAssociationAsync(array $args = [])
 * @method \Aws\Result deleteTargetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTargetGroupAsync(array $args = [])
 * @method \Aws\Result deregisterTargets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterTargetsAsync(array $args = [])
 * @method \Aws\Result getAccessLogSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAccessLogSubscriptionAsync(array $args = [])
 * @method \Aws\Result getAuthPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAuthPolicyAsync(array $args = [])
 * @method \Aws\Result getListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getListenerAsync(array $args = [])
 * @method \Aws\Result getResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcePolicyAsync(array $args = [])
 * @method \Aws\Result getRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleAsync(array $args = [])
 * @method \Aws\Result getService(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getServiceAsync(array $args = [])
 * @method \Aws\Result getServiceNetwork(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getServiceNetworkAsync(array $args = [])
 * @method \Aws\Result getServiceNetworkServiceAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getServiceNetworkServiceAssociationAsync(array $args = [])
 * @method \Aws\Result getServiceNetworkVpcAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getServiceNetworkVpcAssociationAsync(array $args = [])
 * @method \Aws\Result getTargetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTargetGroupAsync(array $args = [])
 * @method \Aws\Result listAccessLogSubscriptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccessLogSubscriptionsAsync(array $args = [])
 * @method \Aws\Result listListeners(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listListenersAsync(array $args = [])
 * @method \Aws\Result listRules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRulesAsync(array $args = [])
 * @method \Aws\Result listServiceNetworkServiceAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listServiceNetworkServiceAssociationsAsync(array $args = [])
 * @method \Aws\Result listServiceNetworkVpcAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listServiceNetworkVpcAssociationsAsync(array $args = [])
 * @method \Aws\Result listServiceNetworks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listServiceNetworksAsync(array $args = [])
 * @method \Aws\Result listServices(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listServicesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTargetGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTargetGroupsAsync(array $args = [])
 * @method \Aws\Result listTargets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTargetsAsync(array $args = [])
 * @method \Aws\Result putAuthPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putAuthPolicyAsync(array $args = [])
 * @method \Aws\Result putResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putResourcePolicyAsync(array $args = [])
 * @method \Aws\Result registerTargets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerTargetsAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateAccessLogSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAccessLogSubscriptionAsync(array $args = [])
 * @method \Aws\Result updateListener(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateListenerAsync(array $args = [])
 * @method \Aws\Result updateRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleAsync(array $args = [])
 * @method \Aws\Result updateService(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateServiceAsync(array $args = [])
 * @method \Aws\Result updateServiceNetwork(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateServiceNetworkAsync(array $args = [])
 * @method \Aws\Result updateServiceNetworkVpcAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateServiceNetworkVpcAssociationAsync(array $args = [])
 * @method \Aws\Result updateTargetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTargetGroupAsync(array $args = [])
 */
class VPCLatticeClient extends AwsClient {}


<?php
namespace Aws\VPCLattice\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Amazon VPC Lattice** service.
 */
class VPCLatticeException extends AwsException {}


<?php
namespace Aws\Waf;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS WAF** service.
 *
 * @method \Aws\Result createByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createByteMatchSetAsync(array $args = [])
 * @method \Aws\Result createGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result createIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createIPSetAsync(array $args = [])
 * @method \Aws\Result createRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result createRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result createRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result createRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleAsync(array $args = [])
 * @method \Aws\Result createRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleGroupAsync(array $args = [])
 * @method \Aws\Result createSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result createSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result createWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWebACLAsync(array $args = [])
 * @method \Aws\Result createWebACLMigrationStack(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWebACLMigrationStackAsync(array $args = [])
 * @method \Aws\Result createXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createXssMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteByteMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIPSetAsync(array $args = [])
 * @method \Aws\Result deleteLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result deletePermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePermissionPolicyAsync(array $args = [])
 * @method \Aws\Result deleteRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result deleteRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result deleteRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleAsync(array $args = [])
 * @method \Aws\Result deleteRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleGroupAsync(array $args = [])
 * @method \Aws\Result deleteSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result deleteSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWebACLAsync(array $args = [])
 * @method \Aws\Result deleteXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteXssMatchSetAsync(array $args = [])
 * @method \Aws\Result getByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getByteMatchSetAsync(array $args = [])
 * @method \Aws\Result getChangeToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getChangeTokenAsync(array $args = [])
 * @method \Aws\Result getChangeTokenStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getChangeTokenStatusAsync(array $args = [])
 * @method \Aws\Result getGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result getIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIPSetAsync(array $args = [])
 * @method \Aws\Result getLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result getPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result getRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result getRateBasedRuleManagedKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRateBasedRuleManagedKeysAsync(array $args = [])
 * @method \Aws\Result getRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result getRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result getRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleAsync(array $args = [])
 * @method \Aws\Result getRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleGroupAsync(array $args = [])
 * @method \Aws\Result getSampledRequests(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSampledRequestsAsync(array $args = [])
 * @method \Aws\Result getSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result getSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result getWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWebACLAsync(array $args = [])
 * @method \Aws\Result getXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getXssMatchSetAsync(array $args = [])
 * @method \Aws\Result listActivatedRulesInRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listActivatedRulesInRuleGroupAsync(array $args = [])
 * @method \Aws\Result listByteMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listByteMatchSetsAsync(array $args = [])
 * @method \Aws\Result listGeoMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGeoMatchSetsAsync(array $args = [])
 * @method \Aws\Result listIPSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIPSetsAsync(array $args = [])
 * @method \Aws\Result listLoggingConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLoggingConfigurationsAsync(array $args = [])
 * @method \Aws\Result listRateBasedRules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRateBasedRulesAsync(array $args = [])
 * @method \Aws\Result listRegexMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRegexMatchSetsAsync(array $args = [])
 * @method \Aws\Result listRegexPatternSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRegexPatternSetsAsync(array $args = [])
 * @method \Aws\Result listRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listRules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRulesAsync(array $args = [])
 * @method \Aws\Result listSizeConstraintSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSizeConstraintSetsAsync(array $args = [])
 * @method \Aws\Result listSqlInjectionMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSqlInjectionMatchSetsAsync(array $args = [])
 * @method \Aws\Result listSubscribedRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSubscribedRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWebACLs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWebACLsAsync(array $args = [])
 * @method \Aws\Result listXssMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listXssMatchSetsAsync(array $args = [])
 * @method \Aws\Result putLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result putPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateByteMatchSetAsync(array $args = [])
 * @method \Aws\Result updateGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result updateIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIPSetAsync(array $args = [])
 * @method \Aws\Result updateRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result updateRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result updateRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result updateRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleAsync(array $args = [])
 * @method \Aws\Result updateRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleGroupAsync(array $args = [])
 * @method \Aws\Result updateSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result updateSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result updateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWebACLAsync(array $args = [])
 * @method \Aws\Result updateXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateXssMatchSetAsync(array $args = [])
 */
class WafClient extends AwsClient {}


<?php
namespace Aws\Waf\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS WAF** service.
 */
class WafException extends AwsException {}


<?php
namespace Aws\WafRegional;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS WAF Regional** service.
 * @method \Aws\Result associateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateWebACLAsync(array $args = [])
 * @method \Aws\Result createByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createByteMatchSetAsync(array $args = [])
 * @method \Aws\Result createGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result createIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createIPSetAsync(array $args = [])
 * @method \Aws\Result createRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result createRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result createRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result createRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleAsync(array $args = [])
 * @method \Aws\Result createRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleGroupAsync(array $args = [])
 * @method \Aws\Result createSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result createSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result createWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWebACLAsync(array $args = [])
 * @method \Aws\Result createWebACLMigrationStack(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWebACLMigrationStackAsync(array $args = [])
 * @method \Aws\Result createXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createXssMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteByteMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIPSetAsync(array $args = [])
 * @method \Aws\Result deleteLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result deletePermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePermissionPolicyAsync(array $args = [])
 * @method \Aws\Result deleteRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result deleteRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result deleteRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleAsync(array $args = [])
 * @method \Aws\Result deleteRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleGroupAsync(array $args = [])
 * @method \Aws\Result deleteSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result deleteSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result deleteWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWebACLAsync(array $args = [])
 * @method \Aws\Result deleteXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteXssMatchSetAsync(array $args = [])
 * @method \Aws\Result disassociateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateWebACLAsync(array $args = [])
 * @method \Aws\Result getByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getByteMatchSetAsync(array $args = [])
 * @method \Aws\Result getChangeToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getChangeTokenAsync(array $args = [])
 * @method \Aws\Result getChangeTokenStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getChangeTokenStatusAsync(array $args = [])
 * @method \Aws\Result getGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result getIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIPSetAsync(array $args = [])
 * @method \Aws\Result getLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result getPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result getRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result getRateBasedRuleManagedKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRateBasedRuleManagedKeysAsync(array $args = [])
 * @method \Aws\Result getRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result getRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result getRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleAsync(array $args = [])
 * @method \Aws\Result getRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleGroupAsync(array $args = [])
 * @method \Aws\Result getSampledRequests(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSampledRequestsAsync(array $args = [])
 * @method \Aws\Result getSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result getSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result getWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWebACLAsync(array $args = [])
 * @method \Aws\Result getWebACLForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWebACLForResourceAsync(array $args = [])
 * @method \Aws\Result getXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getXssMatchSetAsync(array $args = [])
 * @method \Aws\Result listActivatedRulesInRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listActivatedRulesInRuleGroupAsync(array $args = [])
 * @method \Aws\Result listByteMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listByteMatchSetsAsync(array $args = [])
 * @method \Aws\Result listGeoMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGeoMatchSetsAsync(array $args = [])
 * @method \Aws\Result listIPSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIPSetsAsync(array $args = [])
 * @method \Aws\Result listLoggingConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLoggingConfigurationsAsync(array $args = [])
 * @method \Aws\Result listRateBasedRules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRateBasedRulesAsync(array $args = [])
 * @method \Aws\Result listRegexMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRegexMatchSetsAsync(array $args = [])
 * @method \Aws\Result listRegexPatternSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRegexPatternSetsAsync(array $args = [])
 * @method \Aws\Result listResourcesForWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResourcesForWebACLAsync(array $args = [])
 * @method \Aws\Result listRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listRules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRulesAsync(array $args = [])
 * @method \Aws\Result listSizeConstraintSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSizeConstraintSetsAsync(array $args = [])
 * @method \Aws\Result listSqlInjectionMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSqlInjectionMatchSetsAsync(array $args = [])
 * @method \Aws\Result listSubscribedRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSubscribedRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWebACLs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWebACLsAsync(array $args = [])
 * @method \Aws\Result listXssMatchSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listXssMatchSetsAsync(array $args = [])
 * @method \Aws\Result putLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result putPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateByteMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateByteMatchSetAsync(array $args = [])
 * @method \Aws\Result updateGeoMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGeoMatchSetAsync(array $args = [])
 * @method \Aws\Result updateIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIPSetAsync(array $args = [])
 * @method \Aws\Result updateRateBasedRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRateBasedRuleAsync(array $args = [])
 * @method \Aws\Result updateRegexMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRegexMatchSetAsync(array $args = [])
 * @method \Aws\Result updateRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result updateRule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleAsync(array $args = [])
 * @method \Aws\Result updateRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleGroupAsync(array $args = [])
 * @method \Aws\Result updateSizeConstraintSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSizeConstraintSetAsync(array $args = [])
 * @method \Aws\Result updateSqlInjectionMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSqlInjectionMatchSetAsync(array $args = [])
 * @method \Aws\Result updateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWebACLAsync(array $args = [])
 * @method \Aws\Result updateXssMatchSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateXssMatchSetAsync(array $args = [])
 */
class WafRegionalClient extends AwsClient {}


<?php
namespace Aws\WafRegional\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS WAF Regional** service.
 */
class WafRegionalException extends AwsException {}


<?php
namespace Aws\WAFV2;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS WAFV2** service.
 * @method \Aws\Result associateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateWebACLAsync(array $args = [])
 * @method \Aws\Result checkCapacity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise checkCapacityAsync(array $args = [])
 * @method \Aws\Result createAPIKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAPIKeyAsync(array $args = [])
 * @method \Aws\Result createIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createIPSetAsync(array $args = [])
 * @method \Aws\Result createRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result createRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRuleGroupAsync(array $args = [])
 * @method \Aws\Result createWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWebACLAsync(array $args = [])
 * @method \Aws\Result deleteFirewallManagerRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteFirewallManagerRuleGroupsAsync(array $args = [])
 * @method \Aws\Result deleteIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIPSetAsync(array $args = [])
 * @method \Aws\Result deleteLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result deletePermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePermissionPolicyAsync(array $args = [])
 * @method \Aws\Result deleteRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result deleteRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRuleGroupAsync(array $args = [])
 * @method \Aws\Result deleteWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWebACLAsync(array $args = [])
 * @method \Aws\Result describeAllManagedProducts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAllManagedProductsAsync(array $args = [])
 * @method \Aws\Result describeManagedProductsByVendor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeManagedProductsByVendorAsync(array $args = [])
 * @method \Aws\Result describeManagedRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeManagedRuleGroupAsync(array $args = [])
 * @method \Aws\Result disassociateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateWebACLAsync(array $args = [])
 * @method \Aws\Result generateMobileSdkReleaseUrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise generateMobileSdkReleaseUrlAsync(array $args = [])
 * @method \Aws\Result getDecryptedAPIKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDecryptedAPIKeyAsync(array $args = [])
 * @method \Aws\Result getIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIPSetAsync(array $args = [])
 * @method \Aws\Result getLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result getManagedRuleSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getManagedRuleSetAsync(array $args = [])
 * @method \Aws\Result getMobileSdkRelease(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMobileSdkReleaseAsync(array $args = [])
 * @method \Aws\Result getPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result getRateBasedStatementManagedKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRateBasedStatementManagedKeysAsync(array $args = [])
 * @method \Aws\Result getRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result getRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRuleGroupAsync(array $args = [])
 * @method \Aws\Result getSampledRequests(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSampledRequestsAsync(array $args = [])
 * @method \Aws\Result getWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWebACLAsync(array $args = [])
 * @method \Aws\Result getWebACLForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWebACLForResourceAsync(array $args = [])
 * @method \Aws\Result listAPIKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAPIKeysAsync(array $args = [])
 * @method \Aws\Result listAvailableManagedRuleGroupVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAvailableManagedRuleGroupVersionsAsync(array $args = [])
 * @method \Aws\Result listAvailableManagedRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAvailableManagedRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listIPSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIPSetsAsync(array $args = [])
 * @method \Aws\Result listLoggingConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLoggingConfigurationsAsync(array $args = [])
 * @method \Aws\Result listManagedRuleSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listManagedRuleSetsAsync(array $args = [])
 * @method \Aws\Result listMobileSdkReleases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listMobileSdkReleasesAsync(array $args = [])
 * @method \Aws\Result listRegexPatternSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRegexPatternSetsAsync(array $args = [])
 * @method \Aws\Result listResourcesForWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResourcesForWebACLAsync(array $args = [])
 * @method \Aws\Result listRuleGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRuleGroupsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWebACLs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWebACLsAsync(array $args = [])
 * @method \Aws\Result putLoggingConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putLoggingConfigurationAsync(array $args = [])
 * @method \Aws\Result putManagedRuleSetVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putManagedRuleSetVersionsAsync(array $args = [])
 * @method \Aws\Result putPermissionPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putPermissionPolicyAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 * @method \Aws\Result updateIPSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIPSetAsync(array $args = [])
 * @method \Aws\Result updateManagedRuleSetVersionExpiryDate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateManagedRuleSetVersionExpiryDateAsync(array $args = [])
 * @method \Aws\Result updateRegexPatternSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRegexPatternSetAsync(array $args = [])
 * @method \Aws\Result updateRuleGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRuleGroupAsync(array $args = [])
 * @method \Aws\Result updateWebACL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWebACLAsync(array $args = [])
 */
class WAFV2Client extends AwsClient {}


<?php
namespace Aws\WAFV2\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS WAFV2** service.
 */
class WAFV2Exception extends AwsException {}