<?php
namespace Aws\Redshift;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Redshift** service.
 *
 * @method \Aws\Result acceptReservedNodeExchange(array $args = [])
 * @method \GuzzleHttp\Promise\Promise acceptReservedNodeExchangeAsync(array $args = [])
 * @method \Aws\Result addPartner(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addPartnerAsync(array $args = [])
 * @method \Aws\Result associateDataShareConsumer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateDataShareConsumerAsync(array $args = [])
 * @method \Aws\Result authorizeClusterSecurityGroupIngress(array $args = [])
 * @method \GuzzleHttp\Promise\Promise authorizeClusterSecurityGroupIngressAsync(array $args = [])
 * @method \Aws\Result authorizeDataShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise authorizeDataShareAsync(array $args = [])
 * @method \Aws\Result authorizeEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise authorizeEndpointAccessAsync(array $args = [])
 * @method \Aws\Result authorizeSnapshotAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise authorizeSnapshotAccessAsync(array $args = [])
 * @method \Aws\Result batchDeleteClusterSnapshots(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchDeleteClusterSnapshotsAsync(array $args = [])
 * @method \Aws\Result batchModifyClusterSnapshots(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchModifyClusterSnapshotsAsync(array $args = [])
 * @method \Aws\Result cancelResize(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelResizeAsync(array $args = [])
 * @method \Aws\Result copyClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise copyClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result createAuthenticationProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAuthenticationProfileAsync(array $args = [])
 * @method \Aws\Result createCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createClusterAsync(array $args = [])
 * @method \Aws\Result createClusterParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createClusterParameterGroupAsync(array $args = [])
 * @method \Aws\Result createClusterSecurityGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createClusterSecurityGroupAsync(array $args = [])
 * @method \Aws\Result createClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result createClusterSubnetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createClusterSubnetGroupAsync(array $args = [])
 * @method \Aws\Result createCustomDomainAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCustomDomainAssociationAsync(array $args = [])
 * @method \Aws\Result createEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createEndpointAccessAsync(array $args = [])
 * @method \Aws\Result createEventSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createEventSubscriptionAsync(array $args = [])
 * @method \Aws\Result createHsmClientCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createHsmClientCertificateAsync(array $args = [])
 * @method \Aws\Result createHsmConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createHsmConfigurationAsync(array $args = [])
 * @method \Aws\Result createScheduledAction(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createScheduledActionAsync(array $args = [])
 * @method \Aws\Result createSnapshotCopyGrant(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSnapshotCopyGrantAsync(array $args = [])
 * @method \Aws\Result createSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result createTags(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTagsAsync(array $args = [])
 * @method \Aws\Result createUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createUsageLimitAsync(array $args = [])
 * @method \Aws\Result deauthorizeDataShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deauthorizeDataShareAsync(array $args = [])
 * @method \Aws\Result deleteAuthenticationProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAuthenticationProfileAsync(array $args = [])
 * @method \Aws\Result deleteCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteClusterAsync(array $args = [])
 * @method \Aws\Result deleteClusterParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteClusterParameterGroupAsync(array $args = [])
 * @method \Aws\Result deleteClusterSecurityGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteClusterSecurityGroupAsync(array $args = [])
 * @method \Aws\Result deleteClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result deleteClusterSubnetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteClusterSubnetGroupAsync(array $args = [])
 * @method \Aws\Result deleteCustomDomainAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCustomDomainAssociationAsync(array $args = [])
 * @method \Aws\Result deleteEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteEndpointAccessAsync(array $args = [])
 * @method \Aws\Result deleteEventSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteEventSubscriptionAsync(array $args = [])
 * @method \Aws\Result deleteHsmClientCertificate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteHsmClientCertificateAsync(array $args = [])
 * @method \Aws\Result deleteHsmConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteHsmConfigurationAsync(array $args = [])
 * @method \Aws\Result deletePartner(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deletePartnerAsync(array $args = [])
 * @method \Aws\Result deleteScheduledAction(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteScheduledActionAsync(array $args = [])
 * @method \Aws\Result deleteSnapshotCopyGrant(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSnapshotCopyGrantAsync(array $args = [])
 * @method \Aws\Result deleteSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result deleteTags(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTagsAsync(array $args = [])
 * @method \Aws\Result deleteUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteUsageLimitAsync(array $args = [])
 * @method \Aws\Result describeAccountAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountAttributesAsync(array $args = [])
 * @method \Aws\Result describeAuthenticationProfiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuthenticationProfilesAsync(array $args = [])
 * @method \Aws\Result describeClusterDbRevisions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterDbRevisionsAsync(array $args = [])
 * @method \Aws\Result describeClusterParameterGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterParameterGroupsAsync(array $args = [])
 * @method \Aws\Result describeClusterParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterParametersAsync(array $args = [])
 * @method \Aws\Result describeClusterSecurityGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterSecurityGroupsAsync(array $args = [])
 * @method \Aws\Result describeClusterSnapshots(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterSnapshotsAsync(array $args = [])
 * @method \Aws\Result describeClusterSubnetGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterSubnetGroupsAsync(array $args = [])
 * @method \Aws\Result describeClusterTracks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterTracksAsync(array $args = [])
 * @method \Aws\Result describeClusterVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClusterVersionsAsync(array $args = [])
 * @method \Aws\Result describeClusters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeClustersAsync(array $args = [])
 * @method \Aws\Result describeCustomDomainAssociations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCustomDomainAssociationsAsync(array $args = [])
 * @method \Aws\Result describeDataShares(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDataSharesAsync(array $args = [])
 * @method \Aws\Result describeDataSharesForConsumer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDataSharesForConsumerAsync(array $args = [])
 * @method \Aws\Result describeDataSharesForProducer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDataSharesForProducerAsync(array $args = [])
 * @method \Aws\Result describeDefaultClusterParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDefaultClusterParametersAsync(array $args = [])
 * @method \Aws\Result describeEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEndpointAccessAsync(array $args = [])
 * @method \Aws\Result describeEndpointAuthorization(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEndpointAuthorizationAsync(array $args = [])
 * @method \Aws\Result describeEventCategories(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEventCategoriesAsync(array $args = [])
 * @method \Aws\Result describeEventSubscriptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEventSubscriptionsAsync(array $args = [])
 * @method \Aws\Result describeEvents(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeEventsAsync(array $args = [])
 * @method \Aws\Result describeHsmClientCertificates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeHsmClientCertificatesAsync(array $args = [])
 * @method \Aws\Result describeHsmConfigurations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeHsmConfigurationsAsync(array $args = [])
 * @method \Aws\Result describeLoggingStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLoggingStatusAsync(array $args = [])
 * @method \Aws\Result describeNodeConfigurationOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeNodeConfigurationOptionsAsync(array $args = [])
 * @method \Aws\Result describeOrderableClusterOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeOrderableClusterOptionsAsync(array $args = [])
 * @method \Aws\Result describePartners(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePartnersAsync(array $args = [])
 * @method \Aws\Result describeReservedNodeExchangeStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReservedNodeExchangeStatusAsync(array $args = [])
 * @method \Aws\Result describeReservedNodeOfferings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReservedNodeOfferingsAsync(array $args = [])
 * @method \Aws\Result describeReservedNodes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReservedNodesAsync(array $args = [])
 * @method \Aws\Result describeResize(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeResizeAsync(array $args = [])
 * @method \Aws\Result describeScheduledActions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeScheduledActionsAsync(array $args = [])
 * @method \Aws\Result describeSnapshotCopyGrants(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSnapshotCopyGrantsAsync(array $args = [])
 * @method \Aws\Result describeSnapshotSchedules(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSnapshotSchedulesAsync(array $args = [])
 * @method \Aws\Result describeStorage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeStorageAsync(array $args = [])
 * @method \Aws\Result describeTableRestoreStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTableRestoreStatusAsync(array $args = [])
 * @method \Aws\Result describeTags(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTagsAsync(array $args = [])
 * @method \Aws\Result describeUsageLimits(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUsageLimitsAsync(array $args = [])
 * @method \Aws\Result disableLogging(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableLoggingAsync(array $args = [])
 * @method \Aws\Result disableSnapshotCopy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableSnapshotCopyAsync(array $args = [])
 * @method \Aws\Result disassociateDataShareConsumer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateDataShareConsumerAsync(array $args = [])
 * @method \Aws\Result enableLogging(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableLoggingAsync(array $args = [])
 * @method \Aws\Result enableSnapshotCopy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableSnapshotCopyAsync(array $args = [])
 * @method \Aws\Result getClusterCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getClusterCredentialsAsync(array $args = [])
 * @method \Aws\Result getClusterCredentialsWithIAM(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getClusterCredentialsWithIAMAsync(array $args = [])
 * @method \Aws\Result getReservedNodeExchangeConfigurationOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getReservedNodeExchangeConfigurationOptionsAsync(array $args = [])
 * @method \Aws\Result getReservedNodeExchangeOfferings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getReservedNodeExchangeOfferingsAsync(array $args = [])
 * @method \Aws\Result modifyAquaConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAquaConfigurationAsync(array $args = [])
 * @method \Aws\Result modifyAuthenticationProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAuthenticationProfileAsync(array $args = [])
 * @method \Aws\Result modifyCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterAsync(array $args = [])
 * @method \Aws\Result modifyClusterDbRevision(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterDbRevisionAsync(array $args = [])
 * @method \Aws\Result modifyClusterIamRoles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterIamRolesAsync(array $args = [])
 * @method \Aws\Result modifyClusterMaintenance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterMaintenanceAsync(array $args = [])
 * @method \Aws\Result modifyClusterParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterParameterGroupAsync(array $args = [])
 * @method \Aws\Result modifyClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result modifyClusterSnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterSnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result modifyClusterSubnetGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyClusterSubnetGroupAsync(array $args = [])
 * @method \Aws\Result modifyCustomDomainAssociation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyCustomDomainAssociationAsync(array $args = [])
 * @method \Aws\Result modifyEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyEndpointAccessAsync(array $args = [])
 * @method \Aws\Result modifyEventSubscription(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyEventSubscriptionAsync(array $args = [])
 * @method \Aws\Result modifyScheduledAction(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyScheduledActionAsync(array $args = [])
 * @method \Aws\Result modifySnapshotCopyRetentionPeriod(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifySnapshotCopyRetentionPeriodAsync(array $args = [])
 * @method \Aws\Result modifySnapshotSchedule(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifySnapshotScheduleAsync(array $args = [])
 * @method \Aws\Result modifyUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyUsageLimitAsync(array $args = [])
 * @method \Aws\Result pauseCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise pauseClusterAsync(array $args = [])
 * @method \Aws\Result purchaseReservedNodeOffering(array $args = [])
 * @method \GuzzleHttp\Promise\Promise purchaseReservedNodeOfferingAsync(array $args = [])
 * @method \Aws\Result rebootCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise rebootClusterAsync(array $args = [])
 * @method \Aws\Result rejectDataShare(array $args = [])
 * @method \GuzzleHttp\Promise\Promise rejectDataShareAsync(array $args = [])
 * @method \Aws\Result resetClusterParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetClusterParameterGroupAsync(array $args = [])
 * @method \Aws\Result resizeCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resizeClusterAsync(array $args = [])
 * @method \Aws\Result restoreFromClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreFromClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result restoreTableFromClusterSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreTableFromClusterSnapshotAsync(array $args = [])
 * @method \Aws\Result resumeCluster(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resumeClusterAsync(array $args = [])
 * @method \Aws\Result revokeClusterSecurityGroupIngress(array $args = [])
 * @method \GuzzleHttp\Promise\Promise revokeClusterSecurityGroupIngressAsync(array $args = [])
 * @method \Aws\Result revokeEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise revokeEndpointAccessAsync(array $args = [])
 * @method \Aws\Result revokeSnapshotAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise revokeSnapshotAccessAsync(array $args = [])
 * @method \Aws\Result rotateEncryptionKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise rotateEncryptionKeyAsync(array $args = [])
 * @method \Aws\Result updatePartnerStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updatePartnerStatusAsync(array $args = [])
 */
class RedshiftClient extends AwsClient {}


<?php
namespace Aws\Redshift\Exception;

use Aws\Exception\AwsException;

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


<?php
namespace Aws\RedshiftDataAPIService;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Redshift Data API Service** service.
 * @method \Aws\Result batchExecuteStatement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchExecuteStatementAsync(array $args = [])
 * @method \Aws\Result cancelStatement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelStatementAsync(array $args = [])
 * @method \Aws\Result describeStatement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeStatementAsync(array $args = [])
 * @method \Aws\Result describeTable(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTableAsync(array $args = [])
 * @method \Aws\Result executeStatement(array $args = [])
 * @method \GuzzleHttp\Promise\Promise executeStatementAsync(array $args = [])
 * @method \Aws\Result getStatementResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getStatementResultAsync(array $args = [])
 * @method \Aws\Result listDatabases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDatabasesAsync(array $args = [])
 * @method \Aws\Result listSchemas(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSchemasAsync(array $args = [])
 * @method \Aws\Result listStatements(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listStatementsAsync(array $args = [])
 * @method \Aws\Result listTables(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTablesAsync(array $args = [])
 */
class RedshiftDataAPIServiceClient extends AwsClient {}


<?php
namespace Aws\RedshiftDataAPIService\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Redshift Data API Service** service.
 */
class RedshiftDataAPIServiceException extends AwsException {}


<?php
namespace Aws\RedshiftServerless;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Redshift Serverless** service.
 * @method \Aws\Result convertRecoveryPointToSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise convertRecoveryPointToSnapshotAsync(array $args = [])
 * @method \Aws\Result createEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createEndpointAccessAsync(array $args = [])
 * @method \Aws\Result createNamespace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createNamespaceAsync(array $args = [])
 * @method \Aws\Result createSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSnapshotAsync(array $args = [])
 * @method \Aws\Result createUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createUsageLimitAsync(array $args = [])
 * @method \Aws\Result createWorkgroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWorkgroupAsync(array $args = [])
 * @method \Aws\Result deleteEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteEndpointAccessAsync(array $args = [])
 * @method \Aws\Result deleteNamespace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteNamespaceAsync(array $args = [])
 * @method \Aws\Result deleteResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResourcePolicyAsync(array $args = [])
 * @method \Aws\Result deleteSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSnapshotAsync(array $args = [])
 * @method \Aws\Result deleteUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteUsageLimitAsync(array $args = [])
 * @method \Aws\Result deleteWorkgroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWorkgroupAsync(array $args = [])
 * @method \Aws\Result getCredentials(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCredentialsAsync(array $args = [])
 * @method \Aws\Result getEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getEndpointAccessAsync(array $args = [])
 * @method \Aws\Result getNamespace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getNamespaceAsync(array $args = [])
 * @method \Aws\Result getRecoveryPoint(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getRecoveryPointAsync(array $args = [])
 * @method \Aws\Result getResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcePolicyAsync(array $args = [])
 * @method \Aws\Result getSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSnapshotAsync(array $args = [])
 * @method \Aws\Result getTableRestoreStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTableRestoreStatusAsync(array $args = [])
 * @method \Aws\Result getUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getUsageLimitAsync(array $args = [])
 * @method \Aws\Result getWorkgroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWorkgroupAsync(array $args = [])
 * @method \Aws\Result listEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listEndpointAccessAsync(array $args = [])
 * @method \Aws\Result listNamespaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listNamespacesAsync(array $args = [])
 * @method \Aws\Result listRecoveryPoints(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRecoveryPointsAsync(array $args = [])
 * @method \Aws\Result listSnapshots(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSnapshotsAsync(array $args = [])
 * @method \Aws\Result listTableRestoreStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTableRestoreStatusAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listUsageLimits(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listUsageLimitsAsync(array $args = [])
 * @method \Aws\Result listWorkgroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorkgroupsAsync(array $args = [])
 * @method \Aws\Result putResourcePolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putResourcePolicyAsync(array $args = [])
 * @method \Aws\Result restoreFromRecoveryPoint(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreFromRecoveryPointAsync(array $args = [])
 * @method \Aws\Result restoreFromSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreFromSnapshotAsync(array $args = [])
 * @method \Aws\Result restoreTableFromSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreTableFromSnapshotAsync(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 updateEndpointAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateEndpointAccessAsync(array $args = [])
 * @method \Aws\Result updateNamespace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateNamespaceAsync(array $args = [])
 * @method \Aws\Result updateSnapshot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSnapshotAsync(array $args = [])
 * @method \Aws\Result updateUsageLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateUsageLimitAsync(array $args = [])
 * @method \Aws\Result updateWorkgroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWorkgroupAsync(array $args = [])
 */
class RedshiftServerlessClient extends AwsClient {}


<?php
namespace Aws\RedshiftServerless\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **Redshift Serverless** service.
 */
class RedshiftServerlessException extends AwsException {}


<?php
namespace Aws\Rekognition;

use Aws\AwsClient;

/**
 * This client is used to interact with the **Amazon Rekognition** service.
 * @method \Aws\Result associateFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateFacesAsync(array $args = [])
 * @method \Aws\Result compareFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise compareFacesAsync(array $args = [])
 * @method \Aws\Result copyProjectVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise copyProjectVersionAsync(array $args = [])
 * @method \Aws\Result createCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCollectionAsync(array $args = [])
 * @method \Aws\Result createDataset(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDatasetAsync(array $args = [])
 * @method \Aws\Result createFaceLivenessSession(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createFaceLivenessSessionAsync(array $args = [])
 * @method \Aws\Result createProject(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createProjectAsync(array $args = [])
 * @method \Aws\Result createProjectVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createProjectVersionAsync(array $args = [])
 * @method \Aws\Result createStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createStreamProcessorAsync(array $args = [])
 * @method \Aws\Result createUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createUserAsync(array $args = [])
 * @method \Aws\Result deleteCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCollectionAsync(array $args = [])
 * @method \Aws\Result deleteDataset(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDatasetAsync(array $args = [])
 * @method \Aws\Result deleteFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteFacesAsync(array $args = [])
 * @method \Aws\Result deleteProject(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteProjectAsync(array $args = [])
 * @method \Aws\Result deleteProjectPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteProjectPolicyAsync(array $args = [])
 * @method \Aws\Result deleteProjectVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteProjectVersionAsync(array $args = [])
 * @method \Aws\Result deleteStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteStreamProcessorAsync(array $args = [])
 * @method \Aws\Result deleteUser(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteUserAsync(array $args = [])
 * @method \Aws\Result describeCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeCollectionAsync(array $args = [])
 * @method \Aws\Result describeDataset(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDatasetAsync(array $args = [])
 * @method \Aws\Result describeProjectVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeProjectVersionsAsync(array $args = [])
 * @method \Aws\Result describeProjects(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeProjectsAsync(array $args = [])
 * @method \Aws\Result describeStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeStreamProcessorAsync(array $args = [])
 * @method \Aws\Result detectCustomLabels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectCustomLabelsAsync(array $args = [])
 * @method \Aws\Result detectFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectFacesAsync(array $args = [])
 * @method \Aws\Result detectLabels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectLabelsAsync(array $args = [])
 * @method \Aws\Result detectModerationLabels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectModerationLabelsAsync(array $args = [])
 * @method \Aws\Result detectProtectiveEquipment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectProtectiveEquipmentAsync(array $args = [])
 * @method \Aws\Result detectText(array $args = [])
 * @method \GuzzleHttp\Promise\Promise detectTextAsync(array $args = [])
 * @method \Aws\Result disassociateFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateFacesAsync(array $args = [])
 * @method \Aws\Result distributeDatasetEntries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise distributeDatasetEntriesAsync(array $args = [])
 * @method \Aws\Result getCelebrityInfo(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCelebrityInfoAsync(array $args = [])
 * @method \Aws\Result getCelebrityRecognition(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCelebrityRecognitionAsync(array $args = [])
 * @method \Aws\Result getContentModeration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getContentModerationAsync(array $args = [])
 * @method \Aws\Result getFaceDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getFaceDetectionAsync(array $args = [])
 * @method \Aws\Result getFaceLivenessSessionResults(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getFaceLivenessSessionResultsAsync(array $args = [])
 * @method \Aws\Result getFaceSearch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getFaceSearchAsync(array $args = [])
 * @method \Aws\Result getLabelDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getLabelDetectionAsync(array $args = [])
 * @method \Aws\Result getPersonTracking(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getPersonTrackingAsync(array $args = [])
 * @method \Aws\Result getSegmentDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSegmentDetectionAsync(array $args = [])
 * @method \Aws\Result getTextDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTextDetectionAsync(array $args = [])
 * @method \Aws\Result indexFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise indexFacesAsync(array $args = [])
 * @method \Aws\Result listCollections(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCollectionsAsync(array $args = [])
 * @method \Aws\Result listDatasetEntries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDatasetEntriesAsync(array $args = [])
 * @method \Aws\Result listDatasetLabels(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDatasetLabelsAsync(array $args = [])
 * @method \Aws\Result listFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFacesAsync(array $args = [])
 * @method \Aws\Result listProjectPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listProjectPoliciesAsync(array $args = [])
 * @method \Aws\Result listStreamProcessors(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listStreamProcessorsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listUsers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listUsersAsync(array $args = [])
 * @method \Aws\Result putProjectPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putProjectPolicyAsync(array $args = [])
 * @method \Aws\Result recognizeCelebrities(array $args = [])
 * @method \GuzzleHttp\Promise\Promise recognizeCelebritiesAsync(array $args = [])
 * @method \Aws\Result searchFaces(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchFacesAsync(array $args = [])
 * @method \Aws\Result searchFacesByImage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchFacesByImageAsync(array $args = [])
 * @method \Aws\Result searchUsers(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchUsersAsync(array $args = [])
 * @method \Aws\Result searchUsersByImage(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchUsersByImageAsync(array $args = [])
 * @method \Aws\Result startCelebrityRecognition(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startCelebrityRecognitionAsync(array $args = [])
 * @method \Aws\Result startContentModeration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startContentModerationAsync(array $args = [])
 * @method \Aws\Result startFaceDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startFaceDetectionAsync(array $args = [])
 * @method \Aws\Result startFaceSearch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startFaceSearchAsync(array $args = [])
 * @method \Aws\Result startLabelDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startLabelDetectionAsync(array $args = [])
 * @method \Aws\Result startPersonTracking(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startPersonTrackingAsync(array $args = [])
 * @method \Aws\Result startProjectVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startProjectVersionAsync(array $args = [])
 * @method \Aws\Result startSegmentDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startSegmentDetectionAsync(array $args = [])
 * @method \Aws\Result startStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startStreamProcessorAsync(array $args = [])
 * @method \Aws\Result startTextDetection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startTextDetectionAsync(array $args = [])
 * @method \Aws\Result stopProjectVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopProjectVersionAsync(array $args = [])
 * @method \Aws\Result stopStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise stopStreamProcessorAsync(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 updateDatasetEntries(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateDatasetEntriesAsync(array $args = [])
 * @method \Aws\Result updateStreamProcessor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateStreamProcessorAsync(array $args = [])
 */
class RekognitionClient extends AwsClient {}


<?php
namespace Aws\Rekognition\Exception;

use Aws\Exception\AwsException;

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


<?php
namespace Aws\ResilienceHub;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Resilience Hub** service.
 * @method \Aws\Result addDraftAppVersionResourceMappings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise addDraftAppVersionResourceMappingsAsync(array $args = [])
 * @method \Aws\Result createApp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAppAsync(array $args = [])
 * @method \Aws\Result createAppVersionAppComponent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAppVersionAppComponentAsync(array $args = [])
 * @method \Aws\Result createAppVersionResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAppVersionResourceAsync(array $args = [])
 * @method \Aws\Result createRecommendationTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRecommendationTemplateAsync(array $args = [])
 * @method \Aws\Result createResiliencyPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createResiliencyPolicyAsync(array $args = [])
 * @method \Aws\Result deleteApp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAppAsync(array $args = [])
 * @method \Aws\Result deleteAppAssessment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAppAssessmentAsync(array $args = [])
 * @method \Aws\Result deleteAppInputSource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAppInputSourceAsync(array $args = [])
 * @method \Aws\Result deleteAppVersionAppComponent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAppVersionAppComponentAsync(array $args = [])
 * @method \Aws\Result deleteAppVersionResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAppVersionResourceAsync(array $args = [])
 * @method \Aws\Result deleteRecommendationTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRecommendationTemplateAsync(array $args = [])
 * @method \Aws\Result deleteResiliencyPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteResiliencyPolicyAsync(array $args = [])
 * @method \Aws\Result describeApp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppAsync(array $args = [])
 * @method \Aws\Result describeAppAssessment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppAssessmentAsync(array $args = [])
 * @method \Aws\Result describeAppVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppVersionAsync(array $args = [])
 * @method \Aws\Result describeAppVersionAppComponent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppVersionAppComponentAsync(array $args = [])
 * @method \Aws\Result describeAppVersionResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppVersionResourceAsync(array $args = [])
 * @method \Aws\Result describeAppVersionResourcesResolutionStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppVersionResourcesResolutionStatusAsync(array $args = [])
 * @method \Aws\Result describeAppVersionTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAppVersionTemplateAsync(array $args = [])
 * @method \Aws\Result describeDraftAppVersionResourcesImportStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDraftAppVersionResourcesImportStatusAsync(array $args = [])
 * @method \Aws\Result describeResiliencyPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeResiliencyPolicyAsync(array $args = [])
 * @method \Aws\Result importResourcesToDraftAppVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importResourcesToDraftAppVersionAsync(array $args = [])
 * @method \Aws\Result listAlarmRecommendations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAlarmRecommendationsAsync(array $args = [])
 * @method \Aws\Result listAppAssessments(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppAssessmentsAsync(array $args = [])
 * @method \Aws\Result listAppComponentCompliances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppComponentCompliancesAsync(array $args = [])
 * @method \Aws\Result listAppComponentRecommendations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppComponentRecommendationsAsync(array $args = [])
 * @method \Aws\Result listAppInputSources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppInputSourcesAsync(array $args = [])
 * @method \Aws\Result listAppVersionAppComponents(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppVersionAppComponentsAsync(array $args = [])
 * @method \Aws\Result listAppVersionResourceMappings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppVersionResourceMappingsAsync(array $args = [])
 * @method \Aws\Result listAppVersionResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppVersionResourcesAsync(array $args = [])
 * @method \Aws\Result listAppVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppVersionsAsync(array $args = [])
 * @method \Aws\Result listApps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listAppsAsync(array $args = [])
 * @method \Aws\Result listRecommendationTemplates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRecommendationTemplatesAsync(array $args = [])
 * @method \Aws\Result listResiliencyPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResiliencyPoliciesAsync(array $args = [])
 * @method \Aws\Result listSopRecommendations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSopRecommendationsAsync(array $args = [])
 * @method \Aws\Result listSuggestedResiliencyPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSuggestedResiliencyPoliciesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTestRecommendations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTestRecommendationsAsync(array $args = [])
 * @method \Aws\Result listUnsupportedAppVersionResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listUnsupportedAppVersionResourcesAsync(array $args = [])
 * @method \Aws\Result publishAppVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise publishAppVersionAsync(array $args = [])
 * @method \Aws\Result putDraftAppVersionTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putDraftAppVersionTemplateAsync(array $args = [])
 * @method \Aws\Result removeDraftAppVersionResourceMappings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise removeDraftAppVersionResourceMappingsAsync(array $args = [])
 * @method \Aws\Result resolveAppVersionResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resolveAppVersionResourcesAsync(array $args = [])
 * @method \Aws\Result startAppAssessment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startAppAssessmentAsync(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 updateApp(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAppAsync(array $args = [])
 * @method \Aws\Result updateAppVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAppVersionAsync(array $args = [])
 * @method \Aws\Result updateAppVersionAppComponent(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAppVersionAppComponentAsync(array $args = [])
 * @method \Aws\Result updateAppVersionResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAppVersionResourceAsync(array $args = [])
 * @method \Aws\Result updateResiliencyPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateResiliencyPolicyAsync(array $args = [])
 */
class ResilienceHubClient extends AwsClient {}


<?php
namespace Aws\ResilienceHub\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Resilience Hub** service.
 */
class ResilienceHubException extends AwsException {}


<?php
namespace Aws\ResourceExplorer2;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Resource Explorer** service.
 * @method \Aws\Result associateDefaultView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateDefaultViewAsync(array $args = [])
 * @method \Aws\Result batchGetView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchGetViewAsync(array $args = [])
 * @method \Aws\Result createIndex(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createIndexAsync(array $args = [])
 * @method \Aws\Result createView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createViewAsync(array $args = [])
 * @method \Aws\Result deleteIndex(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteIndexAsync(array $args = [])
 * @method \Aws\Result deleteView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteViewAsync(array $args = [])
 * @method \Aws\Result disassociateDefaultView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateDefaultViewAsync(array $args = [])
 * @method \Aws\Result getDefaultView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDefaultViewAsync(array $args = [])
 * @method \Aws\Result getIndex(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getIndexAsync(array $args = [])
 * @method \Aws\Result getView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getViewAsync(array $args = [])
 * @method \Aws\Result listIndexes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listIndexesAsync(array $args = [])
 * @method \Aws\Result listSupportedResourceTypes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSupportedResourceTypesAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listViews(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listViewsAsync(array $args = [])
 * @method \Aws\Result search(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchAsync(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 updateIndexType(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateIndexTypeAsync(array $args = [])
 * @method \Aws\Result updateView(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateViewAsync(array $args = [])
 */
class ResourceExplorer2Client extends AwsClient {}


<?php
namespace Aws\ResourceExplorer2\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Resource Explorer** service.
 */
class ResourceExplorer2Exception extends AwsException {}


<?php
namespace Aws\ResourceGroups;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Resource Groups** service.
 * @method \Aws\Result createGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createGroupAsync(array $args = [])
 * @method \Aws\Result deleteGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteGroupAsync(array $args = [])
 * @method \Aws\Result getAccountSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAccountSettingsAsync(array $args = [])
 * @method \Aws\Result getGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGroupAsync(array $args = [])
 * @method \Aws\Result getGroupConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGroupConfigurationAsync(array $args = [])
 * @method \Aws\Result getGroupQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGroupQueryAsync(array $args = [])
 * @method \Aws\Result getTags(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTagsAsync(array $args = [])
 * @method \Aws\Result groupResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise groupResourcesAsync(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 putGroupConfiguration(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putGroupConfigurationAsync(array $args = [])
 * @method \Aws\Result searchResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise searchResourcesAsync(array $args = [])
 * @method \Aws\Result tag(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagAsync(array $args = [])
 * @method \Aws\Result ungroupResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise ungroupResourcesAsync(array $args = [])
 * @method \Aws\Result untag(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagAsync(array $args = [])
 * @method \Aws\Result updateAccountSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateAccountSettingsAsync(array $args = [])
 * @method \Aws\Result updateGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGroupAsync(array $args = [])
 * @method \Aws\Result updateGroupQuery(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateGroupQueryAsync(array $args = [])
 */
class ResourceGroupsClient extends AwsClient {}


<?php
namespace Aws\ResourceGroups\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Resource Groups** service.
 */
class ResourceGroupsException extends AwsException {}


<?php
namespace Aws\ResourceGroupsTaggingAPI;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS Resource Groups Tagging API** service.
 * @method \Aws\Result describeReportCreation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReportCreationAsync(array $args = [])
 * @method \Aws\Result getComplianceSummary(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getComplianceSummaryAsync(array $args = [])
 * @method \Aws\Result getResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getResourcesAsync(array $args = [])
 * @method \Aws\Result getTagKeys(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTagKeysAsync(array $args = [])
 * @method \Aws\Result getTagValues(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTagValuesAsync(array $args = [])
 * @method \Aws\Result startReportCreation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startReportCreationAsync(array $args = [])
 * @method \Aws\Result tagResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise tagResourcesAsync(array $args = [])
 * @method \Aws\Result untagResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise untagResourcesAsync(array $args = [])
 */
class ResourceGroupsTaggingAPIClient extends AwsClient {}


<?php
namespace Aws\ResourceGroupsTaggingAPI\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **AWS Resource Groups Tagging API** service.
 */
class ResourceGroupsTaggingAPIException extends AwsException {}


<?php
namespace Aws\Retry;

use Aws\Retry\Exception\ConfigurationException;

class Configuration implements ConfigurationInterface
{
    private $mode;
    private $maxAttempts;
    private $validModes = [
        'legacy',
        'standard',
        'adaptive'
    ];

    public function __construct($mode = 'legacy', $maxAttempts = 3)
    {
        $mode = strtolower($mode);
        if (!in_array($mode, $this->validModes)) {
            throw new ConfigurationException("'{$mode}' is not a valid mode."
                . " The mode has to be 'legacy', 'standard', or 'adaptive'.");
        }
        if (!is_numeric($maxAttempts)
            || intval($maxAttempts) != $maxAttempts
            || $maxAttempts < 1
        ) {
            throw new ConfigurationException("The 'maxAttempts' parameter has"
                . " to be an integer >= 1.");
        }

        $this->mode = $mode;
        $this->maxAttempts = intval($maxAttempts);
    }

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

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

    /**
     * {@inheritdoc}
     */
    public function toArray()
    {
        return [
            'mode' => $this->getMode(),
            'max_attempts' => $this->getMaxAttempts(),
        ];
    }
}


<?php
namespace Aws\Retry;

/**
 * Provides access to retry configuration
 */
interface ConfigurationInterface
{
    /**
     * Returns the retry mode. Available modes include 'legacy', 'standard', and
     * 'adapative'.
     *
     * @return string
     */
    public function getMode();

    /**
     * Returns the maximum number of attempts that will be used for a request
     *
     * @return string
     */
    public function getMaxAttempts();

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


<?php
namespace Aws\Retry;

use Aws\AbstractConfigurationProvider;
use Aws\CacheInterface;
use Aws\ConfigurationProviderInterface;
use Aws\Retry\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\Retry\ConfigurationInterface}
 * or rejected with an {@see \Aws\Retry\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\Retry\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_MAX_ATTEMPTS = 3;
    const DEFAULT_MODE = 'legacy';
    const ENV_MAX_ATTEMPTS = 'AWS_MAX_ATTEMPTS';
    const ENV_MODE = 'AWS_RETRY_MODE';
    const ENV_PROFILE = 'AWS_PROFILE';
    const INI_MAX_ATTEMPTS = 'max_attempts';
    const INI_MODE = 'retry_mode';

    public static $cacheKey = 'aws_retries_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['retries'])
            && $config['retries'] instanceof CacheInterface
        ) {
            return self::cache($memo, $config['retries'], 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
            $mode = getenv(self::ENV_MODE);
            $maxAttempts = getenv(self::ENV_MAX_ATTEMPTS)
                ? getenv(self::ENV_MAX_ATTEMPTS)
                : self::DEFAULT_MAX_ATTEMPTS;
            if (!empty($mode)) {
                return Promise\Create::promiseFor(
                    new Configuration($mode, $maxAttempts)
                );
            }

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

    /**
     * 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_MODE, self::DEFAULT_MAX_ATTEMPTS)
            );
        };
    }

    /**
     * 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_MODE])) {
                return self::reject("Required retry config values
                    not present in INI profile '{$profile}' ({$filename})");
            }

            $maxAttempts = isset($data[$profile][self::INI_MAX_ATTEMPTS])
                ? $data[$profile][self::INI_MAX_ATTEMPTS]
                : self::DEFAULT_MAX_ATTEMPTS;

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

    /**
     * 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;
        }

        // An integer value for this config indicates the legacy 'retries'
        // config option, which is incremented to translate to max attempts
        if (is_int($config)) {
            return new Configuration('legacy', $config + 1);
        }

        if (is_array($config) && isset($config['mode'])) {
            $maxAttempts = isset($config['max_attempts'])
                ? $config['max_attempts']
                : self::DEFAULT_MAX_ATTEMPTS;
            return new Configuration($config['mode'], $maxAttempts);
        }

        throw new \InvalidArgumentException('Not a valid retry configuration'
            . ' argument.');
    }
}


<?php
namespace Aws\Retry;

use Aws\Exception\AwsException;
use Aws\ResultInterface;

/**
 * @internal
 */
class QuotaManager
{
    private $availableCapacity;
    private $capacityAmount;
    private $initialRetryTokens;
    private $maxCapacity;
    private $noRetryIncrement;
    private $retryCost;
    private $timeoutRetryCost;

    public function __construct($config = [])
    {
        $this->initialRetryTokens = isset($config['initial_retry_tokens'])
            ? $config['initial_retry_tokens']
            : 500;
        $this->noRetryIncrement = isset($config['no_retry_increment'])
            ? $config['no_retry_increment']
            : 1;
        $this->retryCost = isset($config['retry_cost'])
            ? $config['retry_cost']
            : 5;
        $this->timeoutRetryCost = isset($config['timeout_retry_cost'])
            ? $config['timeout_retry_cost']
            : 10;
        $this->maxCapacity = $this->initialRetryTokens;
        $this->availableCapacity = $this->initialRetryTokens;
    }

    public function hasRetryQuota($result)
    {
        if ($result instanceof AwsException && $result->isConnectionError()) {
            $this->capacityAmount = $this->timeoutRetryCost;
        } else {
            $this->capacityAmount = $this->retryCost;
        }

        if ($this->capacityAmount > $this->availableCapacity) {
            return false;
        }

        $this->availableCapacity -= $this->capacityAmount;
        return true;
    }

    public function releaseToQuota($result)
    {
        if ($result instanceof AwsException) {
            $statusCode = (int) $result->getStatusCode();
        } elseif ($result instanceof ResultInterface) {
            $statusCode = isset($result['@metadata']['statusCode'])
                ? (int) $result['@metadata']['statusCode']
                : null;
        }

        if (!empty($statusCode) && $statusCode >= 200 && $statusCode < 300) {
            if (isset($this->capacityAmount)) {
                $amount = $this->capacityAmount;
                $this->availableCapacity += $amount;
                unset($this->capacityAmount);
            } else {
                $amount = $this->noRetryIncrement;
                $this->availableCapacity += $amount;
            }
            $this->availableCapacity = min(
                $this->availableCapacity,
                $this->maxCapacity
            );
        }

        return (isset($amount) ? $amount : 0);
    }

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


<?php
namespace Aws\Retry;

/**
 * @internal
 */
class RateLimiter
{
    // User-configurable constants
    private $beta;
    private $minCapacity;
    private $minFillRate;
    private $scaleConstant;
    private $smooth;

    // Optional callable time provider
    private $timeProvider;

    // Pre-set state variables
    private $currentCapacity = 0;
    private $enabled = false;
    private $lastMaxRate = 0;
    private $measuredTxRate = 0;
    private $requestCount = 0;

    // Other state variables
    private $fillRate;
    private $lastThrottleTime;
    private $lastTimestamp;
    private $lastTxRateBucket;
    private $maxCapacity;
    private $timeWindow;

    public function __construct($options = [])
    {
        $this->beta = isset($options['beta'])
            ? $options['beta']
            : 0.7;
        $this->minCapacity = isset($options['min_capacity'])
            ? $options['min_capacity']
            : 1;
        $this->minFillRate = isset($options['min_fill_rate'])
            ? $options['min_fill_rate']
            : 0.5;
        $this->scaleConstant = isset($options['scale_constant'])
            ? $options['scale_constant']
            : 0.4;
        $this->smooth = isset($options['smooth'])
            ? $options['smooth']
            : 0.8;
        $this->timeProvider = isset($options['time_provider'])
            ? $options['time_provider']
            : null;

        $this->lastTxRateBucket = floor($this->time());
        $this->lastThrottleTime = $this->time();
    }

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

    public function getSendToken()
    {
        $this->acquireToken(1);
    }

    public function updateSendingRate($isThrottled)
    {
        $this->updateMeasuredRate();

        if ($isThrottled) {
            if (!$this->isEnabled()) {
                $rateToUse = $this->measuredTxRate;
            } else {
                $rateToUse = min($this->measuredTxRate, $this->fillRate);
            }

            $this->lastMaxRate = $rateToUse;
            $this->calculateTimeWindow();
            $this->lastThrottleTime = $this->time();
            $calculatedRate = $this->cubicThrottle($rateToUse);
            $this->enableTokenBucket();
        } else {
            $this->calculateTimeWindow();
            $calculatedRate = $this->cubicSuccess($this->time());
        }
        $newRate = min($calculatedRate, 2 * $this->measuredTxRate);
        $this->updateTokenBucketRate($newRate);
        return $newRate;
    }

    private function acquireToken($amount)
    {
        if (!$this->enabled) {
            return true;
        }

        $this->refillTokenBucket();

        if ($amount > $this->currentCapacity) {
            usleep((int) (1000000 * ($amount - $this->currentCapacity) / $this->fillRate));
        }

        $this->currentCapacity -= $amount;
        return true;
    }

    private function calculateTimeWindow()
    {
        $this->timeWindow = pow(($this->lastMaxRate * (1 - $this->beta) / $this->scaleConstant), 0.333);
    }

    private function cubicSuccess($timestamp)
    {
        $dt = $timestamp - $this->lastThrottleTime;
        return $this->scaleConstant * pow($dt - $this->timeWindow, 3) + $this->lastMaxRate;
    }

    private function cubicThrottle($rateToUse)
    {
        return $rateToUse * $this->beta;
    }

    private function enableTokenBucket()
    {
        $this->enabled = true;
    }

    private function refillTokenBucket()
    {
        $timestamp = $this->time();
        if (!isset($this->lastTimestamp)) {
            $this->lastTimestamp = $timestamp;
            return;
        }
        $fillAmount = ($timestamp - $this->lastTimestamp) * $this->fillRate;
        $this->currentCapacity = $this->currentCapacity + $fillAmount;
        if (!is_null($this->maxCapacity)) {
            $this->currentCapacity = min(
                $this->maxCapacity,
                $this->currentCapacity
            );
        }

        $this->lastTimestamp = $timestamp;
    }

    private function time()
    {
        if (is_callable($this->timeProvider)) {
            $provider = $this->timeProvider;
            $time = $provider();
            return $time;
        }
        return microtime(true);
    }

    private function updateMeasuredRate()
    {
        $timestamp = $this->time();
        $timeBucket = floor(round($timestamp, 3) * 2) / 2;
        $this->requestCount++;
        if ($timeBucket > $this->lastTxRateBucket) {
            $currentRate = $this->requestCount / ($timeBucket - $this->lastTxRateBucket);
            $this->measuredTxRate = ($currentRate * $this->smooth)
                + ($this->measuredTxRate * (1 - $this->smooth));
            $this->requestCount = 0;
            $this->lastTxRateBucket = $timeBucket;
        }
    }

    private function updateTokenBucketRate($newRps)
    {
        $this->refillTokenBucket();
        $this->fillRate = max($newRps, $this->minFillRate);
        $this->maxCapacity = max($newRps, $this->minCapacity);
        $this->currentCapacity = min($this->currentCapacity, $this->maxCapacity);
    }
}


<?php
namespace Aws\Retry;

use Aws\Exception\AwsException;
use Aws\ResultInterface;

trait RetryHelperTrait
{
    private function addRetryHeader($request, $retries, $delayBy)
    {
        return $request->withHeader('aws-sdk-retry', "{$retries}/{$delayBy}");
    }

    private function updateStats($retries, $delay, array &$stats)
    {
        if (!isset($stats['total_retry_delay'])) {
            $stats['total_retry_delay'] = 0;
        }

        $stats['total_retry_delay'] += $delay;
        $stats['retries_attempted'] = $retries;
    }

    private function updateHttpStats($value, array &$stats)
    {
        if (empty($stats['http'])) {
            $stats['http'] = [];
        }

        if ($value instanceof AwsException) {
            $resultStats = $value->getTransferInfo();
            $stats['http'] []= $resultStats;
        } elseif ($value instanceof ResultInterface) {
            $resultStats = isset($value['@metadata']['transferStats']['http'][0])
                ? $value['@metadata']['transferStats']['http'][0]
                : [];
            $stats['http'] []= $resultStats;
        }
    }

    private function bindStatsToReturn($return, array $stats)
    {
        if ($return instanceof ResultInterface) {
            if (!isset($return['@metadata'])) {
                $return['@metadata'] = [];
            }

            $return['@metadata']['transferStats'] = $stats;
        } elseif ($return instanceof AwsException) {
            $return->setTransferInfo($stats);
        }

        return $return;
    }
}


<?php
namespace Aws\Retry\Exception;

use Aws\HasMonitoringEventsTrait;
use Aws\MonitoringEventsInterface;

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


<?php
namespace Aws\RoboMaker;

use Aws\AwsClient;

/**
 * This client is used to interact with the **AWS RoboMaker** service.
 * @method \Aws\Result batchDeleteWorlds(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchDeleteWorldsAsync(array $args = [])
 * @method \Aws\Result batchDescribeSimulationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise batchDescribeSimulationJobAsync(array $args = [])
 * @method \Aws\Result cancelDeploymentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelDeploymentJobAsync(array $args = [])
 * @method \Aws\Result cancelSimulationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelSimulationJobAsync(array $args = [])
 * @method \Aws\Result cancelSimulationJobBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelSimulationJobBatchAsync(array $args = [])
 * @method \Aws\Result cancelWorldExportJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelWorldExportJobAsync(array $args = [])
 * @method \Aws\Result cancelWorldGenerationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise cancelWorldGenerationJobAsync(array $args = [])
 * @method \Aws\Result createDeploymentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDeploymentJobAsync(array $args = [])
 * @method \Aws\Result createFleet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createFleetAsync(array $args = [])
 * @method \Aws\Result createRobot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRobotAsync(array $args = [])
 * @method \Aws\Result createRobotApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRobotApplicationAsync(array $args = [])
 * @method \Aws\Result createRobotApplicationVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createRobotApplicationVersionAsync(array $args = [])
 * @method \Aws\Result createSimulationApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSimulationApplicationAsync(array $args = [])
 * @method \Aws\Result createSimulationApplicationVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSimulationApplicationVersionAsync(array $args = [])
 * @method \Aws\Result createSimulationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSimulationJobAsync(array $args = [])
 * @method \Aws\Result createWorldExportJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWorldExportJobAsync(array $args = [])
 * @method \Aws\Result createWorldGenerationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWorldGenerationJobAsync(array $args = [])
 * @method \Aws\Result createWorldTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWorldTemplateAsync(array $args = [])
 * @method \Aws\Result deleteFleet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteFleetAsync(array $args = [])
 * @method \Aws\Result deleteRobot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRobotAsync(array $args = [])
 * @method \Aws\Result deleteRobotApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteRobotApplicationAsync(array $args = [])
 * @method \Aws\Result deleteSimulationApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteSimulationApplicationAsync(array $args = [])
 * @method \Aws\Result deleteWorldTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWorldTemplateAsync(array $args = [])
 * @method \Aws\Result deregisterRobot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deregisterRobotAsync(array $args = [])
 * @method \Aws\Result describeDeploymentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDeploymentJobAsync(array $args = [])
 * @method \Aws\Result describeFleet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeFleetAsync(array $args = [])
 * @method \Aws\Result describeRobot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRobotAsync(array $args = [])
 * @method \Aws\Result describeRobotApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeRobotApplicationAsync(array $args = [])
 * @method \Aws\Result describeSimulationApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSimulationApplicationAsync(array $args = [])
 * @method \Aws\Result describeSimulationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSimulationJobAsync(array $args = [])
 * @method \Aws\Result describeSimulationJobBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSimulationJobBatchAsync(array $args = [])
 * @method \Aws\Result describeWorld(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorldAsync(array $args = [])
 * @method \Aws\Result describeWorldExportJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorldExportJobAsync(array $args = [])
 * @method \Aws\Result describeWorldGenerationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorldGenerationJobAsync(array $args = [])
 * @method \Aws\Result describeWorldTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWorldTemplateAsync(array $args = [])
 * @method \Aws\Result getWorldTemplateBody(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getWorldTemplateBodyAsync(array $args = [])
 * @method \Aws\Result listDeploymentJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listDeploymentJobsAsync(array $args = [])
 * @method \Aws\Result listFleets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listFleetsAsync(array $args = [])
 * @method \Aws\Result listRobotApplications(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRobotApplicationsAsync(array $args = [])
 * @method \Aws\Result listRobots(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listRobotsAsync(array $args = [])
 * @method \Aws\Result listSimulationApplications(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSimulationApplicationsAsync(array $args = [])
 * @method \Aws\Result listSimulationJobBatches(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSimulationJobBatchesAsync(array $args = [])
 * @method \Aws\Result listSimulationJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSimulationJobsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listWorldExportJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorldExportJobsAsync(array $args = [])
 * @method \Aws\Result listWorldGenerationJobs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorldGenerationJobsAsync(array $args = [])
 * @method \Aws\Result listWorldTemplates(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorldTemplatesAsync(array $args = [])
 * @method \Aws\Result listWorlds(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listWorldsAsync(array $args = [])
 * @method \Aws\Result registerRobot(array $args = [])
 * @method \GuzzleHttp\Promise\Promise registerRobotAsync(array $args = [])
 * @method \Aws\Result restartSimulationJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restartSimulationJobAsync(array $args = [])
 * @method \Aws\Result startSimulationJobBatch(array $args = [])
 * @method \GuzzleHttp\Promise\Promise startSimulationJobBatchAsync(array $args = [])
 * @method \Aws\Result syncDeploymentJob(array $args = [])
 * @method \GuzzleHttp\Promise\Promise syncDeploymentJobAsync(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 updateRobotApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateRobotApplicationAsync(array $args = [])
 * @method \Aws\Result updateSimulationApplication(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateSimulationApplicationAsync(array $args = [])
 * @method \Aws\Result updateWorldTemplate(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateWorldTemplateAsync(array $args = [])
 */
class RoboMakerClient extends AwsClient {}


<?php
namespace Aws\RoboMaker\Exception;

use Aws\Exception\AwsException;

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


<?php
namespace Aws\RolesAnywhere;

use Aws\AwsClient;

/**
 * This client is used to interact with the **IAM Roles Anywhere** service.
 * @method \Aws\Result createProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createProfileAsync(array $args = [])
 * @method \Aws\Result createTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTrustAnchorAsync(array $args = [])
 * @method \Aws\Result deleteCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCrlAsync(array $args = [])
 * @method \Aws\Result deleteProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteProfileAsync(array $args = [])
 * @method \Aws\Result deleteTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTrustAnchorAsync(array $args = [])
 * @method \Aws\Result disableCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableCrlAsync(array $args = [])
 * @method \Aws\Result disableProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableProfileAsync(array $args = [])
 * @method \Aws\Result disableTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableTrustAnchorAsync(array $args = [])
 * @method \Aws\Result enableCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableCrlAsync(array $args = [])
 * @method \Aws\Result enableProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableProfileAsync(array $args = [])
 * @method \Aws\Result enableTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableTrustAnchorAsync(array $args = [])
 * @method \Aws\Result getCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCrlAsync(array $args = [])
 * @method \Aws\Result getProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getProfileAsync(array $args = [])
 * @method \Aws\Result getSubject(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getSubjectAsync(array $args = [])
 * @method \Aws\Result getTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTrustAnchorAsync(array $args = [])
 * @method \Aws\Result importCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise importCrlAsync(array $args = [])
 * @method \Aws\Result listCrls(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCrlsAsync(array $args = [])
 * @method \Aws\Result listProfiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listProfilesAsync(array $args = [])
 * @method \Aws\Result listSubjects(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listSubjectsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTrustAnchors(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrustAnchorsAsync(array $args = [])
 * @method \Aws\Result putNotificationSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise putNotificationSettingsAsync(array $args = [])
 * @method \Aws\Result resetNotificationSettings(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetNotificationSettingsAsync(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 updateCrl(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateCrlAsync(array $args = [])
 * @method \Aws\Result updateProfile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateProfileAsync(array $args = [])
 * @method \Aws\Result updateTrustAnchor(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTrustAnchorAsync(array $args = [])
 */
class RolesAnywhereClient extends AwsClient {}


<?php
namespace Aws\RolesAnywhere\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the **IAM Roles Anywhere** service.
 */
class RolesAnywhereException extends AwsException {}


<?php
namespace Aws\Route53;

use Aws\AwsClient;
use Aws\CommandInterface;
use Psr\Http\Message\RequestInterface;

/**
 * This client is used to interact with the **Amazon Route 53** service.
 *
 * @method \Aws\Result activateKeySigningKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise activateKeySigningKeyAsync(array $args = [])
 * @method \Aws\Result associateVPCWithHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise associateVPCWithHostedZoneAsync(array $args = [])
 * @method \Aws\Result changeCidrCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise changeCidrCollectionAsync(array $args = [])
 * @method \Aws\Result changeResourceRecordSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise changeResourceRecordSetsAsync(array $args = [])
 * @method \Aws\Result changeTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise changeTagsForResourceAsync(array $args = [])
 * @method \Aws\Result createCidrCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createCidrCollectionAsync(array $args = [])
 * @method \Aws\Result createHealthCheck(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createHealthCheckAsync(array $args = [])
 * @method \Aws\Result createHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createHostedZoneAsync(array $args = [])
 * @method \Aws\Result createKeySigningKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createKeySigningKeyAsync(array $args = [])
 * @method \Aws\Result createQueryLoggingConfig(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createQueryLoggingConfigAsync(array $args = [])
 * @method \Aws\Result createReusableDelegationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createReusableDelegationSetAsync(array $args = [])
 * @method \Aws\Result createTrafficPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTrafficPolicyAsync(array $args = [])
 * @method \Aws\Result createTrafficPolicyInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTrafficPolicyInstanceAsync(array $args = [])
 * @method \Aws\Result createTrafficPolicyVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createTrafficPolicyVersionAsync(array $args = [])
 * @method \Aws\Result createVPCAssociationAuthorization(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createVPCAssociationAuthorizationAsync(array $args = [])
 * @method \Aws\Result deactivateKeySigningKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deactivateKeySigningKeyAsync(array $args = [])
 * @method \Aws\Result deleteCidrCollection(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteCidrCollectionAsync(array $args = [])
 * @method \Aws\Result deleteHealthCheck(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteHealthCheckAsync(array $args = [])
 * @method \Aws\Result deleteHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteHostedZoneAsync(array $args = [])
 * @method \Aws\Result deleteKeySigningKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteKeySigningKeyAsync(array $args = [])
 * @method \Aws\Result deleteQueryLoggingConfig(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteQueryLoggingConfigAsync(array $args = [])
 * @method \Aws\Result deleteReusableDelegationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteReusableDelegationSetAsync(array $args = [])
 * @method \Aws\Result deleteTrafficPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTrafficPolicyAsync(array $args = [])
 * @method \Aws\Result deleteTrafficPolicyInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteTrafficPolicyInstanceAsync(array $args = [])
 * @method \Aws\Result deleteVPCAssociationAuthorization(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteVPCAssociationAuthorizationAsync(array $args = [])
 * @method \Aws\Result disableHostedZoneDNSSEC(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableHostedZoneDNSSECAsync(array $args = [])
 * @method \Aws\Result disassociateVPCFromHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disassociateVPCFromHostedZoneAsync(array $args = [])
 * @method \Aws\Result enableHostedZoneDNSSEC(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableHostedZoneDNSSECAsync(array $args = [])
 * @method \Aws\Result getAccountLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getAccountLimitAsync(array $args = [])
 * @method \Aws\Result getChange(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getChangeAsync(array $args = [])
 * @method \Aws\Result getCheckerIpRanges(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getCheckerIpRangesAsync(array $args = [])
 * @method \Aws\Result getDNSSEC(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getDNSSECAsync(array $args = [])
 * @method \Aws\Result getGeoLocation(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getGeoLocationAsync(array $args = [])
 * @method \Aws\Result getHealthCheck(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHealthCheckAsync(array $args = [])
 * @method \Aws\Result getHealthCheckCount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHealthCheckCountAsync(array $args = [])
 * @method \Aws\Result getHealthCheckLastFailureReason(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHealthCheckLastFailureReasonAsync(array $args = [])
 * @method \Aws\Result getHealthCheckStatus(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHealthCheckStatusAsync(array $args = [])
 * @method \Aws\Result getHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHostedZoneAsync(array $args = [])
 * @method \Aws\Result getHostedZoneCount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHostedZoneCountAsync(array $args = [])
 * @method \Aws\Result getHostedZoneLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getHostedZoneLimitAsync(array $args = [])
 * @method \Aws\Result getQueryLoggingConfig(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getQueryLoggingConfigAsync(array $args = [])
 * @method \Aws\Result getReusableDelegationSet(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getReusableDelegationSetAsync(array $args = [])
 * @method \Aws\Result getReusableDelegationSetLimit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getReusableDelegationSetLimitAsync(array $args = [])
 * @method \Aws\Result getTrafficPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTrafficPolicyAsync(array $args = [])
 * @method \Aws\Result getTrafficPolicyInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTrafficPolicyInstanceAsync(array $args = [])
 * @method \Aws\Result getTrafficPolicyInstanceCount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getTrafficPolicyInstanceCountAsync(array $args = [])
 * @method \Aws\Result listCidrBlocks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCidrBlocksAsync(array $args = [])
 * @method \Aws\Result listCidrCollections(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCidrCollectionsAsync(array $args = [])
 * @method \Aws\Result listCidrLocations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listCidrLocationsAsync(array $args = [])
 * @method \Aws\Result listGeoLocations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listGeoLocationsAsync(array $args = [])
 * @method \Aws\Result listHealthChecks(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listHealthChecksAsync(array $args = [])
 * @method \Aws\Result listHostedZones(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listHostedZonesAsync(array $args = [])
 * @method \Aws\Result listHostedZonesByName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listHostedZonesByNameAsync(array $args = [])
 * @method \Aws\Result listHostedZonesByVPC(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listHostedZonesByVPCAsync(array $args = [])
 * @method \Aws\Result listQueryLoggingConfigs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listQueryLoggingConfigsAsync(array $args = [])
 * @method \Aws\Result listResourceRecordSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listResourceRecordSetsAsync(array $args = [])
 * @method \Aws\Result listReusableDelegationSets(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listReusableDelegationSetsAsync(array $args = [])
 * @method \Aws\Result listTagsForResource(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourceAsync(array $args = [])
 * @method \Aws\Result listTagsForResources(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTagsForResourcesAsync(array $args = [])
 * @method \Aws\Result listTrafficPolicies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrafficPoliciesAsync(array $args = [])
 * @method \Aws\Result listTrafficPolicyInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrafficPolicyInstancesAsync(array $args = [])
 * @method \Aws\Result listTrafficPolicyInstancesByHostedZone(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrafficPolicyInstancesByHostedZoneAsync(array $args = [])
 * @method \Aws\Result listTrafficPolicyInstancesByPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrafficPolicyInstancesByPolicyAsync(array $args = [])
 * @method \Aws\Result listTrafficPolicyVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listTrafficPolicyVersionsAsync(array $args = [])
 * @method \Aws\Result listVPCAssociationAuthorizations(array $args = [])
 * @method \GuzzleHttp\Promise\Promise listVPCAssociationAuthorizationsAsync(array $args = [])
 * @method \Aws\Result testDNSAnswer(array $args = [])
 * @method \GuzzleHttp\Promise\Promise testDNSAnswerAsync(array $args = [])
 * @method \Aws\Result updateHealthCheck(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateHealthCheckAsync(array $args = [])
 * @method \Aws\Result updateHostedZoneComment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateHostedZoneCommentAsync(array $args = [])
 * @method \Aws\Result updateTrafficPolicyComment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTrafficPolicyCommentAsync(array $args = [])
 * @method \Aws\Result updateTrafficPolicyInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateTrafficPolicyInstanceAsync(array $args = [])
 */
class Route53Client extends AwsClient
{
    public function __construct(array $args)
    {
        parent::__construct($args);
        $this->getHandlerList()->appendInit($this->cleanIdFn(), 'route53.clean_id');
    }

    private function cleanIdFn()
    {
        return function (callable $handler) {
            return function (CommandInterface $c, RequestInterface $r = null) use ($handler) {
                foreach (['Id', 'HostedZoneId', 'DelegationSetId'] as $clean) {
                    if ($c->hasParam($clean)) {
                        $c[$clean] = $this->cleanId($c[$clean]);
                    }
                }
                return $handler($c, $r);
            };
        };
    }

    private function cleanId($id)
    {
        static $toClean = ['/hostedzone/', '/change/', '/delegationset/'];

        return str_replace($toClean, '', $id);
    }
}


<?php
namespace Aws\Route53\Exception;

use Aws\Exception\AwsException;

/**
 * Represents an error interacting with the Amazon Route 53 service.
 */
class Route53Exception extends AwsException {}