import { request } from "@/common";

export const Apis = {
  Activity: {
    Activities: {
      List(data?: ApiTypes.Activity.Activities.List): Promise<MyResponseType> {
        return request('customer/activity/activities/list', { data });
      },
      Show(data: ApiTypes.Activity.Activities.Show): Promise<MyResponseType> {
        return request('customer/activity/activities/show', { data });
      },
    },
    ActivityEnrolls: {
      List(data?: ApiTypes.Activity.ActivityEnrolls.List): Promise<MyResponseType> {
        return request('customer/activity/activity_enrolls/list', { data });
      },
      Store(data: ApiTypes.Activity.ActivityEnrolls.Store): Promise<MyResponseType> {
        return request('customer/activity/activity_enrolls/store', { data });
      },
      GetCustomerEnroll(data: ApiTypes.Activity.ActivityEnrolls.GetCustomerEnroll): Promise<MyResponseType> {
        return request('customer/activity/activity_enrolls/get_customer_enroll', { data });
      },
      Cancelled(data: ApiTypes.Activity.ActivityEnrolls.Cancelled): Promise<MyResponseType> {
        return request('customer/activity/activity_enrolls/cancelled', { data });
      },
      Show(data: ApiTypes.Activity.ActivityEnrolls.Show): Promise<MyResponseType> {
        return request('customer/activity/activity_enrolls/show', { data });
      },
    },
  },
  Archive: {
    HouseOccupants: {
      List(data?: ApiTypes.Archive.HouseOccupants.List): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/list', { data });
      },
      GetCustomerHouseIsExist(): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/get_customer_house_is_exist', {});
      },
      UpdateSelectedHouse(data: ApiTypes.Archive.HouseOccupants.UpdateSelectedHouse): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/update_selected_house', { data });
      },
      GetHouseOccupants(data: ApiTypes.Archive.HouseOccupants.GetHouseOccupants): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/get_house_occupants', { data });
      },
      GetOwner(data: ApiTypes.Archive.HouseOccupants.GetOwner): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/get_owner', { data });
      },
      Show(data: ApiTypes.Archive.HouseOccupants.Show): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/show', { data });
      },
      DeleteOccupant(data: ApiTypes.Archive.HouseOccupants.DeleteOccupant): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/delete_occupant', { data });
      },
      Unbind(data: ApiTypes.Archive.HouseOccupants.Unbind): Promise<MyResponseType> {
        return request('customer/archive/house_occupants/unbind', { data });
      },
    },
    HouseRegisters: {
      List(data?: ApiTypes.Archive.HouseRegisters.List): Promise<MyResponseType> {
        return request('customer/archive/house_registers/list', { data });
      },
      Store(data: ApiTypes.Archive.HouseRegisters.Store): Promise<MyResponseType> {
        return request('customer/archive/house_registers/store', { data });
      },
      Update(data: ApiTypes.Archive.HouseRegisters.Update): Promise<MyResponseType> {
        return request('customer/archive/house_registers/update', { data });
      },
      Show(data: ApiTypes.Archive.HouseRegisters.Show): Promise<MyResponseType> {
        return request('customer/archive/house_registers/show', { data });
      },
      OwnerAuditList(data?: ApiTypes.Archive.HouseRegisters.OwnerAuditList): Promise<MyResponseType> {
        return request('customer/archive/house_registers/owner_audit_list', { data });
      },
      GetOwnerIsAudit(): Promise<MyResponseType> {
        return request('customer/archive/house_registers/get_owner_is_audit', {});
      },
      Audit(data: ApiTypes.Archive.HouseRegisters.Audit): Promise<MyResponseType> {
        return request('customer/archive/house_registers/audit', { data });
      },
    },
  },
  Asset: {
    AssetHouses: {
      GetCities(data: ApiTypes.Asset.AssetHouses.GetCities): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/get_cities', { data });
      },
      SelectProject(data: ApiTypes.Asset.AssetHouses.SelectProject): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/select_project', { data });
      },
      SelectProjectByLocation(data: ApiTypes.Asset.AssetHouses.SelectProjectByLocation): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/select_project_by_location', { data });
      },
      SelectBuilding(data: ApiTypes.Asset.AssetHouses.SelectBuilding): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/select_building', { data });
      },
      SelectUnit(data: ApiTypes.Asset.AssetHouses.SelectUnit): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/select_unit', { data });
      },
      SelectHouse(data?: ApiTypes.Asset.AssetHouses.SelectHouse): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/select_house', { data });
      },
      Show(data: ApiTypes.Asset.AssetHouses.Show): Promise<MyResponseType> {
        return request('customer/asset/asset_houses/show', { data });
      },
    },
    AssetProjects: {
      GetProjectPropertyBrand(data: ApiTypes.Asset.AssetProjects.GetProjectPropertyBrand): Promise<MyResponseType> {
        return request('customer/asset/asset_projects/get_project_property_brand', { data });
      },
    },
  },
  Banner: {
    BannerSpaces: {
      List(data: ApiTypes.Banner.BannerSpaces.List): Promise<MyResponseType> {
        return request('customer/banner/banner_spaces/list', { data });
      },
    },
  },
  Bill: {
    Bills: {
      List(data?: ApiTypes.Bill.Bills.List): Promise<MyResponseType> {
        return request('customer/bill/bills/list', { data });
      },
      Payment(data: ApiTypes.Bill.Bills.Payment): Promise<MyResponseType> {
        return request('customer/bill/bills/payment', { data });
      },
      PaymentCallback(): Promise<MyResponseType> {
        return request('customer/bill/bills/payment_callback', {});
      },
      Show(data: ApiTypes.Bill.Bills.Show): Promise<MyResponseType> {
        return request('customer/bill/bills/show', { data });
      },
    },
    HouseBills: {
      List(data: ApiTypes.Bill.HouseBills.List): Promise<MyResponseType> {
        return request('customer/bill/house_bills/list', { data });
      },
      MyBillYearList(data?: ApiTypes.Bill.HouseBills.MyBillYearList): Promise<MyResponseType> {
        return request('customer/bill/house_bills/my_bill_year_list', { data });
      },
      MyBillList(data: ApiTypes.Bill.HouseBills.MyBillList): Promise<MyResponseType> {
        return request('customer/bill/house_bills/my_bill_list', { data });
      },
      GetCountBills(data?: ApiTypes.Bill.HouseBills.GetCountBills): Promise<MyResponseType> {
        return request('customer/bill/house_bills/get_count_bills', { data });
      },
    },
  },
  Common: {
    ConvenienceServices: {
      List(data: ApiTypes.Common.ConvenienceServices.List): Promise<MyResponseType> {
        return request('customer/common/convenience_services/list', { data });
      },
    },
  },
  Customer: {
    CustomerBacklogs: {
      List(data?: ApiTypes.Customer.CustomerBacklogs.List): Promise<MyResponseType> {
        return request('customer/customer/customer_backlogs/list', { data });
      },
      Show(data: ApiTypes.Customer.CustomerBacklogs.Show): Promise<MyResponseType> {
        return request('customer/customer/customer_backlogs/show', { data });
      },
    },
    CustomerConsults: {
      List(data?: ApiTypes.Customer.CustomerConsults.List): Promise<MyResponseType> {
        return request('customer/customer/customer_consults/list', { data });
      },
      Store(data: ApiTypes.Customer.CustomerConsults.Store): Promise<MyResponseType> {
        return request('customer/customer/customer_consults/store', { data });
      },
      Show(data: ApiTypes.Customer.CustomerConsults.Show): Promise<MyResponseType> {
        return request('customer/customer/customer_consults/show', { data });
      },
    },
    CustomerOpinions: {
      Store(data: ApiTypes.Customer.CustomerOpinions.Store): Promise<MyResponseType> {
        return request('customer/customer/customer_opinions/store', { data });
      },
    },
    Customers: {
      GetCountHouse(): Promise<MyResponseType> {
        return request('customer/customer/customers/get_count_house', {});
      },
    },
  },
  GoodsReleases: {
    GoodsReleases: {
      Store(data: ApiTypes.GoodsReleases.GoodsReleases.Store): Promise<MyResponseType> {
        return request('customer/goods_releases/goods_releases/store', { data });
      },
      MyList(data?: ApiTypes.GoodsReleases.GoodsReleases.MyList): Promise<MyResponseType> {
        return request('customer/goods_releases/goods_releases/my_list', { data });
      },
      Cancel(data: ApiTypes.GoodsReleases.GoodsReleases.Cancel): Promise<MyResponseType> {
        return request('customer/goods_releases/goods_releases/cancel', { data });
      },
      Show(data: ApiTypes.GoodsReleases.GoodsReleases.Show): Promise<MyResponseType> {
        return request('customer/goods_releases/goods_releases/show', { data });
      },
      GoodsQrCode(data: ApiTypes.GoodsReleases.GoodsReleases.GoodsQrCode): Promise<MyResponseType> {
        return request('customer/goods_releases/goods_releases/goods_qr_code', { data });
      },
    },
  },
  Grid: {
    Grids: {
      GetHousekeeper(data: ApiTypes.Grid.Grids.GetHousekeeper): Promise<MyResponseType> {
        return request('customer/grid/grids/get_housekeeper', { data });
      },
    },
  },
  HouseOrder: {
    HouseOrders: {
      List(data: ApiTypes.HouseOrder.HouseOrders.List): Promise<MyResponseType> {
        return request('customer/house_order/house_orders/list', { data });
      },
      Store(data: ApiTypes.HouseOrder.HouseOrders.Store): Promise<MyResponseType> {
        return request('customer/house_order/house_orders/store', { data });
      },
      Show(data: ApiTypes.HouseOrder.HouseOrders.Show): Promise<MyResponseType> {
        return request('customer/house_order/house_orders/show', { data });
      },
      Payment(data: ApiTypes.HouseOrder.HouseOrders.Payment): Promise<MyResponseType> {
        return request('customer/house_order/house_orders/payment', { data });
      },
      HouseOrderNotify(): Promise<MyResponseType> {
        return request('customer/house_order/house_orders/house_order_notify', {});
      },
    },
    HousePrepaymentLogs: {
      List(data?: ApiTypes.HouseOrder.HousePrepaymentLogs.List): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayment_logs/list', { data });
      },
      Show(data: ApiTypes.HouseOrder.HousePrepaymentLogs.Show): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayment_logs/show', { data });
      },
    },
    HousePrepayments: {
      List(data?: ApiTypes.HouseOrder.HousePrepayments.List): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayments/list', { data });
      },
      Show(data: ApiTypes.HouseOrder.HousePrepayments.Show): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayments/show', { data });
      },
      Payment(data: ApiTypes.HouseOrder.HousePrepayments.Payment): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayments/payment', { data });
      },
      GetPayments(data: ApiTypes.HouseOrder.HousePrepayments.GetPayments): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayments/get_payments', { data });
      },
      HousePrepaymentNotify(): Promise<MyResponseType> {
        return request('customer/house_order/house_prepayments/house_prepayment_notify', {});
      },
    },
  },
  Login: {
    Auth: {
      Login(data: ApiTypes.Login.Auth.Login): Promise<MyResponseType> {
        return request('customer/login/auth/login', { data });
      },
      Register(data: ApiTypes.Login.Auth.Register): Promise<MyResponseType> {
        return request('customer/login/auth/register', { data });
      },
      Logout(): Promise<MyResponseType> {
        return request('customer/login/auth/logout', {});
      },
      Me(): Promise<MyResponseType> {
        return request('customer/login/auth/me', {});
      },
      ChangeName(data?: ApiTypes.Login.Auth.ChangeName): Promise<MyResponseType> {
        return request('customer/login/auth/change_name', { data });
      },
      BindPhoneNumber(data?: ApiTypes.Login.Auth.BindPhoneNumber): Promise<MyResponseType> {
        return request('customer/login/auth/bind_phone_number', { data });
      },
      SendValidateSms(data: ApiTypes.Login.Auth.SendValidateSms): Promise<MyResponseType> {
        return request('customer/login/auth/send_validate_sms', { data });
      },
      GetAccessToken(data: ApiTypes.Login.Auth.GetAccessToken): Promise<MyResponseType> {
        return request('customer/login/auth/get_access_token', { data });
      },
      PreUpload(data: ApiTypes.Login.Auth.PreUpload): Promise<MyResponseType> {
        return request('customer/login/auth/pre_upload', { data });
      },
      TemporaryUrl(data: ApiTypes.Login.Auth.TemporaryUrl): Promise<MyResponseType> {
        return request('customer/login/auth/temporary_url', { data });
      },
    },
  },
  Loop: {
    CCB: {
      PaymentCallback(): Promise<MyResponseType> {
        return request('customer/loop/c_c_b/payment_callback', {});
      },
      HsbPaymentCallback(): Promise<MyResponseType> {
        return request('customer/loop/c_c_b/hsb_payment_callback', {});
      },
      ReconciliationCallback(): Promise<MyResponseType> {
        return request('customer/loop/c_c_b/reconciliation_callback', {});
      },
    },
  },
  Msg: {
    MsgPropertyAnnouncements: {
      List(data?: ApiTypes.Msg.MsgPropertyAnnouncements.List): Promise<MyResponseType> {
        return request('customer/msg/msg_property_announcements/list', { data });
      },
      Show(data: ApiTypes.Msg.MsgPropertyAnnouncements.Show): Promise<MyResponseType> {
        return request('customer/msg/msg_property_announcements/show', { data });
      },
      MarkAsRead(data: ApiTypes.Msg.MsgPropertyAnnouncements.MarkAsRead): Promise<MyResponseType> {
        return request('customer/msg/msg_property_announcements/mark_as_read', { data });
      },
      CountMsg(): Promise<MyResponseType> {
        return request('customer/msg/msg_property_announcements/count_msg', {});
      },
    },
  },
  Renovation: {
    RenovationApplies: {
      List(data?: ApiTypes.Renovation.RenovationApplies.List): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/list', { data });
      },
      Store(data: ApiTypes.Renovation.RenovationApplies.Store): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/store', { data });
      },
      Update(data: ApiTypes.Renovation.RenovationApplies.Update): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/update', { data });
      },
      Show(data: ApiTypes.Renovation.RenovationApplies.Show): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/show', { data });
      },
      ApplyAccept(data: ApiTypes.Renovation.RenovationApplies.ApplyAccept): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/apply_accept', { data });
      },
      ApplyExtension(data: ApiTypes.Renovation.RenovationApplies.ApplyExtension): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/apply_extension', { data });
      },
      SoftDelete(data: ApiTypes.Renovation.RenovationApplies.SoftDelete): Promise<MyResponseType> {
        return request('customer/renovation/renovation_applies/soft_delete', { data });
      },
    },
    RenovationWorkers: {
      List(data?: ApiTypes.Renovation.RenovationWorkers.List): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/list', { data });
      },
      Store(data: ApiTypes.Renovation.RenovationWorkers.Store): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/store', { data });
      },
      BatchStore(data: ApiTypes.Renovation.RenovationWorkers.BatchStore): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/batch_store', { data });
      },
      Update(data: ApiTypes.Renovation.RenovationWorkers.Update): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/update', { data });
      },
      Show(data: ApiTypes.Renovation.RenovationWorkers.Show): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/show', { data });
      },
      StopVisitor(data: ApiTypes.Renovation.RenovationWorkers.StopVisitor): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/stop_visitor', { data });
      },
      EnableVisitor(data: ApiTypes.Renovation.RenovationWorkers.EnableVisitor): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/enable_visitor', { data });
      },
      UpdateVisitorTime(data: ApiTypes.Renovation.RenovationWorkers.UpdateVisitorTime): Promise<MyResponseType> {
        return request('customer/renovation/renovation_workers/update_visitor_time', { data });
      },
    },
  },
  Survey: {
    Surveys: {
      List(): Promise<MyResponseType> {
        return request('customer/survey/surveys/list', {});
      },
      Questions(data: ApiTypes.Survey.Surveys.Questions): Promise<MyResponseType> {
        return request('customer/survey/surveys/questions', { data });
      },
      SubmitResponse(data: ApiTypes.Survey.Surveys.SubmitResponse): Promise<MyResponseType> {
        return request('customer/survey/surveys/submit_response', { data });
      },
    },
  },
  Visitor: {
    VisitorApplies: {
      Invite(data: ApiTypes.Visitor.VisitorApplies.Invite): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/invite', { data });
      },
      Register(data: ApiTypes.Visitor.VisitorApplies.Register): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/register', { data });
      },
      Applies(data?: ApiTypes.Visitor.VisitorApplies.Applies): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/applies', { data });
      },
      Show(data: ApiTypes.Visitor.VisitorApplies.Show): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/show', { data });
      },
      Codes(): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/codes', {});
      },
      Review(data: ApiTypes.Visitor.VisitorApplies.Review): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/review', { data });
      },
      VisitorQrCode(data: ApiTypes.Visitor.VisitorApplies.VisitorQrCode): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/visitor_qr_code', { data });
      },
      ResidentQrCode(data: ApiTypes.Visitor.VisitorApplies.ResidentQrCode): Promise<MyResponseType> {
        return request('customer/visitor/visitor_applies/resident_qr_code', { data });
      },
    },
  },
  WechatWork: {
    Notification: {
      WechatWorkNotify(): Promise<MyResponseType> {
        return request('customer/wechat_work/notification/wechat_work_notify', {});
      },
      ThirdAppNotify(): Promise<MyResponseType> {
        return request('customer/wechat_work/notification/third_app_notify', {});
      },
    },
  },
  WorkOrder: {
    HouseWorkLogs: {
      List(data: ApiTypes.WorkOrder.HouseWorkLogs.List): Promise<MyResponseType> {
        return request('customer/work_order/house_work_logs/list', { data });
      },
    },
    HouseWorkOrders: {
      List(data?: ApiTypes.WorkOrder.HouseWorkOrders.List): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/list', { data });
      },
      Store(data: ApiTypes.WorkOrder.HouseWorkOrders.Store): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/store', { data });
      },
      Show(data: ApiTypes.WorkOrder.HouseWorkOrders.Show): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/show', { data });
      },
      Close(data: ApiTypes.WorkOrder.HouseWorkOrders.Close): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/close', { data });
      },
      ChangeExpectTime(data: ApiTypes.WorkOrder.HouseWorkOrders.ChangeExpectTime): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/change_expect_time', { data });
      },
      Accept(data: ApiTypes.WorkOrder.HouseWorkOrders.Accept): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/accept', { data });
      },
      Evaluation(data: ApiTypes.WorkOrder.HouseWorkOrders.Evaluation): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/evaluation', { data });
      },
      Rework(data: ApiTypes.WorkOrder.HouseWorkOrders.Rework): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/rework', { data });
      },
      WorkOrderPayment(data: ApiTypes.WorkOrder.HouseWorkOrders.WorkOrderPayment): Promise<MyResponseType> {
        return request('customer/work_order/house_work_orders/work_order_payment', { data });
      },
    },
  },
}