import 'package:dio/dio.dart';
import 'package:keyboard/base/base_response.dart';
import 'package:keyboard/data/api/request/character_add_request.dart';
import 'package:keyboard/data/api/request/character_custom_add_request.dart';
import 'package:keyboard/data/api/request/character_custom_delete_request.dart';
import 'package:keyboard/data/api/request/character_custom_generate_request.dart';
import 'package:keyboard/data/api/request/character_custom_page_request.dart';
import 'package:keyboard/data/api/request/character_custom_update_request.dart';
import 'package:keyboard/data/api/request/character_page_request.dart';
import 'package:keyboard/data/api/request/character_unlock_request.dart';
import 'package:keyboard/data/api/request/chat_prologue_request.dart';
import 'package:keyboard/data/api/request/chat_super_reply_request.dart';
import 'package:keyboard/data/api/request/chat_super_speak_request.dart';
import 'package:keyboard/data/api/request/complaint_submit_request.dart';
import 'package:keyboard/data/api/request/config_request.dart';
import 'package:keyboard/data/api/request/intimacy_analyze_request.dart';
import 'package:keyboard/data/api/request/intimacy_generate_character_request.dart';
import 'package:keyboard/data/api/request/intimacy_reply_analyze_request.dart';
import 'package:keyboard/data/api/request/intimacy_reply_chat_request.dart';
import 'package:keyboard/data/api/request/keyboard_character_list_request.dart';
import 'package:keyboard/data/api/request/keyboard_character_start_request.dart';
import 'package:keyboard/data/api/request/keyboard_character_update_request.dart';
import 'package:keyboard/data/api/request/keyboard_choose_request.dart';
import 'package:keyboard/data/api/request/keyboard_generate_request.dart';
import 'package:keyboard/data/api/request/keyboard_list_request.dart';
import 'package:keyboard/data/api/request/keyboard_meme_explain_request.dart';
import 'package:keyboard/data/api/request/keyboard_update_request.dart';
import 'package:keyboard/data/api/request/login_request.dart';
import 'package:keyboard/data/api/request/order_pay_request.dart';
import 'package:keyboard/data/api/request/order_status_request.dart';
import 'package:keyboard/data/api/request/send_code_request.dart';
import 'package:keyboard/data/api/request/user_info_setting_request.dart';
import 'package:keyboard/data/api/request/wechat_login_request.dart';
import 'package:keyboard/data/api/response/character_add_response.dart';
import 'package:keyboard/data/api/response/character_custom_config_response.dart';
import 'package:keyboard/data/api/response/character_custom_generate_response.dart';
import 'package:keyboard/data/api/response/character_custom_page_response.dart';
import 'package:keyboard/data/api/response/character_custom_update_response.dart';
import 'package:keyboard/data/api/response/character_group_response.dart';
import 'package:keyboard/data/api/response/character_page_response.dart';
import 'package:keyboard/data/api/response/character_unlock_response.dart';
import 'package:keyboard/data/api/response/chat_prologue_response.dart';
import 'package:keyboard/data/api/response/chat_super_reply_response.dart';
import 'package:keyboard/data/api/response/chat_super_speak_response.dart';
import 'package:keyboard/data/api/response/config_response.dart';
import 'package:keyboard/data/api/response/intimacy_analyze_chat_config_response.dart';
import 'package:keyboard/data/api/response/intimacy_analyze_config_response.dart';
import 'package:keyboard/data/api/response/intimacy_analyze_reply_config_response.dart';
import 'package:keyboard/data/api/response/intimacy_analyze_response.dart';
import 'package:keyboard/data/api/response/intimacy_chat_analyze_response.dart';
import 'package:keyboard/data/api/response/intimacy_reply_analyze_response.dart';
import 'package:keyboard/data/api/response/item_list_response.dart';
import 'package:keyboard/data/api/response/item_retention_response.dart';
import 'package:keyboard/data/api/response/keyboard_character_list_response.dart';
import 'package:keyboard/data/api/response/keyboard_generate_response.dart';
import 'package:keyboard/data/api/response/keyboard_home_info_response.dart'
    show KeyboardHomeInfoResponse;
import 'package:keyboard/data/api/response/keyboard_list_response.dart';
import 'package:keyboard/data/api/response/keyboard_love_index_response.dart';
import 'package:keyboard/data/api/response/keyboard_meme_explain_response.dart';
import 'package:keyboard/data/api/response/keyboard_prologue_list_response.dart';
import 'package:keyboard/data/api/response/login_response.dart';
import 'package:keyboard/data/api/response/member_new_user_response.dart';
import 'package:keyboard/data/api/response/new_user_get_character_response.dart';
import 'package:keyboard/data/api/response/order_pay_response.dart';
import 'package:keyboard/data/api/response/order_status_response.dart';
import 'package:keyboard/data/api/response/user_info_response.dart';
import 'package:keyboard/data/api/response/wechat_login_response.dart';
import 'package:keyboard/data/repository/config_repository.dart';
import 'package:retrofit/error_logger.dart';
import 'package:retrofit/http.dart';

