<?php
namespace Aws\Sqs;

use Aws\AwsClient;
use Aws\CommandInterface;
use Aws\Sqs\Exception\SqsException;
use GuzzleHttp\Psr7\Uri;
use GuzzleHttp\Psr7\UriResolver;
use Psr\Http\Message\RequestInterface;

/**
 * Client used to interact Amazon Simple Queue Service (Amazon SQS)
 *
 * @method \Aws\Result addPermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addPermissionAsync(array $args = [])
 * @method \Aws\Result cancelMessageMoveTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelMessageMoveTaskAsync(array $args = [])
 * @method \Aws\Result changeMessageVisibility(array $args = [])
 * @method \GuzzleHttp\Promise\Promise changeMessageVisibilityAsync(array $args = [])
 * @method \Aws\Result changeMessageVisibilityBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise changeMessageVisibilityBatchAsync(array $args = [])
 * @method \Aws\Result createQueue(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createQueueAsync(array $args = [])
 * @method \Aws\Result deleteMessage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteMessageAsync(array $args = [])
 * @method \Aws\Result deleteMessageBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteMessageBatchAsync(array $args = [])
 * @method \Aws\Result deleteQueue(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteQueueAsync(array $args = [])
 * @method \Aws\Result getQueueAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getQueueAttributesAsync(array $args = [])
 * @method \Aws\Result getQueueUrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getQueueUrlAsync(array $args = [])
 * @method \Aws\Result listDeadLetterSourceQueues(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDeadLetterSourceQueuesAsync(array $args = [])
 * @method \Aws\Result listMessageMoveTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listMessageMoveTasksAsync(array $args = [])
 * @method \Aws\Result listQueueTags(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listQueueTagsAsync(array $args = [])
 * @method \Aws\Result listQueues(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listQueuesAsync(array $args = [])
 * @method \Aws\Result purgeQueue(array $args = [])
 * @method \GuzzleHttp\Promise\Promise purgeQueueAsync(array $args = [])
 * @method \Aws\Result receiveMessage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise receiveMessageAsync(array $args = [])
 * @method \Aws\Result removePermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removePermissionAsync(array $args = [])
 * @method \Aws\Result sendMessage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendMessageAsync(array $args = [])
 * @method \Aws\Result sendMessageBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendMessageBatchAsync(array $args = [])
 * @method \Aws\Result setQueueAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise setQueueAttributesAsync(array $args = [])
 * @method \Aws\Result startMessageMoveTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startMessageMoveTaskAsync(array $args = [])
 * @method \Aws\Result tagQueue(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagQueueAsync(array $args = [])
 * @method \Aws\Result untagQueue(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagQueueAsync(array $args = [])
 */
class SqsClient extends AwsClient
{
    public function __construct(array $config)
    {
        parent::__construct($config);
        $list = $this->getHandlerList();
        $list->appendBuild($this->queueUrl(), 'sqs.queue_url');
        $list->appendSign($this->validateMd5(), 'sqs.md5');
    }

    /**
     * Converts a queue URL into a queue ARN.
     *
     * @param string $queueUrl The queue URL to perform the action on.
     *                         Retrieved when the queue is first created.
     *
     * @return string An ARN representation of the queue URL.
     */
    public function getQueueArn($queueUrl)
    {
        $queueArn = strtr($queueUrl, [
            'http://'        => 'arn:aws:',
            'https://'       => 'arn:aws:',
            '.amazonaws.com' => '',
            '/'              => ':',
            '.'              => ':',
        ]);

        // Cope with SQS' .fifo / :fifo arn inconsistency
        if (substr($queueArn, -5) === ':fifo') {
            $queueArn = substr_replace($queueArn, '.fifo', -5);
        }
        return $queueArn;
    }

    /**
     * Moves the URI of the queue to the URI in the input parameter.
     *
     * @return callable
     */
    private function queueUrl()
    {
        return static function (callable $handler) {
            return function (
                CommandInterface $c,
                RequestInterface $r = null
            ) use ($handler) {
                if ($c->hasParam('QueueUrl')) {
                    $r = $r->withUri(UriResolver::resolve(
                        $r->getUri(),
                        new Uri($c['QueueUrl'])
                    ));
                }
                return $handler($c, $r);
            };
        };
    }

    /**
     * Calculates the expected md5 hash of message attributes according to the encoding
     * scheme detailed in SQS documentation.
     *
     * @param array $message Message containing attributes for validation.
     *                       Retrieved when using MessageAttributeNames on
     *                       ReceiveMessage.
     *
     * @return string|null The md5 hash of the message attributes according to
     *                     the encoding scheme. Returns null when there are no
     *                     attributes.
     * @link http://docs.aws.amazon.com/AWSSimpleQueueService/latest/SQSDeveloperGuide/sqs-message-attributes.html#message-attributes-items-validation
     */
    private static function calculateMessageAttributesMd5($message)
    {
        if (empty($message['MessageAttributes'])
            || !is_array($message['MessageAttributes'])
        ) {
            return null;
        }

        ksort($message['MessageAttributes']);
        $attributeValues = "";
        foreach ($message['MessageAttributes'] as $name => $details) {
            $attributeValues .= self::getEncodedStringPiece($name);
            $attributeValues .= self::getEncodedStringPiece($details['DataType']);
            if (substr($details['DataType'], 0, 6) === 'Binary') {
                $attributeValues .= pack('c', 0x02);
                $attributeValues .= self::getEncodedBinaryPiece(
                    $details['BinaryValue']
                );
            } else {
                $attributeValues .= pack('c', 0x01);
                $attributeValues .= self::getEncodedStringPiece(
                    $details['StringValue']
                );
            }
        }

        return md5($attributeValues);
    }

    private static function calculateBodyMd5($message)
    {
        return md5($message['Body']);
    }

    private static function getEncodedStringPiece($piece)
    {
        $utf8Piece = iconv(
            mb_detect_encoding($piece, mb_detect_order(), true),
            "UTF-8",
            $piece
        );
        return self::getFourBytePieceLength($utf8Piece) . $utf8Piece;
    }

    private static function getEncodedBinaryPiece($piece)
    {
        return self::getFourBytePieceLength($piece) . $piece;
    }

    private static function getFourBytePieceLength($piece)
    {
        return pack('N', (int)strlen($piece));
    }

    /**
     * Validates ReceiveMessage body and message attribute MD5s.
     *
     * @return callable
     */
    private function validateMd5()
    {
        return static function (callable $handler) {
            return function (
                CommandInterface $c,
                RequestInterface $r = null
            ) use ($handler) {
                if ($c->getName() !== 'ReceiveMessage') {
                    return $handler($c, $r);
                }

                return $handler($c, $r)
                    ->then(
                        function ($result) use ($c, $r) {
                            foreach ((array) $result['Messages'] as $msg) {
                                $bodyMd5 = self::calculateBodyMd5($msg);
                                if (isset($msg['MD5OfBody'])
                                    && $bodyMd5 !== $msg['MD5OfBody']
                                ) {
                                    throw new SqsException(
                                        sprintf(
                                            'MD5 mismatch. Expected %s, found %s',
                                            $msg['MD5OfBody'],
                                            $bodyMd5
                                        ),
                                        $c,
                                        [
                                            'code' => 'ClientChecksumMismatch',
                                            'request' => $r
                                        ]
                                    );
                                }

                                if (isset($msg['MD5OfMessageAttributes'])) {
                                    $messageAttributesMd5 = self::calculateMessageAttributesMd5($msg);
                                    if ($messageAttributesMd5 !== $msg['MD5OfMessageAttributes']) {
                                        throw new SqsException(
                                            sprintf(
                                                'Attribute MD5 mismatch. Expected %s, found %s',
                                                $msg['MD5OfMessageAttributes'],
                                                $messageAttributesMd5
                                                    ? $messageAttributesMd5
                                                    : 'No Attributes'
                                            ),
                                            $c,
                                            [
                                                'code' => 'ClientChecksumMismatch',
                                                'request' => $r
                                            ]
                                        );
                                    }
                                } else if (isset($msg['MessageAttributes'])) {
                                    throw new SqsException(
                                        sprintf(
                                            'No Attribute MD5 found. Expected %s',
                                            self::calculateMessageAttributesMd5($msg)
                                        ),
                                        $c,
                                        [
                                            'code' => 'ClientChecksumMismatch',
                                            'request' => $r
                                        ]
                                    );
                                }
                            }
                            return $result;
                        }
                    );
            };
        };
    }
}


