<?php
/**
 * Rds
 *
 * @category Jdcloud
 * @package  Jdcloud\Rds
 * @author   Jdcloud <jdcloud-api@jd.com>
 * @license  Apache-2.0 http://www.apache.org/licenses/LICENSE-2.0
 * @link     https://www.jdcloud.com/help/faq
 */

namespace Jdcloud\Rds;

use Jdcloud\JdCloudClient;
use Jdcloud\Api\Service;
use Jdcloud\Api\DocModel;
use Jdcloud\Api\ApiProvider;
use Jdcloud\PresignUrlMiddleware;

/**
 * Client used to interact with rds.
 *
 * @method \Jdcloud\Result describeAccounts(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountsAsync(array $args = [])
 * @method \Jdcloud\Result createAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccountAsync(array $args = [])
 * @method \Jdcloud\Result describeAccountPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountPrivilegeAsync(array $args = [])
 * @method \Jdcloud\Result deleteAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAccountAsync(array $args = [])
 * @method \Jdcloud\Result grantPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise grantPrivilegeAsync(array $args = [])
 * @method \Jdcloud\Result revokePrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise revokePrivilegeAsync(array $args = [])
 * @method \Jdcloud\Result resetPassword(array $args = [])
 * @method \GuzzleHttp\Promise\Promise resetPasswordAsync(array $args = [])
 * @method \Jdcloud\Result createSuperAccount(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createSuperAccountAsync(array $args = [])
 * @method \Jdcloud\Result grantAccountPrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise grantAccountPrivilegeAsync(array $args = [])
 * @method \Jdcloud\Result describeAccountsForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAccountsForOpsAsync(array $args = [])
 * @method \Jdcloud\Result createAccountForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAccountForOpsAsync(array $args = [])
 * @method \Jdcloud\Result modifyAccountForOps(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAccountForOpsAsync(array $args = [])
 * @method \Jdcloud\Result describeAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditAsync(array $args = [])
 * @method \Jdcloud\Result createAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createAuditAsync(array $args = [])
 * @method \Jdcloud\Result deleteAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteAuditAsync(array $args = [])
 * @method \Jdcloud\Result describeAuditOptions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditOptionsAsync(array $args = [])
 * @method \Jdcloud\Result modifyAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyAuditAsync(array $args = [])
 * @method \Jdcloud\Result describeAuditFiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditFilesAsync(array $args = [])
 * @method \Jdcloud\Result describeAuditDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditDownloadURLAsync(array $args = [])
 * @method \Jdcloud\Result enableAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableAuditAsync(array $args = [])
 * @method \Jdcloud\Result disableAudit(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableAuditAsync(array $args = [])
 * @method \Jdcloud\Result describeAuditResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAuditResultAsync(array $args = [])
 * @method \Jdcloud\Result describeAzs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeAzsAsync(array $args = [])
 * @method \Jdcloud\Result describeBackups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupsAsync(array $args = [])
 * @method \Jdcloud\Result createBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createBackupAsync(array $args = [])
 * @method \Jdcloud\Result deleteBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteBackupAsync(array $args = [])
 * @method \Jdcloud\Result describeBackupDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupDownloadURLAsync(array $args = [])
 * @method \Jdcloud\Result describeBackupSynchronicities(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupSynchronicitiesAsync(array $args = [])
 * @method \Jdcloud\Result createBackupSynchronicity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createBackupSynchronicityAsync(array $args = [])
 * @method \Jdcloud\Result deleteBackupSynchronicity(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteBackupSynchronicityAsync(array $args = [])
 * @method \Jdcloud\Result createInstanceByTimeInCrossRegion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceByTimeInCrossRegionAsync(array $args = [])
 * @method \Jdcloud\Result describeBinlogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBinlogsAsync(array $args = [])
 * @method \Jdcloud\Result describeBinlogDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBinlogDownloadURLAsync(array $args = [])
 * @method \Jdcloud\Result clearBinlogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise clearBinlogsAsync(array $args = [])
 * @method \Jdcloud\Result describeBinlogDownloadInternalURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBinlogDownloadInternalURLAsync(array $args = [])
 * @method \Jdcloud\Result alterTableWithOnlineDDL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise alterTableWithOnlineDDLAsync(array $args = [])
 * @method \Jdcloud\Result describePrivilege(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describePrivilegeAsync(array $args = [])
 * @method \Jdcloud\Result describeDatabases(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeDatabasesAsync(array $args = [])
 * @method \Jdcloud\Result createDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createDatabaseAsync(array $args = [])
 * @method \Jdcloud\Result deleteDatabase(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteDatabaseAsync(array $args = [])
 * @method \Jdcloud\Result restoreDatabaseFromBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromBackupAsync(array $args = [])
 * @method \Jdcloud\Result restoreDatabaseFromFile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromFileAsync(array $args = [])
 * @method \Jdcloud\Result restoreDatabaseFromOSS(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreDatabaseFromOSSAsync(array $args = [])
 * @method \Jdcloud\Result modifyDatabaseComment(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyDatabaseCommentAsync(array $args = [])
 * @method \Jdcloud\Result describeErrorLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeErrorLogsAsync(array $args = [])
 * @method \Jdcloud\Result describeImportFiles(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeImportFilesAsync(array $args = [])
 * @method \Jdcloud\Result getUploadKey(array $args = [])
 * @method \GuzzleHttp\Promise\Promise getUploadKeyAsync(array $args = [])
 * @method \Jdcloud\Result setImportFileShared(array $args = [])
 * @method \GuzzleHttp\Promise\Promise setImportFileSharedAsync(array $args = [])
 * @method \Jdcloud\Result deleteImportFile(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteImportFileAsync(array $args = [])
 * @method \Jdcloud\Result describeInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstancesAsync(array $args = [])
 * @method \Jdcloud\Result createInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceAsync(array $args = [])
 * @method \Jdcloud\Result describeInstanceAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceAttributesAsync(array $args = [])
 * @method \Jdcloud\Result deleteInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteInstanceAsync(array $args = [])
 * @method \Jdcloud\Result describeBackupPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupPolicyAsync(array $args = [])
 * @method \Jdcloud\Result modifyBackupPolicy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyBackupPolicyAsync(array $args = [])
 * @method \Jdcloud\Result enableEnhancedBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableEnhancedBackupAsync(array $args = [])
 * @method \Jdcloud\Result describeBackupSpace(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupSpaceAsync(array $args = [])
 * @method \Jdcloud\Result describeBackupCharge(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeBackupChargeAsync(array $args = [])
 * @method \Jdcloud\Result modifyInstanceName(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceNameAsync(array $args = [])
 * @method \Jdcloud\Result failoverInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise failoverInstanceAsync(array $args = [])
 * @method \Jdcloud\Result rebootInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise rebootInstanceAsync(array $args = [])
 * @method \Jdcloud\Result enableInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableInternetAccessAsync(array $args = [])
 * @method \Jdcloud\Result disableInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableInternetAccessAsync(array $args = [])
 * @method \Jdcloud\Result restoreInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreInstanceAsync(array $args = [])
 * @method \Jdcloud\Result createInstanceFromBackup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceFromBackupAsync(array $args = [])
 * @method \Jdcloud\Result modifyInstanceSpec(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceSpecAsync(array $args = [])
 * @method \Jdcloud\Result createInstanceByTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createInstanceByTimeAsync(array $args = [])
 * @method \Jdcloud\Result createROInstance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createROInstanceAsync(array $args = [])
 * @method \Jdcloud\Result modifyConnectionMode(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyConnectionModeAsync(array $args = [])
 * @method \Jdcloud\Result describeLatestRestoreTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLatestRestoreTimeAsync(array $args = [])
 * @method \Jdcloud\Result modifyParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupAsync(array $args = [])
 * @method \Jdcloud\Result exchangeInstanceDns(array $args = [])
 * @method \GuzzleHttp\Promise\Promise exchangeInstanceDnsAsync(array $args = [])
 * @method \Jdcloud\Result modifyInstanceAz(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceAzAsync(array $args = [])
 * @method \Jdcloud\Result describeSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSSLAsync(array $args = [])
 * @method \Jdcloud\Result enableSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableSSLAsync(array $args = [])
 * @method \Jdcloud\Result disableSSL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableSSLAsync(array $args = [])
 * @method \Jdcloud\Result restoreInstanceByTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise restoreInstanceByTimeAsync(array $args = [])
 * @method \Jdcloud\Result modifyActiveDirectory(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyActiveDirectoryAsync(array $args = [])
 * @method \Jdcloud\Result modifyInstanceMaintainTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyInstanceMaintainTimeAsync(array $args = [])
 * @method \Jdcloud\Result describeInstanceMaintainTime(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInstanceMaintainTimeAsync(array $args = [])
 * @method \Jdcloud\Result switchForModifyingInstanceSpec(array $args = [])
 * @method \GuzzleHttp\Promise\Promise switchForModifyingInstanceSpecAsync(array $args = [])
 * @method \Jdcloud\Result describeUpgradeVersions(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUpgradeVersionsAsync(array $args = [])
 * @method \Jdcloud\Result describeUpgradePlan(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeUpgradePlanAsync(array $args = [])
 * @method \Jdcloud\Result upgradeEngineVersion(array $args = [])
 * @method \GuzzleHttp\Promise\Promise upgradeEngineVersionAsync(array $args = [])
 * @method \Jdcloud\Result enableIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableInterceptAsync(array $args = [])
 * @method \Jdcloud\Result disableIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableInterceptAsync(array $args = [])
 * @method \Jdcloud\Result describeInterceptResult(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInterceptResultAsync(array $args = [])
 * @method \Jdcloud\Result describeIntercept(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeInterceptAsync(array $args = [])
 * @method \Jdcloud\Result describeLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLogsAsync(array $args = [])
 * @method \Jdcloud\Result updateLogDownloadURLInternal(array $args = [])
 * @method \GuzzleHttp\Promise\Promise updateLogDownloadURLInternalAsync(array $args = [])
 * @method \Jdcloud\Result describeLogDownloadURL(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeLogDownloadURLAsync(array $args = [])
 * @method \Jdcloud\Result describeParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParametersAsync(array $args = [])
 * @method \Jdcloud\Result modifyParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParametersAsync(array $args = [])
 * @method \Jdcloud\Result deleteParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteParameterGroupAsync(array $args = [])
 * @method \Jdcloud\Result modifyParameterGroupAttribute(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupAttributeAsync(array $args = [])
 * @method \Jdcloud\Result describeParameterGroups(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupsAsync(array $args = [])
 * @method \Jdcloud\Result createParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createParameterGroupAsync(array $args = [])
 * @method \Jdcloud\Result describeParameterGroupParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupParametersAsync(array $args = [])
 * @method \Jdcloud\Result modifyParameterGroupParameters(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyParameterGroupParametersAsync(array $args = [])
 * @method \Jdcloud\Result describeParameterModifyRecords(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterModifyRecordsAsync(array $args = [])
 * @method \Jdcloud\Result copyParameterGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise copyParameterGroupAsync(array $args = [])
 * @method \Jdcloud\Result describeParameterGroupAttachedInstances(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeParameterGroupAttachedInstancesAsync(array $args = [])
 * @method \Jdcloud\Result describeIndexPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeIndexPerformanceAsync(array $args = [])
 * @method \Jdcloud\Result describeQueryPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeQueryPerformanceAsync(array $args = [])
 * @method \Jdcloud\Result describeSlowLogAttributes(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSlowLogAttributesAsync(array $args = [])
 * @method \Jdcloud\Result describeSlowLogs(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeSlowLogsAsync(array $args = [])
 * @method \Jdcloud\Result describeActiveQueryPerformance(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeActiveQueryPerformanceAsync(array $args = [])
 * @method \Jdcloud\Result describeErrorLog(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeErrorLogAsync(array $args = [])
 * @method \Jdcloud\Result describeReadWriteProxies(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReadWriteProxiesAsync(array $args = [])
 * @method \Jdcloud\Result createReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createReadWriteProxyAsync(array $args = [])
 * @method \Jdcloud\Result describeReadWriteProxyAttribute(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeReadWriteProxyAttributeAsync(array $args = [])
 * @method \Jdcloud\Result deleteReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteReadWriteProxyAsync(array $args = [])
 * @method \Jdcloud\Result enableReadWriteProxyInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableReadWriteProxyInternetAccessAsync(array $args = [])
 * @method \Jdcloud\Result disableReadWriteProxyInternetAccess(array $args = [])
 * @method \GuzzleHttp\Promise\Promise disableReadWriteProxyInternetAccessAsync(array $args = [])
 * @method \Jdcloud\Result modifyReadWriteProxy(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyReadWriteProxyAsync(array $args = [])
 * @method \Jdcloud\Result describeTables(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTablesAsync(array $args = [])
 * @method \Jdcloud\Result describeTde(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeTdeAsync(array $args = [])
 * @method \Jdcloud\Result enableTde(array $args = [])
 * @method \GuzzleHttp\Promise\Promise enableTdeAsync(array $args = [])
 * @method \Jdcloud\Result describeWhiteList(array $args = [])
 * @method \GuzzleHttp\Promise\Promise describeWhiteListAsync(array $args = [])
 * @method \Jdcloud\Result createWhiteListGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise createWhiteListGroupAsync(array $args = [])
 * @method \Jdcloud\Result modifyWhiteList(array $args = [])
 * @method \GuzzleHttp\Promise\Promise modifyWhiteListAsync(array $args = [])
 * @method \Jdcloud\Result deleteWhiteListGroup(array $args = [])
 * @method \GuzzleHttp\Promise\Promise deleteWhiteListGroupAsync(array $args = [])
 */
class RdsClient extends JdCloudClient
{
    public function __construct(array $args)
    {
        $args['with_resolved'] = function (array $args) {
            $this->getHandlerList()->appendInit(
                PresignUrlMiddleware::wrap(
                    $this,
                    $args['endpoint_provider'],
                    [
                        'operations' => [
                        ],
                        'service' => 'rds',
                        'presign_param' => 'PresignedUrl',
                    ]
                ),
                'rds'
            );
        };

        parent::__construct($args);
    }
}