import '../../base/app_base_request.dart';

part 'atmob_api.g.dart';

@RestApi()
abstract class AtmobApi {
  factory AtmobApi(Dio dio, {String baseUrl}) = _AtmobApi;

  // 获取手机验证码
  @POST("/central/open/v1/user/code")
  Future<BaseResponse> loginSendCode(@Body() SendCodeRequest request);

  // 登录
  @POST("/central/open/v1/user/login")
  Future<BaseResponse<LoginResponse>> loginUserLogin(
    @Body() LoginRequest request,
  );

  // 微信登录
  @POST("/central/open/v1/user/wechat/login")
  Future<BaseResponse<WechatLoginResponse>> loginUserWechatLogin(
    @Body() WechatLoginRequest request,
  );

  // 注销账号
  @POST("/central/open/v1/user/deprecate")
  Future<BaseResponse> deprecate(@Body() AppBaseRequest request);

  // 意见反馈
  @POST("/project/keyboard/v1/complaint/submit")
  Future<BaseResponse> complaintSubmit(@Body() ComplaintSubmitRequest request);

  // 获取用户信息
  @POST("/project/keyboard/v1/user/info")
  Future<BaseResponse<UserInfoResponse>> getUserInfo(
    @Body() AppBaseRequest request,
  );

  // 设置用户信息
  @POST("/project/keyboard/v1/user/info/setting")
  Future<BaseResponse> setUserInfo(@Body() UserInfoSettingRequest request);

  //  获取新人流程人设列表
  @POST("/project/keyboard/v1/character/newUser/getCharacter")
  Future<BaseResponse<NewUserGetCharacterResponse>> getNewUserCharactersList(
    @Body() AppBaseRequest request,
  );

  // 获取人设主题
  @POST("/project/keyboard/v1/character/group")
  Future<BaseResponse<CharacterGroupResponse>> getCharactersGroup(
    @Body() AppBaseRequest request,
  );

  // 分页查询系统人设列表
  @POST("/project/keyboard/v1/character/page")
  Future<BaseResponse<CharacterPageResponse>> getCharactersPage(
    @Body() CharacterPageRequest request,
  );

  //  解锁系统人设
  @POST("/project/keyboard/v1/character/unlock")
  Future<BaseResponse<CharacterUnlockResponse>> unlockCharacter(
    @Body() CharacterUnlockRequest request,
  );

  // 添加系统人设
  @POST("/project/keyboard/v1/character/add")
  Future<BaseResponse<CharacterAddResponse>> addCharacter(
    @Body() CharacterAddRequest request,
  );

  // 获取定制人设配置
  @POST("/project/keyboard/v1/character/custom/config")
  Future<BaseResponse<CharacterCustomConfigResponse>> getCharacterCustomConfig(
    @Body() AppBaseRequest request,
  );

  // 生成定制人设
  @POST("/project/keyboard/v1/character/custom/generate")
  Future<BaseResponse<CharacterCustomGenerateResponse>> generateCharacterCustom(
    @Body() CharacterCustomGenerateRequest request,
  );

  //更新定制人设信息
  @POST("/project/keyboard/v1/character/custom/update")
  Future<BaseResponse<CharacterCustomUpdateResponse>> updateCustomCharacter(
    @Body() CharacterCustomUpdateRequest request,
  );

  // 添加定制人设到键盘
  @POST("/project/keyboard/v1/character/custom/add")
  Future<BaseResponse<CharacterCustomUpdateResponse>> addCustomCharacter(
    @Body() CharacterCustomAddRequest request,
  );

  // 分页查询定制人设列表
  @POST("/project/keyboard/v1/character/custom/page")
  Future<BaseResponse<CharacterCustomPageResponse>> getCustomCharactersPage(
    @Body() CharacterCustomPageRequest request,
  );

  // 删除定制人设
  @POST("/project/keyboard/v1/character/custom/delete")
  Future<BaseResponse> deleteCustomCharacter(
    @Body() CharacterCustomDeleteRequest request,
  );

  // 获取首页信息
  @POST("/project/keyboard/v1/keyboard/home/info")
  Future<BaseResponse<KeyboardHomeInfoResponse>> getKeyboardHomeInfo(
    @Body() AppBaseRequest request,
  );

  // 获取当天恋爱指数
  @POST("/project/keyboard/v1/keyboard/love/index")
  Future<BaseResponse<KeyboardLoveIndexResponse>> getKeyboardLoveIndex(
    @Body() AppBaseRequest request,
  );

  // 获取键盘人设列表
  @POST("/project/keyboard/v1/character/list")
  Future<BaseResponse<KeyboardCharacterListResponse>> getKeyboardCharacterList(
    @Body() KeyboardCharacterListRequest request,
  );

  //更新键盘人设
  @POST("/project/keyboard/v1/character/keyboard/update")
  Future<BaseResponse> keyboardCharacterUpdate(
    @Body() KeyboardCharacterUpdateRequest request,
  );