<?php
namespace Aws\Sqs\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the Amazon Simple Queue Service.
 */
class SqsException extends AwsException {}


<?php
namespace Aws\Ssm;

use Aws\AwsClient;

/**
 * Amazon EC2 Simple Systems Manager client.
 *
 * @method \Aws\Result addTagsToResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addTagsToResourceAsync(array $args = [])
 * @method \Aws\Result associateOpsItemRelatedItem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateOpsItemRelatedItemAsync(array $args = [])
 * @method \Aws\Result cancelCommand(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelCommandAsync(array $args = [])
 * @method \Aws\Result cancelMaintenanceWindowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelMaintenanceWindowExecutionAsync(array $args = [])
 * @method \Aws\Result createActivation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createActivationAsync(array $args = [])
 * @method \Aws\Result createAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAssociationAsync(array $args = [])
 * @method \Aws\Result createAssociationBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAssociationBatchAsync(array $args = [])
 * @method \Aws\Result createDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDocumentAsync(array $args = [])
 * @method \Aws\Result createMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result createOpsItem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createOpsItemAsync(array $args = [])
 * @method \Aws\Result createOpsMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createOpsMetadataAsync(array $args = [])
 * @method \Aws\Result createPatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createPatchBaselineAsync(array $args = [])
 * @method \Aws\Result createResourceDataSync(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createResourceDataSyncAsync(array $args = [])
 * @method \Aws\Result deleteActivation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteActivationAsync(array $args = [])
 * @method \Aws\Result deleteAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAssociationAsync(array $args = [])
 * @method \Aws\Result deleteDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDocumentAsync(array $args = [])
 * @method \Aws\Result deleteInventory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteInventoryAsync(array $args = [])
 * @method \Aws\Result deleteMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result deleteOpsMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteOpsMetadataAsync(array $args = [])
 * @method \Aws\Result deleteParameter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteParameterAsync(array $args = [])
 * @method \Aws\Result deleteParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteParametersAsync(array $args = [])
 * @method \Aws\Result deletePatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePatchBaselineAsync(array $args = [])
 * @method \Aws\Result deleteResourceDataSync(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourceDataSyncAsync(array $args = [])
 * @method \Aws\Result deleteResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourcePolicyAsync(array $args = [])
 * @method \Aws\Result deregisterManagedInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterManagedInstanceAsync(array $args = [])
 * @method \Aws\Result deregisterPatchBaselineForPatchGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterPatchBaselineForPatchGroupAsync(array $args = [])
 * @method \Aws\Result deregisterTargetFromMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterTargetFromMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result deregisterTaskFromMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterTaskFromMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result describeActivations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeActivationsAsync(array $args = [])
 * @method \Aws\Result describeAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAssociationAsync(array $args = [])
 * @method \Aws\Result describeAssociationExecutionTargets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAssociationExecutionTargetsAsync(array $args = [])
 * @method \Aws\Result describeAssociationExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAssociationExecutionsAsync(array $args = [])
 * @method \Aws\Result describeAutomationExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAutomationExecutionsAsync(array $args = [])
 * @method \Aws\Result describeAutomationStepExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAutomationStepExecutionsAsync(array $args = [])
 * @method \Aws\Result describeAvailablePatches(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAvailablePatchesAsync(array $args = [])
 * @method \Aws\Result describeDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDocumentAsync(array $args = [])
 * @method \Aws\Result describeDocumentPermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDocumentPermissionAsync(array $args = [])
 * @method \Aws\Result describeEffectiveInstanceAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEffectiveInstanceAssociationsAsync(array $args = [])
 * @method \Aws\Result describeEffectivePatchesForPatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEffectivePatchesForPatchBaselineAsync(array $args = [])
 * @method \Aws\Result describeInstanceAssociationsStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceAssociationsStatusAsync(array $args = [])
 * @method \Aws\Result describeInstanceInformation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceInformationAsync(array $args = [])
 * @method \Aws\Result describeInstancePatchStates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancePatchStatesAsync(array $args = [])
 * @method \Aws\Result describeInstancePatchStatesForPatchGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancePatchStatesForPatchGroupAsync(array $args = [])
 * @method \Aws\Result describeInstancePatches(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancePatchesAsync(array $args = [])
 * @method \Aws\Result describeInventoryDeletions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInventoryDeletionsAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowExecutionTaskInvocations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowExecutionTaskInvocationsAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowExecutionTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowExecutionTasksAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowExecutionsAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowScheduleAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowTargets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowTargetsAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowTasksAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindows(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowsAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceWindowsForTarget(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceWindowsForTargetAsync(array $args = [])
 * @method \Aws\Result describeOpsItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeOpsItemsAsync(array $args = [])
 * @method \Aws\Result describeParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParametersAsync(array $args = [])
 * @method \Aws\Result describePatchBaselines(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePatchBaselinesAsync(array $args = [])
 * @method \Aws\Result describePatchGroupState(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePatchGroupStateAsync(array $args = [])
 * @method \Aws\Result describePatchGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePatchGroupsAsync(array $args = [])
 * @method \Aws\Result describePatchProperties(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePatchPropertiesAsync(array $args = [])
 * @method \Aws\Result describeSessions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSessionsAsync(array $args = [])
 * @method \Aws\Result disassociateOpsItemRelatedItem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateOpsItemRelatedItemAsync(array $args = [])
 * @method \Aws\Result getAutomationExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAutomationExecutionAsync(array $args = [])
 * @method \Aws\Result getCalendarState(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCalendarStateAsync(array $args = [])
 * @method \Aws\Result getCommandInvocation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCommandInvocationAsync(array $args = [])
 * @method \Aws\Result getConnectionStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getConnectionStatusAsync(array $args = [])
 * @method \Aws\Result getDefaultPatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDefaultPatchBaselineAsync(array $args = [])
 * @method \Aws\Result getDeployablePatchSnapshotForInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDeployablePatchSnapshotForInstanceAsync(array $args = [])
 * @method \Aws\Result getDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDocumentAsync(array $args = [])
 * @method \Aws\Result getInventory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getInventoryAsync(array $args = [])
 * @method \Aws\Result getInventorySchema(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getInventorySchemaAsync(array $args = [])
 * @method \Aws\Result getMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result getMaintenanceWindowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMaintenanceWindowExecutionAsync(array $args = [])
 * @method \Aws\Result getMaintenanceWindowExecutionTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMaintenanceWindowExecutionTaskAsync(array $args = [])
 * @method \Aws\Result getMaintenanceWindowExecutionTaskInvocation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMaintenanceWindowExecutionTaskInvocationAsync(array $args = [])
 * @method \Aws\Result getMaintenanceWindowTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getMaintenanceWindowTaskAsync(array $args = [])
 * @method \Aws\Result getOpsItem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getOpsItemAsync(array $args = [])
 * @method \Aws\Result getOpsMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getOpsMetadataAsync(array $args = [])
 * @method \Aws\Result getOpsSummary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getOpsSummaryAsync(array $args = [])
 * @method \Aws\Result getParameter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getParameterAsync(array $args = [])
 * @method \Aws\Result getParameterHistory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getParameterHistoryAsync(array $args = [])
 * @method \Aws\Result getParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getParametersAsync(array $args = [])
 * @method \Aws\Result getParametersByPath(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getParametersByPathAsync(array $args = [])
 * @method \Aws\Result getPatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPatchBaselineAsync(array $args = [])
 * @method \Aws\Result getPatchBaselineForPatchGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPatchBaselineForPatchGroupAsync(array $args = [])
 * @method \Aws\Result getResourcePolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcePoliciesAsync(array $args = [])
 * @method \Aws\Result getServiceSetting(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getServiceSettingAsync(array $args = [])
 * @method \Aws\Result labelParameterVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise labelParameterVersionAsync(array $args = [])
 * @method \Aws\Result listAssociationVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAssociationVersionsAsync(array $args = [])
 * @method \Aws\Result listAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAssociationsAsync(array $args = [])
 * @method \Aws\Result listCommandInvocations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCommandInvocationsAsync(array $args = [])
 * @method \Aws\Result listCommands(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCommandsAsync(array $args = [])
 * @method \Aws\Result listComplianceItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listComplianceItemsAsync(array $args = [])
 * @method \Aws\Result listComplianceSummaries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listComplianceSummariesAsync(array $args = [])
 * @method \Aws\Result listDocumentMetadataHistory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDocumentMetadataHistoryAsync(array $args = [])
 * @method \Aws\Result listDocumentVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDocumentVersionsAsync(array $args = [])
 * @method \Aws\Result listDocuments(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDocumentsAsync(array $args = [])
 * @method \Aws\Result listInventoryEntries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listInventoryEntriesAsync(array $args = [])
 * @method \Aws\Result listOpsItemEvents(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listOpsItemEventsAsync(array $args = [])
 * @method \Aws\Result listOpsItemRelatedItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listOpsItemRelatedItemsAsync(array $args = [])
 * @method \Aws\Result listOpsMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listOpsMetadataAsync(array $args = [])
 * @method \Aws\Result listResourceComplianceSummaries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResourceComplianceSummariesAsync(array $args = [])
 * @method \Aws\Result listResourceDataSync(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResourceDataSyncAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result modifyDocumentPermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyDocumentPermissionAsync(array $args = [])
 * @method \Aws\Result putComplianceItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putComplianceItemsAsync(array $args = [])
 * @method \Aws\Result putInventory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putInventoryAsync(array $args = [])
 * @method \Aws\Result putParameter(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putParameterAsync(array $args = [])
 * @method \Aws\Result putResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putResourcePolicyAsync(array $args = [])
 * @method \Aws\Result registerDefaultPatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerDefaultPatchBaselineAsync(array $args = [])
 * @method \Aws\Result registerPatchBaselineForPatchGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerPatchBaselineForPatchGroupAsync(array $args = [])
 * @method \Aws\Result registerTargetWithMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerTargetWithMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result registerTaskWithMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerTaskWithMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result removeTagsFromResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removeTagsFromResourceAsync(array $args = [])
 * @method \Aws\Result resetServiceSetting(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetServiceSettingAsync(array $args = [])
 * @method \Aws\Result resumeSession(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resumeSessionAsync(array $args = [])
 * @method \Aws\Result sendAutomationSignal(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendAutomationSignalAsync(array $args = [])
 * @method \Aws\Result sendCommand(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendCommandAsync(array $args = [])
 * @method \Aws\Result startAssociationsOnce(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startAssociationsOnceAsync(array $args = [])
 * @method \Aws\Result startAutomationExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startAutomationExecutionAsync(array $args = [])
 * @method \Aws\Result startChangeRequestExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startChangeRequestExecutionAsync(array $args = [])
 * @method \Aws\Result startSession(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startSessionAsync(array $args = [])
 * @method \Aws\Result stopAutomationExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopAutomationExecutionAsync(array $args = [])
 * @method \Aws\Result terminateSession(array $args = [])
 * @method \GuzzleHttp\Promise\Promise terminateSessionAsync(array $args = [])
 * @method \Aws\Result unlabelParameterVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise unlabelParameterVersionAsync(array $args = [])
 * @method \Aws\Result updateAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAssociationAsync(array $args = [])
 * @method \Aws\Result updateAssociationStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAssociationStatusAsync(array $args = [])
 * @method \Aws\Result updateDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDocumentAsync(array $args = [])
 * @method \Aws\Result updateDocumentDefaultVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDocumentDefaultVersionAsync(array $args = [])
 * @method \Aws\Result updateDocumentMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDocumentMetadataAsync(array $args = [])
 * @method \Aws\Result updateMaintenanceWindow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateMaintenanceWindowAsync(array $args = [])
 * @method \Aws\Result updateMaintenanceWindowTarget(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateMaintenanceWindowTargetAsync(array $args = [])
 * @method \Aws\Result updateMaintenanceWindowTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateMaintenanceWindowTaskAsync(array $args = [])
 * @method \Aws\Result updateManagedInstanceRole(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateManagedInstanceRoleAsync(array $args = [])
 * @method \Aws\Result updateOpsItem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateOpsItemAsync(array $args = [])
 * @method \Aws\Result updateOpsMetadata(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateOpsMetadataAsync(array $args = [])
 * @method \Aws\Result updatePatchBaseline(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePatchBaselineAsync(array $args = [])
 * @method \Aws\Result updateResourceDataSync(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateResourceDataSyncAsync(array $args = [])
 * @method \Aws\Result updateServiceSetting(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateServiceSettingAsync(array $args = [])
 */
