text: /*
   * Copyright 2009-2017 Alibaba Cloud All rights reserved.
   * 
   * Licensed under the Apache License, Version 2.0 (the "License");
   * you may not use this file except in compliance with the License.
   * You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  #ifndef ALIBABACLOUD_AFS_AFSCLIENT_H_
  #define ALIBABACLOUD_AFS_AFSCLIENT_H_
  
  #include <future>
  #include <alibabacloud/core/AsyncCallerContext.h>
  #include <alibabacloud/core/EndpointProvider.h>
  #include <alibabacloud/core/RpcServiceClient.h>
  #include "AfsExport.h"
  #include "model/AnalyzeNvcRequest.h"
  #include "model/AnalyzeNvcResult.h"
  #include "model/AuthenticateSigRequest.h"
  #include "model/AuthenticateSigResult.h"
  #include "model/ConfigurationStyleRequest.h"
  #include "model/ConfigurationStyleResult.h"
  #include "model/CreateConfigurationRequest.h"
  #include "model/CreateConfigurationResult.h"
  #include "model/DescribeAfsConfigNameRequest.h"
  #include "model/DescribeAfsConfigNameResult.h"
  #include "model/DescribeAfsOneConfDataRequest.h"
  #include "model/DescribeAfsOneConfDataResult.h"
  #include "model/DescribeAfsTotalConfDataRequest.h"
  #include "model/DescribeAfsTotalConfDataResult.h"
  #include "model/DescribeAfsVerifySigDataRequest.h"
  #include "model/DescribeAfsVerifySigDataResult.h"
  #include "model/DescribeCaptchaDayRequest.h"
  #include "model/DescribeCaptchaDayResult.h"
  #include "model/DescribeCaptchaIpCityRequest.h"
  #include "model/DescribeCaptchaIpCityResult.h"
  #include "model/DescribeCaptchaMinRequest.h"
  #include "model/DescribeCaptchaMinResult.h"
  #include "model/DescribeCaptchaOrderRequest.h"
  #include "model/DescribeCaptchaOrderResult.h"
  #include "model/DescribeCaptchaRiskRequest.h"
  #include "model/DescribeCaptchaRiskResult.h"
  #include "model/DescribeConfigNameRequest.h"
  #include "model/DescribeConfigNameResult.h"
  #include "model/DescribeEarlyWarningRequest.h"
  #include "model/DescribeEarlyWarningResult.h"
  #include "model/DescribeOrderInfoRequest.h"
  #include "model/DescribeOrderInfoResult.h"
  #include "model/DescribePersonMachineListRequest.h"
  #include "model/DescribePersonMachineListResult.h"
  #include "model/SetEarlyWarningRequest.h"
  #include "model/SetEarlyWarningResult.h"
  #include "model/UpdateConfigNameRequest.h"
  #include "model/UpdateConfigNameResult.h"
  
  
  namespace AlibabaCloud
  {
  	namespace Afs
  	{
  		class ALIBABACLOUD_AFS_EXPORT AfsClient : public RpcServiceClient
  		{
  		public:
  			typedef Outcome<Error, Model::AnalyzeNvcResult> AnalyzeNvcOutcome;
  			typedef std::future<AnalyzeNvcOutcome> AnalyzeNvcOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::AnalyzeNvcRequest&, const AnalyzeNvcOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> AnalyzeNvcAsyncHandler;
  			typedef Outcome<Error, Model::AuthenticateSigResult> AuthenticateSigOutcome;
  			typedef std::future<AuthenticateSigOutcome> AuthenticateSigOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::AuthenticateSigRequest&, const AuthenticateSigOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> AuthenticateSigAsyncHandler;
  			typedef Outcome<Error, Model::ConfigurationStyleResult> ConfigurationStyleOutcome;
  			typedef std::future<ConfigurationStyleOutcome> ConfigurationStyleOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::ConfigurationStyleRequest&, const ConfigurationStyleOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> ConfigurationStyleAsyncHandler;
  			typedef Outcome<Error, Model::CreateConfigurationResult> CreateConfigurationOutcome;
  			typedef std::future<CreateConfigurationOutcome> CreateConfigurationOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::CreateConfigurationRequest&, const CreateConfigurationOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> CreateConfigurationAsyncHandler;
  			typedef Outcome<Error, Model::DescribeAfsConfigNameResult> DescribeAfsConfigNameOutcome;
  			typedef std::future<DescribeAfsConfigNameOutcome> DescribeAfsConfigNameOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeAfsConfigNameRequest&, const DescribeAfsConfigNameOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeAfsConfigNameAsyncHandler;
  			typedef Outcome<Error, Model::DescribeAfsOneConfDataResult> DescribeAfsOneConfDataOutcome;
  			typedef std::future<DescribeAfsOneConfDataOutcome> DescribeAfsOneConfDataOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeAfsOneConfDataRequest&, const DescribeAfsOneConfDataOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeAfsOneConfDataAsyncHandler;
  			typedef Outcome<Error, Model::DescribeAfsTotalConfDataResult> DescribeAfsTotalConfDataOutcome;
  			typedef std::future<DescribeAfsTotalConfDataOutcome> DescribeAfsTotalConfDataOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeAfsTotalConfDataRequest&, const DescribeAfsTotalConfDataOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeAfsTotalConfDataAsyncHandler;
  			typedef Outcome<Error, Model::DescribeAfsVerifySigDataResult> DescribeAfsVerifySigDataOutcome;
  			typedef std::future<DescribeAfsVerifySigDataOutcome> DescribeAfsVerifySigDataOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeAfsVerifySigDataRequest&, const DescribeAfsVerifySigDataOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeAfsVerifySigDataAsyncHandler;
  			typedef Outcome<Error, Model::DescribeCaptchaDayResult> DescribeCaptchaDayOutcome;
  			typedef std::future<DescribeCaptchaDayOutcome> DescribeCaptchaDayOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeCaptchaDayRequest&, const DescribeCaptchaDayOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeCaptchaDayAsyncHandler;
  			typedef Outcome<Error, Model::DescribeCaptchaIpCityResult> DescribeCaptchaIpCityOutcome;
  			typedef std::future<DescribeCaptchaIpCityOutcome> DescribeCaptchaIpCityOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeCaptchaIpCityRequest&, const DescribeCaptchaIpCityOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeCaptchaIpCityAsyncHandler;
  			typedef Outcome<Error, Model::DescribeCaptchaMinResult> DescribeCaptchaMinOutcome;
  			typedef std::future<DescribeCaptchaMinOutcome> DescribeCaptchaMinOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeCaptchaMinRequest&, const DescribeCaptchaMinOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeCaptchaMinAsyncHandler;
  			typedef Outcome<Error, Model::DescribeCaptchaOrderResult> DescribeCaptchaOrderOutcome;
  			typedef std::future<DescribeCaptchaOrderOutcome> DescribeCaptchaOrderOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeCaptchaOrderRequest&, const DescribeCaptchaOrderOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeCaptchaOrderAsyncHandler;
  			typedef Outcome<Error, Model::DescribeCaptchaRiskResult> DescribeCaptchaRiskOutcome;
  			typedef std::future<DescribeCaptchaRiskOutcome> DescribeCaptchaRiskOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeCaptchaRiskRequest&, const DescribeCaptchaRiskOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeCaptchaRiskAsyncHandler;
  			typedef Outcome<Error, Model::DescribeConfigNameResult> DescribeConfigNameOutcome;
  			typedef std::future<DescribeConfigNameOutcome> DescribeConfigNameOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeConfigNameRequest&, const DescribeConfigNameOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeConfigNameAsyncHandler;
  			typedef Outcome<Error, Model::DescribeEarlyWarningResult> DescribeEarlyWarningOutcome;
  			typedef std::future<DescribeEarlyWarningOutcome> DescribeEarlyWarningOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeEarlyWarningRequest&, const DescribeEarlyWarningOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeEarlyWarningAsyncHandler;
  			typedef Outcome<Error, Model::DescribeOrderInfoResult> DescribeOrderInfoOutcome;
  			typedef std::future<DescribeOrderInfoOutcome> DescribeOrderInfoOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribeOrderInfoRequest&, const DescribeOrderInfoOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribeOrderInfoAsyncHandler;
  			typedef Outcome<Error, Model::DescribePersonMachineListResult> DescribePersonMachineListOutcome;
  			typedef std::future<DescribePersonMachineListOutcome> DescribePersonMachineListOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::DescribePersonMachineListRequest&, const DescribePersonMachineListOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> DescribePersonMachineListAsyncHandler;
  			typedef Outcome<Error, Model::SetEarlyWarningResult> SetEarlyWarningOutcome;
  			typedef std::future<SetEarlyWarningOutcome> SetEarlyWarningOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::SetEarlyWarningRequest&, const SetEarlyWarningOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> SetEarlyWarningAsyncHandler;
  			typedef Outcome<Error, Model::UpdateConfigNameResult> UpdateConfigNameOutcome;
  			typedef std::future<UpdateConfigNameOutcome> UpdateConfigNameOutcomeCallable;
  			typedef std::function<void(const AfsClient*, const Model::UpdateConfigNameRequest&, const UpdateConfigNameOutcome&, const std::shared_ptr<const AsyncCallerContext>&)> UpdateConfigNameAsyncHandler;
  
  			AfsClient(const Credentials &credentials, const ClientConfiguration &configuration);
  			AfsClient(const std::shared_ptr<CredentialsProvider> &credentialsProvider, const ClientConfiguration &configuration);
  			AfsClient(const std::string &accessKeyId, const std::string &accessKeySecret, const ClientConfiguration &configuration);
  			~AfsClient();
  			AnalyzeNvcOutcome analyzeNvc(const Model::AnalyzeNvcRequest &request)const;
  			void analyzeNvcAsync(const Model::AnalyzeNvcRequest& request, const AnalyzeNvcAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			AnalyzeNvcOutcomeCallable analyzeNvcCallable(const Model::AnalyzeNvcRequest& request) const;
  			AuthenticateSigOutcome authenticateSig(const Model::AuthenticateSigRequest &request)const;
  			void authenticateSigAsync(const Model::AuthenticateSigRequest& request, const AuthenticateSigAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			AuthenticateSigOutcomeCallable authenticateSigCallable(const Model::AuthenticateSigRequest& request) const;
  			ConfigurationStyleOutcome configurationStyle(const Model::ConfigurationStyleRequest &request)const;
  			void configurationStyleAsync(const Model::ConfigurationStyleRequest& request, const ConfigurationStyleAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			ConfigurationStyleOutcomeCallable configurationStyleCallable(const Model::ConfigurationStyleRequest& request) const;
  			CreateConfigurationOutcome createConfiguration(const Model::CreateConfigurationRequest &request)const;
  			void createConfigurationAsync(const Model::CreateConfigurationRequest& request, const CreateConfigurationAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			CreateConfigurationOutcomeCallable createConfigurationCallable(const Model::CreateConfigurationRequest& request) const;
  			DescribeAfsConfigNameOutcome describeAfsConfigName(const Model::DescribeAfsConfigNameRequest &request)const;
  			void describeAfsConfigNameAsync(const Model::DescribeAfsConfigNameRequest& request, const DescribeAfsConfigNameAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeAfsConfigNameOutcomeCallable describeAfsConfigNameCallable(const Model::DescribeAfsConfigNameRequest& request) const;
  			DescribeAfsOneConfDataOutcome describeAfsOneConfData(const Model::DescribeAfsOneConfDataRequest &request)const;
  			void describeAfsOneConfDataAsync(const Model::DescribeAfsOneConfDataRequest& request, const DescribeAfsOneConfDataAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeAfsOneConfDataOutcomeCallable describeAfsOneConfDataCallable(const Model::DescribeAfsOneConfDataRequest& request) const;
  			DescribeAfsTotalConfDataOutcome describeAfsTotalConfData(const Model::DescribeAfsTotalConfDataRequest &request)const;
  			void describeAfsTotalConfDataAsync(const Model::DescribeAfsTotalConfDataRequest& request, const DescribeAfsTotalConfDataAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeAfsTotalConfDataOutcomeCallable describeAfsTotalConfDataCallable(const Model::DescribeAfsTotalConfDataRequest& request) const;
  			DescribeAfsVerifySigDataOutcome describeAfsVerifySigData(const Model::DescribeAfsVerifySigDataRequest &request)const;
  			void describeAfsVerifySigDataAsync(const Model::DescribeAfsVerifySigDataRequest& request, const DescribeAfsVerifySigDataAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeAfsVerifySigDataOutcomeCallable describeAfsVerifySigDataCallable(const Model::DescribeAfsVerifySigDataRequest& request) const;
  			DescribeCaptchaDayOutcome describeCaptchaDay(const Model::DescribeCaptchaDayRequest &request)const;
  			void describeCaptchaDayAsync(const Model::DescribeCaptchaDayRequest& request, const DescribeCaptchaDayAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeCaptchaDayOutcomeCallable describeCaptchaDayCallable(const Model::DescribeCaptchaDayRequest& request) const;
  			DescribeCaptchaIpCityOutcome describeCaptchaIpCity(const Model::DescribeCaptchaIpCityRequest &request)const;
  			void describeCaptchaIpCityAsync(const Model::DescribeCaptchaIpCityRequest& request, const DescribeCaptchaIpCityAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeCaptchaIpCityOutcomeCallable describeCaptchaIpCityCallable(const Model::DescribeCaptchaIpCityRequest& request) const;
  			DescribeCaptchaMinOutcome describeCaptchaMin(const Model::DescribeCaptchaMinRequest &request)const;
  			void describeCaptchaMinAsync(const Model::DescribeCaptchaMinRequest& request, const DescribeCaptchaMinAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeCaptchaMinOutcomeCallable describeCaptchaMinCallable(const Model::DescribeCaptchaMinRequest& request) const;
  			DescribeCaptchaOrderOutcome describeCaptchaOrder(const Model::DescribeCaptchaOrderRequest &request)const;
  			void describeCaptchaOrderAsync(const Model::DescribeCaptchaOrderRequest& request, const DescribeCaptchaOrderAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeCaptchaOrderOutcomeCallable describeCaptchaOrderCallable(const Model::DescribeCaptchaOrderRequest& request) const;
  			DescribeCaptchaRiskOutcome describeCaptchaRisk(const Model::DescribeCaptchaRiskRequest &request)const;
  			void describeCaptchaRiskAsync(const Model::DescribeCaptchaRiskRequest& request, const DescribeCaptchaRiskAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeCaptchaRiskOutcomeCallable describeCaptchaRiskCallable(const Model::DescribeCaptchaRiskRequest& request) const;
  			DescribeConfigNameOutcome describeConfigName(const Model::DescribeConfigNameRequest &request)const;
  			void describeConfigNameAsync(const Model::DescribeConfigNameRequest& request, const DescribeConfigNameAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeConfigNameOutcomeCallable describeConfigNameCallable(const Model::DescribeConfigNameRequest& request) const;
  			DescribeEarlyWarningOutcome describeEarlyWarning(const Model::DescribeEarlyWarningRequest &request)const;
  			void describeEarlyWarningAsync(const Model::DescribeEarlyWarningRequest& request, const DescribeEarlyWarningAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeEarlyWarningOutcomeCallable describeEarlyWarningCallable(const Model::DescribeEarlyWarningRequest& request) const;
  			DescribeOrderInfoOutcome describeOrderInfo(const Model::DescribeOrderInfoRequest &request)const;
  			void describeOrderInfoAsync(const Model::DescribeOrderInfoRequest& request, const DescribeOrderInfoAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribeOrderInfoOutcomeCallable describeOrderInfoCallable(const Model::DescribeOrderInfoRequest& request) const;
  			DescribePersonMachineListOutcome describePersonMachineList(const Model::DescribePersonMachineListRequest &request)const;
  			void describePersonMachineListAsync(const Model::DescribePersonMachineListRequest& request, const DescribePersonMachineListAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			DescribePersonMachineListOutcomeCallable describePersonMachineListCallable(const Model::DescribePersonMachineListRequest& request) const;
  			SetEarlyWarningOutcome setEarlyWarning(const Model::SetEarlyWarningRequest &request)const;
  			void setEarlyWarningAsync(const Model::SetEarlyWarningRequest& request, const SetEarlyWarningAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			SetEarlyWarningOutcomeCallable setEarlyWarningCallable(const Model::SetEarlyWarningRequest& request) const;
  			UpdateConfigNameOutcome updateConfigName(const Model::UpdateConfigNameRequest &request)const;
  			void updateConfigNameAsync(const Model::UpdateConfigNameRequest& request, const UpdateConfigNameAsyncHandler& handler, const std::shared_ptr<const AsyncCallerContext>& context = nullptr) const;
  			UpdateConfigNameOutcomeCallable updateConfigNameCallable(const Model::UpdateConfigNameRequest& request) const;
  	
  		private:
  			std::shared_ptr<EndpointProvider> endpointProvider_;
  		};
  	}
  }
  
  #endif // !ALIBABACLOUD_AFS_AFSCLIENT_H_
  