  @POST("/project/keyboard/v1/character/keyboard/start")
  Future<BaseResponse> keyboardCharacterStart(
    @Body() KeyboardCharacterStartRequest request,
  );

  // 生成键盘
  @POST("/project/keyboard/v1/keyboard/generate")
  Future<BaseResponse<KeyboardGenerateResponse>> keyboardGenerate(
    @Body() KeyboardGenerateRequest request,
  );

  // 获取键盘列表
  @POST("/project/keyboard/v1/keyboard/list")
  Future<BaseResponse<KeyboardListResponse>> getKeyboardList(
    @Body() KeyboardListRequest request,
  );

  //  更新键盘信息
  @POST("/project/keyboard/v1/keyboard/update")
  Future<BaseResponse> keyboardUpdate(@Body() KeyboardUpdateRequest request);

  // 选择键盘
  @POST("/project/keyboard/v1/keyboard/choose")
  Future<BaseResponse> keyboardChoose(@Body() KeyboardChooseRequest request);

  // 获取开场白列表
  @POST("/project/keyboard/v1/keyboard/prologue/list")
  Future<BaseResponse<KeyboardPrologueListResponse>> getPrologueList(
    @Body() AppBaseRequest request,
  );

  //获取配置信息
  @POST("/project/keyboard/v1/confs")
  Future<BaseResponse<ConfigResponse>> confs(@Body() ConfigRequest request);

  //   商品列表
  @POST("/project/keyboard/v1/item/list")
  Future<BaseResponse<ItemListResponse>> getGoodsList(
    @Body() AppBaseRequest request,
  );

  //下拉发起支付
  @POST("/project/keyboard/v1/order/pay")
  Future<BaseResponse<OrderPayResponse>> orderPay(
    @Body() OrderPayRequest request,
  );

  // 查询支付结果
  @POST("/project/keyboard/v1/order/status")
  Future<BaseResponse<OrderStatusResponse>> orderStatus(
    @Body() OrderStatusRequest request,
  );

  //获取挽留弹框商品
  @POST("/project/keyboard/v1/item/detainment")
  Future<BaseResponse<ItemRetentionResponse>> getItemRetention(
    @Body() AppBaseRequest request,
  );

  // 超会回
  @POST("/project/keyboard/v1/chat/superReply")
  Future<BaseResponse<ChatSuperReplyResponse>> chatSuperReply(
    @Body() ChatSuperReplyRequest request,
  );

  //超会说
  @POST("/project/keyboard/v1/chat/superSpeak")
  Future<BaseResponse<ChatSuperSpeakResponse>> chatSuperSpeak(
    @Body() ChatSuperSpeakRequest request,
  );

  //   开场白
  @POST("/project/keyboard/v1/chat/prologue")
  Future<BaseResponse<ChatPrologueResponse>> chatPrologue(
    @Body() ChatPrologueRequest request,
  );

  /// 获取亲密度配置
  @POST("/project/keyboard/v1/intimacy/analyze/config")
  Future<BaseResponse<IntimacyAnalyzeConfigResponse>> getIntimacyAnalyzeConfig(
    @Body() AppBaseRequest request,
  );

  /// 分析亲密度
  @POST("/project/keyboard/v1/intimacy/analyze")
  Future<BaseResponse<IntimacyAnalyzeResponse>> getIntimacyAnalyze(
    @Body() IntimacyAnalyzeRequest request,
  );

  /// 生成亲密度人设
  @POST("/project/keyboard/v1/intimacy/character/generate")
  Future<BaseResponse> intimacyCharacterGenerate(
    @Body() IntimacyGenerateCharacterRequest request,
  );

  /// 获取对话分析配置
  @POST("/project/keyboard/v1/intimacy/chat/config")
  Future<BaseResponse<IntimacyAnalyzeChatConfigResponse>>
  getIntimacyAnalyzeChatConfig(@Body() AppBaseRequest request);

  /// 获取识图回复配置
  @POST("/project/keyboard/v1/intimacy/reply/config")
  Future<BaseResponse<IntimacyAnalyzeReplyConfigResponse>>
  getIntimacyAnalyzeReplyConfig(@Body() AppBaseRequest request);

  /// 识图回复
  @POST("/project/keyboard/v1/intimacy/reply/analyze")
  Future<BaseResponse<IntimacyReplyAnalyzeResponse>> intimacyReplyAnalyze(
    @Body() IntimacyReplyAnalyzeRequest request,
  );

  // 获取星座梗语与解读
  @POST("/project/keyboard/v1/keyboard/memeExplain")
  Future<BaseResponse<KeyboardMemeExplainResponse>> getKeyboardMemeExplain(
    @Body() KeyboardMemeExplainRequest request,
  );

  //获取新人流程会员页信息
  @POST("/project/keyboard/v1/member/newUser")
  Future<BaseResponse<MemberNewUserResponse>> getMemberUserResponse(
    @Body() AppBaseRequest request,
  );
}