class SsmClient extends AwsClient {}


<?php
namespace Aws\Ssm\Exception;

use Aws\Exception\AwsException;

/**
 * Amazon EC2 Simple Systems Manager exception.
 */
class SsmException extends AwsException {}


<?php
namespace Aws\SSMContacts;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Systems Manager Incident Manager Contacts** service.
 * @method \Aws\Result acceptPage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise acceptPageAsync(array $args = [])
 * @method \Aws\Result activateContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise activateContactChannelAsync(array $args = [])
 * @method \Aws\Result createContact(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createContactAsync(array $args = [])
 * @method \Aws\Result createContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createContactChannelAsync(array $args = [])
 * @method \Aws\Result createRotation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRotationAsync(array $args = [])
 * @method \Aws\Result createRotationOverride(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRotationOverrideAsync(array $args = [])
 * @method \Aws\Result deactivateContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deactivateContactChannelAsync(array $args = [])
 * @method \Aws\Result deleteContact(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteContactAsync(array $args = [])
 * @method \Aws\Result deleteContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteContactChannelAsync(array $args = [])
 * @method \Aws\Result deleteRotation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRotationAsync(array $args = [])
 * @method \Aws\Result deleteRotationOverride(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRotationOverrideAsync(array $args = [])
 * @method \Aws\Result describeEngagement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEngagementAsync(array $args = [])
 * @method \Aws\Result describePage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePageAsync(array $args = [])
 * @method \Aws\Result getContact(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getContactAsync(array $args = [])
 * @method \Aws\Result getContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getContactChannelAsync(array $args = [])
 * @method \Aws\Result getContactPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getContactPolicyAsync(array $args = [])
 * @method \Aws\Result getRotation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRotationAsync(array $args = [])
 * @method \Aws\Result getRotationOverride(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRotationOverrideAsync(array $args = [])
 * @method \Aws\Result listContactChannels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listContactChannelsAsync(array $args = [])
 * @method \Aws\Result listContacts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listContactsAsync(array $args = [])
 * @method \Aws\Result listEngagements(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listEngagementsAsync(array $args = [])
 * @method \Aws\Result listPageReceipts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPageReceiptsAsync(array $args = [])
 * @method \Aws\Result listPageResolutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPageResolutionsAsync(array $args = [])
 * @method \Aws\Result listPagesByContact(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPagesByContactAsync(array $args = [])
 * @method \Aws\Result listPagesByEngagement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPagesByEngagementAsync(array $args = [])
 * @method \Aws\Result listPreviewRotationShifts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPreviewRotationShiftsAsync(array $args = [])
 * @method \Aws\Result listRotationOverrides(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRotationOverridesAsync(array $args = [])
 * @method \Aws\Result listRotationShifts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRotationShiftsAsync(array $args = [])
 * @method \Aws\Result listRotations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRotationsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result putContactPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putContactPolicyAsync(array $args = [])
 * @method \Aws\Result sendActivationCode(array $args = [])
 * @method \GuzzleHttp\Promise\Promise sendActivationCodeAsync(array $args = [])
 * @method \Aws\Result startEngagement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startEngagementAsync(array $args = [])
 * @method \Aws\Result stopEngagement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopEngagementAsync(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 updateContact(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateContactAsync(array $args = [])
 * @method \Aws\Result updateContactChannel(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateContactChannelAsync(array $args = [])
 * @method \Aws\Result updateRotation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRotationAsync(array $args = [])
 */
class SSMContactsClient extends AwsClient {}


<?php
namespace Aws\SSMContacts\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Systems Manager Incident Manager Contacts** service.
 */
class SSMContactsException extends AwsException {}


<?php
namespace Aws\SSMIncidents;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Systems Manager Incident Manager** service.
 * @method \Aws\Result createReplicationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createReplicationSetAsync(array $args = [])
 * @method \Aws\Result createResponsePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createResponsePlanAsync(array $args = [])
 * @method \Aws\Result createTimelineEvent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTimelineEventAsync(array $args = [])
 * @method \Aws\Result deleteIncidentRecord(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIncidentRecordAsync(array $args = [])
 * @method \Aws\Result deleteReplicationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteReplicationSetAsync(array $args = [])
 * @method \Aws\Result deleteResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourcePolicyAsync(array $args = [])
 * @method \Aws\Result deleteResponsePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResponsePlanAsync(array $args = [])
 * @method \Aws\Result deleteTimelineEvent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTimelineEventAsync(array $args = [])
 * @method \Aws\Result getIncidentRecord(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIncidentRecordAsync(array $args = [])
 * @method \Aws\Result getReplicationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getReplicationSetAsync(array $args = [])
 * @method \Aws\Result getResourcePolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcePoliciesAsync(array $args = [])
 * @method \Aws\Result getResponsePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResponsePlanAsync(array $args = [])
 * @method \Aws\Result getTimelineEvent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTimelineEventAsync(array $args = [])
 * @method \Aws\Result listIncidentRecords(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIncidentRecordsAsync(array $args = [])
 * @method \Aws\Result listRelatedItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRelatedItemsAsync(array $args = [])
 * @method \Aws\Result listReplicationSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listReplicationSetsAsync(array $args = [])
 * @method \Aws\Result listResponsePlans(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResponsePlansAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTimelineEvents(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTimelineEventsAsync(array $args = [])
 * @method \Aws\Result putResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putResourcePolicyAsync(array $args = [])
 * @method \Aws\Result startIncident(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startIncidentAsync(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 updateDeletionProtection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDeletionProtectionAsync(array $args = [])
 * @method \Aws\Result updateIncidentRecord(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIncidentRecordAsync(array $args = [])
 * @method \Aws\Result updateRelatedItems(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRelatedItemsAsync(array $args = [])
 * @method \Aws\Result updateReplicationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateReplicationSetAsync(array $args = [])
 * @method \Aws\Result updateResponsePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateResponsePlanAsync(array $args = [])
 * @method \Aws\Result updateTimelineEvent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTimelineEventAsync(array $args = [])
 */
class SSMIncidentsClient extends AwsClient {}


<?php
namespace Aws\SSMIncidents\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Systems Manager Incident Manager** service.
 */
class SSMIncidentsException extends AwsException {}


<?php
namespace Aws\SsmSap;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Systems Manager for SAP** service.
 * @method \Aws\Result deleteResourcePermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourcePermissionAsync(array $args = [])
 * @method \Aws\Result deregisterApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterApplicationAsync(array $args = [])
 * @method \Aws\Result getApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getApplicationAsync(array $args = [])
 * @method \Aws\Result getComponent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getComponentAsync(array $args = [])
 * @method \Aws\Result getDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDatabaseAsync(array $args = [])
 * @method \Aws\Result getOperation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getOperationAsync(array $args = [])
 * @method \Aws\Result getResourcePermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcePermissionAsync(array $args = [])
 * @method \Aws\Result listApplications(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listApplicationsAsync(array $args = [])
 * @method \Aws\Result listComponents(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listComponentsAsync(array $args = [])
 * @method \Aws\Result listDatabases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDatabasesAsync(array $args = [])
 * @method \Aws\Result listOperations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listOperationsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result putResourcePermission(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putResourcePermissionAsync(array $args = [])
 * @method \Aws\Result registerApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerApplicationAsync(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 updateApplicationSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateApplicationSettingsAsync(array $args = [])
 */
class SsmSapClient extends AwsClient {}


<?php
namespace Aws\SsmSap\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Systems Manager for SAP** service.
 */
class SsmSapException extends AwsException {}


<?php
namespace Aws\SSO;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Single Sign-On** service.
 * @method \Aws\Result getRoleCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRoleCredentialsAsync(array $args = [])
 * @method \Aws\Result listAccountRoles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountRolesAsync(array $args = [])
 * @method \Aws\Result listAccounts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountsAsync(array $args = [])
 * @method \Aws\Result logout(array $args = [])
 * @method \GuzzleHttp\Promise\Promise logoutAsync(array $args = [])
 */
class SSOClient extends AwsClient {}


<?php
namespace Aws\SSO\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Single Sign-On** service.
 */
class SSOException extends AwsException {}


<?php
namespace Aws\SSOAdmin;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Single Sign-On Admin** service.
 * @method \Aws\Result attachCustomerManagedPolicyReferenceToPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise attachCustomerManagedPolicyReferenceToPermissionSetAsync(array $args = [])
 * @method \Aws\Result attachManagedPolicyToPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise attachManagedPolicyToPermissionSetAsync(array $args = [])
 * @method \Aws\Result createAccountAssignment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccountAssignmentAsync(array $args = [])
 * @method \Aws\Result createInstanceAccessControlAttributeConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceAccessControlAttributeConfigurationAsync(array $args = [])
 * @method \Aws\Result createPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createPermissionSetAsync(array $args = [])
 * @method \Aws\Result deleteAccountAssignment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccountAssignmentAsync(array $args = [])
 * @method \Aws\Result deleteInlinePolicyFromPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteInlinePolicyFromPermissionSetAsync(array $args = [])
 * @method \Aws\Result deleteInstanceAccessControlAttributeConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteInstanceAccessControlAttributeConfigurationAsync(array $args = [])
 * @method \Aws\Result deletePermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePermissionSetAsync(array $args = [])
 * @method \Aws\Result deletePermissionsBoundaryFromPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePermissionsBoundaryFromPermissionSetAsync(array $args = [])
 * @method \Aws\Result describeAccountAssignmentCreationStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountAssignmentCreationStatusAsync(array $args = [])
 * @method \Aws\Result describeAccountAssignmentDeletionStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountAssignmentDeletionStatusAsync(array $args = [])
 * @method \Aws\Result describeInstanceAccessControlAttributeConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceAccessControlAttributeConfigurationAsync(array $args = [])
 * @method \Aws\Result describePermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePermissionSetAsync(array $args = [])
 * @method \Aws\Result describePermissionSetProvisioningStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePermissionSetProvisioningStatusAsync(array $args = [])
 * @method \Aws\Result detachCustomerManagedPolicyReferenceFromPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detachCustomerManagedPolicyReferenceFromPermissionSetAsync(array $args = [])
 * @method \Aws\Result detachManagedPolicyFromPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detachManagedPolicyFromPermissionSetAsync(array $args = [])
 * @method \Aws\Result getInlinePolicyForPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getInlinePolicyForPermissionSetAsync(array $args = [])
 * @method \Aws\Result getPermissionsBoundaryForPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPermissionsBoundaryForPermissionSetAsync(array $args = [])
 * @method \Aws\Result listAccountAssignmentCreationStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountAssignmentCreationStatusAsync(array $args = [])
 * @method \Aws\Result listAccountAssignmentDeletionStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountAssignmentDeletionStatusAsync(array $args = [])
 * @method \Aws\Result listAccountAssignments(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountAssignmentsAsync(array $args = [])
 * @method \Aws\Result listAccountsForProvisionedPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAccountsForProvisionedPermissionSetAsync(array $args = [])
 * @method \Aws\Result listCustomerManagedPolicyReferencesInPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCustomerManagedPolicyReferencesInPermissionSetAsync(array $args = [])
 * @method \Aws\Result listInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listInstancesAsync(array $args = [])
 * @method \Aws\Result listManagedPoliciesInPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listManagedPoliciesInPermissionSetAsync(array $args = [])
 * @method \Aws\Result listPermissionSetProvisioningStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPermissionSetProvisioningStatusAsync(array $args = [])
 * @method \Aws\Result listPermissionSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPermissionSetsAsync(array $args = [])
 * @method \Aws\Result listPermissionSetsProvisionedToAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listPermissionSetsProvisionedToAccountAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result provisionPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise provisionPermissionSetAsync(array $args = [])
 * @method \Aws\Result putInlinePolicyToPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putInlinePolicyToPermissionSetAsync(array $args = [])
 * @method \Aws\Result putPermissionsBoundaryToPermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putPermissionsBoundaryToPermissionSetAsync(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 updateInstanceAccessControlAttributeConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateInstanceAccessControlAttributeConfigurationAsync(array $args = [])
 * @method \Aws\Result updatePermissionSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePermissionSetAsync(array $args = [])
 */
class SSOAdminClient extends AwsClient {}


<?php
namespace Aws\SSOAdmin\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Single Sign-On Admin** service.
 */
class SSOAdminException extends AwsException {}


<?php
namespace Aws\SSOOIDC;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS SSO OIDC** service.
 * @method \Aws\Result createToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTokenAsync(array $args = [])
 * @method \Aws\Result registerClient(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerClientAsync(array $args = [])
 * @method \Aws\Result startDeviceAuthorization(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startDeviceAuthorizationAsync(array $args = [])
 */
class SSOOIDCClient extends AwsClient {}


<?php
namespace Aws\SSOOIDC\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS SSO OIDC** service.
 */
class SSOOIDCException extends AwsException {}


<?php
namespace Aws\StorageGateway;

use Aws\AwsClient;

/**
 * AWS Storage Gateway client.
 *
 * @method \Aws\Result activateGateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise activateGatewayAsync(array $args = [])
 * @method \Aws\Result addCache(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addCacheAsync(array $args = [])
 * @method \Aws\Result addTagsToResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addTagsToResourceAsync(array $args = [])
 * @method \Aws\Result addUploadBuffer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addUploadBufferAsync(array $args = [])
 * @method \Aws\Result addWorkingStorage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addWorkingStorageAsync(array $args = [])
 * @method \Aws\Result assignTapePool(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assignTapePoolAsync(array $args = [])
 * @method \Aws\Result associateFileSystem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateFileSystemAsync(array $args = [])
 * @method \Aws\Result attachVolume(array $args = [])
 * @method \GuzzleHttp\Promise\Promise attachVolumeAsync(array $args = [])
 * @method \Aws\Result cancelArchival(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelArchivalAsync(array $args = [])
 * @method \Aws\Result cancelRetrieval(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelRetrievalAsync(array $args = [])
 * @method \Aws\Result createCachediSCSIVolume(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCachediSCSIVolumeAsync(array $args = [])
 * @method \Aws\Result createNFSFileShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createNFSFileShareAsync(array $args = [])
 * @method \Aws\Result createSMBFileShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSMBFileShareAsync(array $args = [])
 * @method \Aws\Result createSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSnapshotAsync(array $args = [])
 * @method \Aws\Result createSnapshotFromVolumeRecoveryPoint(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSnapshotFromVolumeRecoveryPointAsync(array $args = [])
 * @method \Aws\Result createStorediSCSIVolume(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createStorediSCSIVolumeAsync(array $args = [])
 * @method \Aws\Result createTapePool(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTapePoolAsync(array $args = [])
 * @method \Aws\Result createTapeWithBarcode(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTapeWithBarcodeAsync(array $args = [])
 * @method \Aws\Result createTapes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTapesAsync(array $args = [])
 * @method \Aws\Result deleteAutomaticTapeCreationPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAutomaticTapeCreationPolicyAsync(array $args = [])
 * @method \Aws\Result deleteBandwidthRateLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteBandwidthRateLimitAsync(array $args = [])
 * @method \Aws\Result deleteChapCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteChapCredentialsAsync(array $args = [])
 * @method \Aws\Result deleteFileShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteFileShareAsync(array $args = [])
 * @method \Aws\Result deleteGateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteGatewayAsync(array $args = [])
 * @method \Aws\Result deleteSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result deleteTape(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTapeAsync(array $args = [])
 * @method \Aws\Result deleteTapeArchive(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTapeArchiveAsync(array $args = [])
 * @method \Aws\Result deleteTapePool(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTapePoolAsync(array $args = [])
 * @method \Aws\Result deleteVolume(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteVolumeAsync(array $args = [])
 * @method \Aws\Result describeAvailabilityMonitorTest(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAvailabilityMonitorTestAsync(array $args = [])
 * @method \Aws\Result describeBandwidthRateLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBandwidthRateLimitAsync(array $args = [])
 * @method \Aws\Result describeBandwidthRateLimitSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBandwidthRateLimitScheduleAsync(array $args = [])
 * @method \Aws\Result describeCache(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCacheAsync(array $args = [])
 * @method \Aws\Result describeCachediSCSIVolumes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCachediSCSIVolumesAsync(array $args = [])
 * @method \Aws\Result describeChapCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeChapCredentialsAsync(array $args = [])
 * @method \Aws\Result describeFileSystemAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeFileSystemAssociationsAsync(array $args = [])
 * @method \Aws\Result describeGatewayInformation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeGatewayInformationAsync(array $args = [])
 * @method \Aws\Result describeMaintenanceStartTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeMaintenanceStartTimeAsync(array $args = [])
 * @method \Aws\Result describeNFSFileShares(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeNFSFileSharesAsync(array $args = [])
 * @method \Aws\Result describeSMBFileShares(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSMBFileSharesAsync(array $args = [])
 * @method \Aws\Result describeSMBSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSMBSettingsAsync(array $args = [])
 * @method \Aws\Result describeSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result describeStorediSCSIVolumes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeStorediSCSIVolumesAsync(array $args = [])
 * @method \Aws\Result describeTapeArchives(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTapeArchivesAsync(array $args = [])
 * @method \Aws\Result describeTapeRecoveryPoints(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTapeRecoveryPointsAsync(array $args = [])
 * @method \Aws\Result describeTapes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTapesAsync(array $args = [])
 * @method \Aws\Result describeUploadBuffer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUploadBufferAsync(array $args = [])
 * @method \Aws\Result describeVTLDevices(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeVTLDevicesAsync(array $args = [])
 * @method \Aws\Result describeWorkingStorage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorkingStorageAsync(array $args = [])
 * @method \Aws\Result detachVolume(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detachVolumeAsync(array $args = [])
 * @method \Aws\Result disableGateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableGatewayAsync(array $args = [])
 * @method \Aws\Result disassociateFileSystem(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateFileSystemAsync(array $args = [])
 * @method \Aws\Result joinDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise joinDomainAsync(array $args = [])
 * @method \Aws\Result listAutomaticTapeCreationPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAutomaticTapeCreationPoliciesAsync(array $args = [])
 * @method \Aws\Result listFileShares(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFileSharesAsync(array $args = [])
 * @method \Aws\Result listFileSystemAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFileSystemAssociationsAsync(array $args = [])
 * @method \Aws\Result listGateways(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGatewaysAsync(array $args = [])
 * @method \Aws\Result listLocalDisks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listLocalDisksAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTapePools(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTapePoolsAsync(array $args = [])
 * @method \Aws\Result listTapes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTapesAsync(array $args = [])
 * @method \Aws\Result listVolumeInitiators(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVolumeInitiatorsAsync(array $args = [])
 * @method \Aws\Result listVolumeRecoveryPoints(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVolumeRecoveryPointsAsync(array $args = [])
 * @method \Aws\Result listVolumes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVolumesAsync(array $args = [])
 * @method \Aws\Result notifyWhenUploaded(array $args = [])
 * @method \GuzzleHttp\Promise\Promise notifyWhenUploadedAsync(array $args = [])
 * @method \Aws\Result refreshCache(array $args = [])
 * @method \GuzzleHttp\Promise\Promise refreshCacheAsync(array $args = [])
 * @method \Aws\Result removeTagsFromResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removeTagsFromResourceAsync(array $args = [])
 * @method \Aws\Result resetCache(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetCacheAsync(array $args = [])
 * @method \Aws\Result retrieveTapeArchive(array $args = [])
 * @method \GuzzleHttp\Promise\Promise retrieveTapeArchiveAsync(array $args = [])
 * @method \Aws\Result retrieveTapeRecoveryPoint(array $args = [])
 * @method \GuzzleHttp\Promise\Promise retrieveTapeRecoveryPointAsync(array $args = [])
 * @method \Aws\Result setLocalConsolePassword(array $args = [])
 * @method \GuzzleHttp\Promise\Promise setLocalConsolePasswordAsync(array $args = [])
 * @method \Aws\Result setSMBGuestPassword(array $args = [])
 * @method \GuzzleHttp\Promise\Promise setSMBGuestPasswordAsync(array $args = [])
 * @method \Aws\Result shutdownGateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise shutdownGatewayAsync(array $args = [])
 * @method \Aws\Result startAvailabilityMonitorTest(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startAvailabilityMonitorTestAsync(array $args = [])
 * @method \Aws\Result startGateway(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startGatewayAsync(array $args = [])
 * @method \Aws\Result updateAutomaticTapeCreationPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAutomaticTapeCreationPolicyAsync(array $args = [])
 * @method \Aws\Result updateBandwidthRateLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateBandwidthRateLimitAsync(array $args = [])
 * @method \Aws\Result updateBandwidthRateLimitSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateBandwidthRateLimitScheduleAsync(array $args = [])
 * @method \Aws\Result updateChapCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateChapCredentialsAsync(array $args = [])
 * @method \Aws\Result updateFileSystemAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateFileSystemAssociationAsync(array $args = [])
 * @method \Aws\Result updateGatewayInformation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGatewayInformationAsync(array $args = [])
 * @method \Aws\Result updateGatewaySoftwareNow(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGatewaySoftwareNowAsync(array $args = [])
 * @method \Aws\Result updateMaintenanceStartTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateMaintenanceStartTimeAsync(array $args = [])
 * @method \Aws\Result updateNFSFileShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateNFSFileShareAsync(array $args = [])
 * @method \Aws\Result updateSMBFileShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSMBFileShareAsync(array $args = [])
 * @method \Aws\Result updateSMBFileShareVisibility(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSMBFileShareVisibilityAsync(array $args = [])
 * @method \Aws\Result updateSMBLocalGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSMBLocalGroupsAsync(array $args = [])
 * @method \Aws\Result updateSMBSecurityStrategy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSMBSecurityStrategyAsync(array $args = [])
 * @method \Aws\Result updateSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result updateVTLDeviceType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateVTLDeviceTypeAsync(array $args = [])
 */
class StorageGatewayClient extends AwsClient {}


<?php
namespace Aws\StorageGateway\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the AWS Storage Gateway service.
 */
class StorageGatewayException extends AwsException {}


<?php
namespace Aws\Sts;

use Aws\AwsClient;
use Aws\CacheInterface;
use Aws\Credentials\Credentials;
use Aws\Result;
use Aws\Sts\RegionalEndpoints\ConfigurationProvider;

/**
 * This client is used to interact with the **AWS Security Token Service (AWS STS)**.
 *
 * @method \Aws\Result assumeRole(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assumeRoleAsync(array $args = [])
 * @method \Aws\Result assumeRoleWithSAML(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assumeRoleWithSAMLAsync(array $args = [])
 * @method \Aws\Result assumeRoleWithWebIdentity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise assumeRoleWithWebIdentityAsync(array $args = [])
 * @method \Aws\Result decodeAuthorizationMessage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise decodeAuthorizationMessageAsync(array $args = [])
 * @method \Aws\Result getAccessKeyInfo(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAccessKeyInfoAsync(array $args = [])
 * @method \Aws\Result getCallerIdentity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCallerIdentityAsync(array $args = [])
 * @method \Aws\Result getFederationToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getFederationTokenAsync(array $args = [])
 * @method \Aws\Result getSessionToken(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSessionTokenAsync(array $args = [])
 */
class StsClient extends AwsClient
{

    /**
     * {@inheritdoc}
     *
     * In addition to the options available to
     * {@see \Aws\AwsClient::__construct}, StsClient accepts the following
     * options:
     *
     * - sts_regional_endpoints:
     *   (Aws\Sts\RegionalEndpoints\ConfigurationInterface|Aws\CacheInterface\|callable|string|array)
     *   Specifies whether to use regional or legacy endpoints for legacy regions.
     *   Provide an Aws\Sts\RegionalEndpoints\ConfigurationInterface object, an
     *   instance of Aws\CacheInterface, a callable configuration provider used
     *   to create endpoint configuration, a string value of `legacy` or
     *   `regional`, or an associative array with the following keys:
     *   endpoint_types (string)  Set to `legacy` or `regional`, defaults to
     *   `legacy`
     *
     * @param array $args
     */
    public function __construct(array $args)
    {
        if (
            !isset($args['sts_regional_endpoints'])
            || $args['sts_regional_endpoints'] instanceof CacheInterface
        ) {
            $args['sts_regional_endpoints'] = ConfigurationProvider::defaultProvider($args);
        }
        $this->addBuiltIns($args);
        parent::__construct($args);
    }

    /**
     * Creates credentials from the result of an STS operations
     *
     * @param Result $result Result of an STS operation
     *
     * @return Credentials
     * @throws \InvalidArgumentException if the result contains no credentials
     */
    public function createCredentials(Result $result)
    {
        if (!$result->hasKey('Credentials')) {
            throw new \InvalidArgumentException('Result contains no credentials');
        }

        $c = $result['Credentials'];

        return new Credentials(
            $c['AccessKeyId'],
            $c['SecretAccessKey'],
            isset($c['SessionToken']) ? $c['SessionToken'] : null,
            isset($c['Expiration']) && $c['Expiration'] instanceof \DateTimeInterface
                ? (int) $c['Expiration']->format('U')
                : null
        );
    }

    /**
     * Adds service-specific client built-in value
     *
     * @return void
     */
    private function addBuiltIns($args)
    {
        $key = 'AWS::STS::UseGlobalEndpoint';
        $result = $args['sts_regional_endpoints'] instanceof \Closure ?
            $args['sts_regional_endpoints']()->wait() : $args['sts_regional_endpoints'];

        if (is_string($result)) {
            if ($result === 'regional') {
                $value = false;
            } else if ($result === 'legacy') {
                $value = true;
            } else {
                return;
            }
        } else {
            if ($result->getEndpointsType() === 'regional') {
                $value = false;
            } else {
                $value = true;
            }
        }

        $this->clientBuiltIns[$key] = $value;
    }
}


<?php
namespace Aws\Sts\Exception;

use Aws\Exception\AwsException;

/**
 * AWS Security Token Service exception.
 */
class StsException extends AwsException {}


<?php
namespace Aws\Sts\RegionalEndpoints;

class Configuration implements ConfigurationInterface
{
    private $endpointsType;
    private $isFallback;

    public function __construct($endpointsType, $isFallback = false)
    {
        $this->endpointsType = strtolower($endpointsType);
        $this->isFallback = $isFallback;
        if (!in_array($this->endpointsType, ['legacy', 'regional'])) {
            throw new \InvalidArgumentException(
                "Configuration parameter must either be 'legacy' or 'regional'."
            );
        }
    }

    /**
     * {@inheritdoc}
     */
    public function getEndpointsType()
    {
        return $this->endpointsType;
    }

    /**
     * {@inheritdoc}
     */
    public function toArray()
    {
        return [
            'endpoints_type' => $this->getEndpointsType()
        ];
    }

    public function isFallback()
    {
        return $this->isFallback;
    }
}


<?php
namespace Aws\Sts\RegionalEndpoints;

/**
 * Provides access to STS regional endpoints configuration options: endpoints_type
 */
interface ConfigurationInterface
{
    /**
     * Returns the endpoints type
     *
     * @return string
     */
    public function getEndpointsType();

    /**
     * Returns the configuration as an associative array
     *
     * @return array
     */
    public function toArray();
}


<?php
namespace Aws\Sts\RegionalEndpoints;

use Aws\AbstractConfigurationProvider;
use Aws\CacheInterface;
use Aws\ConfigurationProviderInterface;
use Aws\Sts\RegionalEndpoints\Exception\ConfigurationException;
use GuzzleHttp\Promise;
use GuzzleHttp\Promise\PromiseInterface;

/**
 * A configuration provider is a function that returns a promise that is
 * fulfilled with a {@see \Aws\Sts\RegionalEndpoints\ConfigurationInterface}
 * or rejected with an {@see \Aws\Sts\RegionalEndpoints\Exception\ConfigurationException}.
 *
 *
 * use Aws\Sts\RegionalEndpoints\ConfigurationProvider;
 * $provider = ConfigurationProvider::defaultProvider();
 * // Returns a ConfigurationInterface or throws.
 * $config = $provider()->wait();
 *
 *
 * Configuration providers can be composed to create configuration using
 * conditional logic that can create different configurations in different
 * environments. You can compose multiple providers into a single provider using
 * {@see \Aws\Sts\RegionalEndpoints\ConfigurationProvider::chain}. This function
 * accepts providers as variadic arguments and returns a new function that will
 * invoke each provider until a successful configuration is returned.
 *
 *
 * // First try an INI file at this location.
 * $a = ConfigurationProvider::ini(null, '/path/to/file.ini');
 * // Then try an INI file at this location.
 * $b = ConfigurationProvider::ini(null, '/path/to/other-file.ini');
 * // Then try loading from environment variables.
 * $c = ConfigurationProvider::env();
 * // Combine the three providers together.
 * $composed = ConfigurationProvider::chain($a, $b, $c);
 * // Returns a promise that is fulfilled with a configuration or throws.
 * $promise = $composed();
 * // Wait on the configuration to resolve.
 * $config = $promise->wait();
 *
 */
class ConfigurationProvider extends AbstractConfigurationProvider
    implements ConfigurationProviderInterface
{
    const DEFAULT_ENDPOINTS_TYPE = 'legacy';
    const ENV_ENDPOINTS_TYPE = 'AWS_STS_REGIONAL_ENDPOINTS';
    const ENV_PROFILE = 'AWS_PROFILE';
    const INI_ENDPOINTS_TYPE = 'sts_regional_endpoints';

    public static $cacheKey = 'aws_sts_regional_endpoints_config';

    protected static $interfaceClass = ConfigurationInterface::class;
    protected static $exceptionClass = ConfigurationException::class;

    /**
     * Create a default config provider that first checks for environment
     * variables, then checks for a specified profile in the environment-defined
     * config file location (env variable is 'AWS_CONFIG_FILE', file location
     * defaults to ~/.aws/config), then checks for the "default" profile in the
     * environment-defined config file location, and failing those uses a default
     * fallback set of configuration options.
     *
     * This provider is automatically wrapped in a memoize function that caches
     * previously provided config options.
     *
     * @param array $config
     *
     * @return callable
     */
    public static function defaultProvider(array $config = [])
    {
        $configProviders = [self::env()];
        if (
            !isset($config['use_aws_shared_config_files'])
            || $config['use_aws_shared_config_files'] != false
        ) {
            $configProviders[] = self::ini();
        }
        $configProviders[] = self::fallback();

        $memo = self::memoize(
            call_user_func_array([ConfigurationProvider::class, 'chain'], $configProviders)
        );

        if (isset($config['sts_regional_endpoints'])
            && $config['sts_regional_endpoints'] instanceof CacheInterface
        ) {
            return self::cache($memo, $config['sts_regional_endpoints'], self::$cacheKey);
        }

        return $memo;
    }

    /**
     * Provider that creates config from environment variables.
     *
     * @return callable
     */
    public static function env()
    {
        return function () {
            // Use config from environment variables, if available
            $endpointsType = getenv(self::ENV_ENDPOINTS_TYPE);
            if (!empty($endpointsType)) {
                return Promise\Create::promiseFor(
                    new Configuration($endpointsType)
                );
            }

            return self::reject('Could not find environment variable config'
                . ' in ' . self::ENV_ENDPOINTS_TYPE);
        };
    }

    /**
     * Fallback config options when other sources are not set.
     *
     * @return callable
     */
    public static function fallback()
    {
        return function () {
            return Promise\Create::promiseFor(
                new Configuration(self::DEFAULT_ENDPOINTS_TYPE, true)
            );
        };
    }

    /**
     * Config provider that creates config using a config file whose location
     * is specified by an environment variable 'AWS_CONFIG_FILE', defaulting to
     * ~/.aws/config if not specified
     *
     * @param string|null $profile  Profile to use. If not specified will use
     *                              the "default" profile.
     * @param string|null $filename If provided, uses a custom filename rather
     *                              than looking in the default directory.
     *
     * @return callable
     */
    public static function ini(
        $profile = null,
        $filename = null
    ) {
        $filename = $filename ?: (self::getDefaultConfigFilename());
        $profile = $profile ?: (getenv(self::ENV_PROFILE) ?: 'default');

        return function () use ($profile, $filename) {
            if (!@is_readable($filename)) {
                return self::reject("Cannot read configuration from $filename");
            }
            $data = \Aws\parse_ini_file($filename, true);
            if ($data === false) {
                return self::reject("Invalid config file: $filename");
            }
            if (!isset($data[$profile])) {
                return self::reject("'$profile' not found in config file");
            }
            if (!isset($data[$profile][self::INI_ENDPOINTS_TYPE])) {
                return self::reject("Required STS regional endpoints config values
                    not present in INI profile '{$profile}' ({$filename})");
            }

            return Promise\Create::promiseFor(
                new Configuration($data[$profile][self::INI_ENDPOINTS_TYPE])
            );
        };
    }

    /**
     * Unwraps a configuration object in whatever valid form it is in,
     * always returning a ConfigurationInterface object.
     *
     * @param  mixed $config
     * @return ConfigurationInterface
     * @throws \InvalidArgumentException
     */
    public static function unwrap($config)
    {
        if (is_callable($config)) {
            $config = $config();
        }
        if ($config instanceof PromiseInterface) {
            $config = $config->wait();
        }
        if ($config instanceof ConfigurationInterface) {
            return $config;
        }
        if (is_string($config)) {
            return new Configuration($config);
        }
        if (is_array($config) && isset($config['endpoints_type'])) {
            return new Configuration($config['endpoints_type']);
        }

        throw new \InvalidArgumentException('Not a valid STS regional endpoints '
            . 'configuration argument.');
    }
}


<?php
namespace Aws\Sts\RegionalEndpoints\Exception;

use Aws\HasMonitoringEventsTrait;
use Aws\MonitoringEventsInterface;

/**
 * Represents an error interacting with configuration for sts regional endpoints
 */
class ConfigurationException extends \RuntimeException implements
    MonitoringEventsInterface
{
    use HasMonitoringEventsTrait;
}


<?php
namespace Aws\Support;

use Aws\AwsClient;

/**
 * AWS Support client.
 *
 * @method \Aws\Result addAttachmentsToSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addAttachmentsToSetAsync(array $args = [])
 * @method \Aws\Result addCommunicationToCase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addCommunicationToCaseAsync(array $args = [])
 * @method \Aws\Result createCase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCaseAsync(array $args = [])
 * @method \Aws\Result describeAttachment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAttachmentAsync(array $args = [])
 * @method \Aws\Result describeCases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCasesAsync(array $args = [])
 * @method \Aws\Result describeCommunications(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCommunicationsAsync(array $args = [])
 * @method \Aws\Result describeCreateCaseOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCreateCaseOptionsAsync(array $args = [])
 * @method \Aws\Result describeServices(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeServicesAsync(array $args = [])
 * @method \Aws\Result describeSeverityLevels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSeverityLevelsAsync(array $args = [])
 * @method \Aws\Result describeSupportedLanguages(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSupportedLanguagesAsync(array $args = [])
 * @method \Aws\Result describeTrustedAdvisorCheckRefreshStatuses(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTrustedAdvisorCheckRefreshStatusesAsync(array $args = [])
 * @method \Aws\Result describeTrustedAdvisorCheckResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTrustedAdvisorCheckResultAsync(array $args = [])
 * @method \Aws\Result describeTrustedAdvisorCheckSummaries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTrustedAdvisorCheckSummariesAsync(array $args = [])
 * @method \Aws\Result describeTrustedAdvisorChecks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTrustedAdvisorChecksAsync(array $args = [])
 * @method \Aws\Result refreshTrustedAdvisorCheck(array $args = [])
 * @method \GuzzleHttp\Promise\Promise refreshTrustedAdvisorCheckAsync(array $args = [])
 * @method \Aws\Result resolveCase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resolveCaseAsync(array $args = [])
 */
class SupportClient extends AwsClient {}


<?php
namespace Aws\Support\Exception;

use Aws\Exception\AwsException;

/**
 * AWS Support service exception.
 */
class SupportException extends AwsException {}


<?php
namespace Aws\SupportApp;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Support App** service.
 * @method \Aws\Result createSlackChannelConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSlackChannelConfigurationAsync(array $args = [])
 * @method \Aws\Result deleteAccountAlias(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccountAliasAsync(array $args = [])
 * @method \Aws\Result deleteSlackChannelConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSlackChannelConfigurationAsync(array $args = [])
 * @method \Aws\Result deleteSlackWorkspaceConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSlackWorkspaceConfigurationAsync(array $args = [])
 * @method \Aws\Result getAccountAlias(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAccountAliasAsync(array $args = [])
 * @method \Aws\Result listSlackChannelConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSlackChannelConfigurationsAsync(array $args = [])
 * @method \Aws\Result listSlackWorkspaceConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSlackWorkspaceConfigurationsAsync(array $args = [])
 * @method \Aws\Result putAccountAlias(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putAccountAliasAsync(array $args = [])
 * @method \Aws\Result registerSlackWorkspaceForOrganization(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerSlackWorkspaceForOrganizationAsync(array $args = [])
 * @method \Aws\Result updateSlackChannelConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSlackChannelConfigurationAsync(array $args = [])
 */
class SupportAppClient extends AwsClient {}


<?php
namespace Aws\SupportApp\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Support App** service.
 */
class SupportAppException extends AwsException {}


<?php
namespace Aws\Swf;

use Aws\AwsClient;

/**
 * Amazon Simple Workflow Service (Amazon SWF) client.
 *
 * @method \Aws\Result countClosedWorkflowExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise countClosedWorkflowExecutionsAsync(array $args = [])
 * @method \Aws\Result countOpenWorkflowExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise countOpenWorkflowExecutionsAsync(array $args = [])
 * @method \Aws\Result countPendingActivityTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise countPendingActivityTasksAsync(array $args = [])
 * @method \Aws\Result countPendingDecisionTasks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise countPendingDecisionTasksAsync(array $args = [])
 * @method \Aws\Result deprecateActivityType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deprecateActivityTypeAsync(array $args = [])
 * @method \Aws\Result deprecateDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deprecateDomainAsync(array $args = [])
 * @method \Aws\Result deprecateWorkflowType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deprecateWorkflowTypeAsync(array $args = [])
 * @method \Aws\Result describeActivityType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeActivityTypeAsync(array $args = [])
 * @method \Aws\Result describeDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDomainAsync(array $args = [])
 * @method \Aws\Result describeWorkflowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorkflowExecutionAsync(array $args = [])
 * @method \Aws\Result describeWorkflowType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorkflowTypeAsync(array $args = [])
 * @method \Aws\Result getWorkflowExecutionHistory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWorkflowExecutionHistoryAsync(array $args = [])
 * @method \Aws\Result listActivityTypes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listActivityTypesAsync(array $args = [])
 * @method \Aws\Result listClosedWorkflowExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listClosedWorkflowExecutionsAsync(array $args = [])
 * @method \Aws\Result listDomains(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDomainsAsync(array $args = [])
 * @method \Aws\Result listOpenWorkflowExecutions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listOpenWorkflowExecutionsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWorkflowTypes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorkflowTypesAsync(array $args = [])
 * @method \Aws\Result pollForActivityTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise pollForActivityTaskAsync(array $args = [])
 * @method \Aws\Result pollForDecisionTask(array $args = [])
 * @method \GuzzleHttp\Promise\Promise pollForDecisionTaskAsync(array $args = [])
 * @method \Aws\Result recordActivityTaskHeartbeat(array $args = [])
 * @method \GuzzleHttp\Promise\Promise recordActivityTaskHeartbeatAsync(array $args = [])
 * @method \Aws\Result registerActivityType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerActivityTypeAsync(array $args = [])
 * @method \Aws\Result registerDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerDomainAsync(array $args = [])
 * @method \Aws\Result registerWorkflowType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerWorkflowTypeAsync(array $args = [])
 * @method \Aws\Result requestCancelWorkflowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise requestCancelWorkflowExecutionAsync(array $args = [])
 * @method \Aws\Result respondActivityTaskCanceled(array $args = [])
 * @method \GuzzleHttp\Promise\Promise respondActivityTaskCanceledAsync(array $args = [])
 * @method \Aws\Result respondActivityTaskCompleted(array $args = [])
 * @method \GuzzleHttp\Promise\Promise respondActivityTaskCompletedAsync(array $args = [])
 * @method \Aws\Result respondActivityTaskFailed(array $args = [])
 * @method \GuzzleHttp\Promise\Promise respondActivityTaskFailedAsync(array $args = [])
 * @method \Aws\Result respondDecisionTaskCompleted(array $args = [])
 * @method \GuzzleHttp\Promise\Promise respondDecisionTaskCompletedAsync(array $args = [])
 * @method \Aws\Result signalWorkflowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise signalWorkflowExecutionAsync(array $args = [])
 * @method \Aws\Result startWorkflowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startWorkflowExecutionAsync(array $args = [])
 * @method \Aws\Result tagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourceAsync(array $args = [])
 * @method \Aws\Result terminateWorkflowExecution(array $args = [])
 * @method \GuzzleHttp\Promise\Promise terminateWorkflowExecutionAsync(array $args = [])
 * @method \Aws\Result undeprecateActivityType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise undeprecateActivityTypeAsync(array $args = [])
 * @method \Aws\Result undeprecateDomain(array $args = [])
 * @method \GuzzleHttp\Promise\Promise undeprecateDomainAsync(array $args = [])
 * @method \Aws\Result undeprecateWorkflowType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise undeprecateWorkflowTypeAsync(array $args = [])
 * @method \Aws\Result untagResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourceAsync(array $args = [])
 */
class SwfClient extends AwsClient {}


<?php
namespace Aws\Swf\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the Amazon Simple Workflow Service.
 */
class SwfException extends AwsException {}


<?php
namespace Aws\Synthetics;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Synthetics** service.
 * @method \Aws\Result associateResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateResourceAsync(array $args = [])
 * @method \Aws\Result createCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCanaryAsync(array $args = [])
 * @method \Aws\Result createGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createGroupAsync(array $args = [])
 * @method \Aws\Result deleteCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCanaryAsync(array $args = [])
 * @method \Aws\Result deleteGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteGroupAsync(array $args = [])
 * @method \Aws\Result describeCanaries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCanariesAsync(array $args = [])
 * @method \Aws\Result describeCanariesLastRun(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCanariesLastRunAsync(array $args = [])
 * @method \Aws\Result describeRuntimeVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRuntimeVersionsAsync(array $args = [])
 * @method \Aws\Result disassociateResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateResourceAsync(array $args = [])
 * @method \Aws\Result getCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCanaryAsync(array $args = [])
 * @method \Aws\Result getCanaryRuns(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCanaryRunsAsync(array $args = [])
 * @method \Aws\Result getGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGroupAsync(array $args = [])
 * @method \Aws\Result listAssociatedGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAssociatedGroupsAsync(array $args = [])
 * @method \Aws\Result listGroupResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGroupResourcesAsync(array $args = [])
 * @method \Aws\Result listGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGroupsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result startCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startCanaryAsync(array $args = [])
 * @method \Aws\Result stopCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopCanaryAsync(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 updateCanary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateCanaryAsync(array $args = [])
 */
class SyntheticsClient extends AwsClient {}


<?php
namespace Aws\Synthetics\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Synthetics** service.
 */
class SyntheticsException extends AwsException {}


<?php
namespace Aws\Textract;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Textract** service.
 * @method \Aws\Result analyzeDocument(array $args = [])
 * @method \GuzzleHttp\Promise\Promise analyzeDocumentAsync(array $args = [])
 * @method \Aws\Result analyzeExpense(array $args = [])
 * @method \GuzzleHttp\Promise\Promise analyzeExpenseAsync(array $args = [])
 * @method \Aws\Result analyzeID(array $args = [])
 * @method \GuzzleHttp\Promise\Promise analyzeIDAsync(array $args = [])
 * @method \Aws\Result detectDocumentText(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectDocumentTextAsync(array $args = [])
 * @method \Aws\Result getDocumentAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDocumentAnalysisAsync(array $args = [])
 * @method \Aws\Result getDocumentTextDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDocumentTextDetectionAsync(array $args = [])
 * @method \Aws\Result getExpenseAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getExpenseAnalysisAsync(array $args = [])
 * @method \Aws\Result getLendingAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLendingAnalysisAsync(array $args = [])
 * @method \Aws\Result getLendingAnalysisSummary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLendingAnalysisSummaryAsync(array $args = [])
 * @method \Aws\Result startDocumentAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startDocumentAnalysisAsync(array $args = [])
 * @method \Aws\Result startDocumentTextDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startDocumentTextDetectionAsync(array $args = [])
 * @method \Aws\Result startExpenseAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startExpenseAnalysisAsync(array $args = [])
 * @method \Aws\Result startLendingAnalysis(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startLendingAnalysisAsync(array $args = [])
 */
class TextractClient extends AwsClient {}


<?php
namespace Aws\Textract\Exception;

use Aws\Exception\AwsException;

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


<?php
namespace Aws\TimestreamQuery;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Timestream Query** service.
 * @method \Aws\Result cancelQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelQueryAsync(array $args = [])
 * @method \Aws\Result createScheduledQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createScheduledQueryAsync(array $args = [])
 * @method \Aws\Result deleteScheduledQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteScheduledQueryAsync(array $args = [])
 * @method \Aws\Result describeEndpoints(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEndpointsAsync(array $args = [])
 * @method \Aws\Result describeScheduledQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeScheduledQueryAsync(array $args = [])
 * @method \Aws\Result executeScheduledQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise executeScheduledQueryAsync(array $args = [])
 * @method \Aws\Result listScheduledQueries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listScheduledQueriesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result prepareQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise prepareQueryAsync(array $args = [])
 * @method \Aws\Result query(array $args = [])
 * @method \GuzzleHttp\Promise\Promise queryAsync(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 updateScheduledQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateScheduledQueryAsync(array $args = [])
 */
class TimestreamQueryClient extends AwsClient {}


<?php
namespace Aws\TimestreamQuery\Exception;

use Aws\Exception\AwsException;

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