# Code generated by lark_sdk_gen. DO NOT EDIT.

import typing
from pylark.lark_request import Response

from pylark.api_service_attendance_file_download import (
    DownloadAttendanceFileReq,
    DownloadAttendanceFileResp,
    _gen_download_attendance_file_req,
)
from pylark.api_service_attendance_file_upload import (
    UploadAttendanceFileReq,
    UploadAttendanceFileResp,
    _gen_upload_attendance_file_req,
)
from pylark.api_service_attendance_user_settings_query import (
    QueryAttendanceUserSettingsReq,
    QueryAttendanceUserSettingsResp,
    _gen_query_attendance_user_settings_req,
)
from pylark.api_service_attendance_user_settings_update import (
    UpdateAttendanceUserSettingsReq,
    UpdateAttendanceUserSettingsResp,
    _gen_update_attendance_user_settings_req,
)
from pylark.api_service_attendance_group_create_update import (
    CreateUpdateAttendanceGroupReq,
    CreateUpdateAttendanceGroupResp,
    _gen_create_update_attendance_group_req,
)
from pylark.api_service_attendance_group_delete import (
    DeleteAttendanceGroupReq,
    DeleteAttendanceGroupResp,
    _gen_delete_attendance_group_req,
)
from pylark.api_service_attendance_group_get import (
    GetAttendanceGroupReq,
    GetAttendanceGroupResp,
    _gen_get_attendance_group_req,
)
from pylark.api_service_attendance_shift_create import (
    CreateAttendanceShiftReq,
    CreateAttendanceShiftResp,
    _gen_create_attendance_shift_req,
)
from pylark.api_service_attendance_shift_delete import (
    DeleteAttendanceShiftReq,
    DeleteAttendanceShiftResp,
    _gen_delete_attendance_shift_req,
)
from pylark.api_service_attendance_shift_get_by_id import (
    GetAttendanceShiftByIDReq,
    GetAttendanceShiftByIDResp,
    _gen_get_attendance_shift_by_id_req,
)
from pylark.api_service_attendance_shift_get_by_name import (
    GetAttendanceShiftByNameReq,
    GetAttendanceShiftByNameResp,
    _gen_get_attendance_shift_by_name_req,
)
from pylark.api_service_attendance_statistics_data_get import (
    GetAttendanceStatisticsDataReq,
    GetAttendanceStatisticsDataResp,
    _gen_get_attendance_statistics_data_req,
)
from pylark.api_service_attendance_statistics_header_get import (
    GetAttendanceStatisticsHeaderReq,
    GetAttendanceStatisticsHeaderResp,
    _gen_get_attendance_statistics_header_req,
)
from pylark.api_service_attendance_user_statistics_settings_update import (
    UpdateAttendanceUserStatisticsSettingsReq,
    UpdateAttendanceUserStatisticsSettingsResp,
    _gen_update_attendance_user_statistics_settings_req,
)
from pylark.api_service_attendance_user_statistics_settings_get import (
    GetAttendanceUserStatisticsSettingsReq,
    GetAttendanceUserStatisticsSettingsResp,
    _gen_get_attendance_user_statistics_settings_req,
)
from pylark.api_service_attendance_user_daily_shift_get import (
    GetAttendanceUserDailyShiftReq,
    GetAttendanceUserDailyShiftResp,
    _gen_get_attendance_user_daily_shift_req,
)
from pylark.api_service_attendance_user_task_get import (
    GetAttendanceUserTaskReq,
    GetAttendanceUserTaskResp,
    _gen_get_attendance_user_task_req,
)
from pylark.api_service_attendance_user_flow_get import (
    GetAttendanceUserFlowReq,
    GetAttendanceUserFlowResp,
    _gen_get_attendance_user_flow_req,
)
from pylark.api_service_attendance_user_flow_batch_get import (
    BatchGetAttendanceUserFlowReq,
    BatchGetAttendanceUserFlowResp,
    _gen_batch_get_attendance_user_flow_req,
)
from pylark.api_service_attendance_user_flow_batch_create import (
    BatchCreateAttendanceUserFlowReq,
    BatchCreateAttendanceUserFlowResp,
    _gen_batch_create_attendance_user_flow_req,
)
from pylark.api_service_attendance_user_task_remedy_get import (
    GetAttendanceUserTaskRemedyReq,
    GetAttendanceUserTaskRemedyResp,
    _gen_get_attendance_user_task_remedy_req,
)
from pylark.api_service_attendance_user_daily_shift_create_update import (
    CreateUpdateAttendanceUserDailyShiftReq,
    CreateUpdateAttendanceUserDailyShiftResp,
    _gen_create_update_attendance_user_daily_shift_req,
)
from pylark.api_service_attendance_user_approval_get import (
    GetAttendanceUserApprovalReq,
    GetAttendanceUserApprovalResp,
    _gen_get_attendance_user_approval_req,
)
from pylark.api_service_attendance_user_approval_create import (
    CreateAttendanceUserApprovalReq,
    CreateAttendanceUserApprovalResp,
    _gen_create_attendance_user_approval_req,
)
from pylark.api_service_attendance_user_allowed_remedy_get import (
    GetAttendanceUserAllowedRemedyReq,
    GetAttendanceUserAllowedRemedyResp,
    _gen_get_attendance_user_allowed_remedy_req,
)
from pylark.api_service_attendance_remedy_approval_init import (
    InitAttendanceRemedyApprovalReq,
    InitAttendanceRemedyApprovalResp,
    _gen_init_attendance_remedy_approval_req,
)
from pylark.api_service_attendance_remedy_approval_update import (
    UpdateAttendanceRemedyApprovalReq,
    UpdateAttendanceRemedyApprovalResp,
    _gen_update_attendance_remedy_approval_req,
)


if typing.TYPE_CHECKING:
    from lark import Lark


class LarkAttendanceService(object):
    cli: "Lark"

    def __init__(self, cli: "Lark"):
        self.cli = cli

    def download_attendance_file(
        self, request: DownloadAttendanceFileReq, options: typing.List[str] = None
    ) -> typing.Tuple[DownloadAttendanceFileResp, Response]:
        return self.cli.raw_request(_gen_download_attendance_file_req(request, options))

    def upload_attendance_file(
        self, request: UploadAttendanceFileReq, options: typing.List[str] = None
    ) -> typing.Tuple[UploadAttendanceFileResp, Response]:
        return self.cli.raw_request(_gen_upload_attendance_file_req(request, options))

    def query_attendance_user_settings(
        self, request: QueryAttendanceUserSettingsReq, options: typing.List[str] = None
    ) -> typing.Tuple[QueryAttendanceUserSettingsResp, Response]:
        return self.cli.raw_request(
            _gen_query_attendance_user_settings_req(request, options)
        )

    def update_attendance_user_settings(
        self, request: UpdateAttendanceUserSettingsReq, options: typing.List[str] = None
    ) -> typing.Tuple[UpdateAttendanceUserSettingsResp, Response]:
        return self.cli.raw_request(
            _gen_update_attendance_user_settings_req(request, options)
        )

    def create_update_attendance_group(
        self, request: CreateUpdateAttendanceGroupReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateUpdateAttendanceGroupResp, Response]:
        return self.cli.raw_request(
            _gen_create_update_attendance_group_req(request, options)
        )

    def delete_attendance_group(
        self, request: DeleteAttendanceGroupReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteAttendanceGroupResp, Response]:
        return self.cli.raw_request(_gen_delete_attendance_group_req(request, options))

    def get_attendance_group(
        self, request: GetAttendanceGroupReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceGroupResp, Response]:
        return self.cli.raw_request(_gen_get_attendance_group_req(request, options))

    def create_attendance_shift(
        self, request: CreateAttendanceShiftReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateAttendanceShiftResp, Response]:
        return self.cli.raw_request(_gen_create_attendance_shift_req(request, options))

    def delete_attendance_shift(
        self, request: DeleteAttendanceShiftReq, options: typing.List[str] = None
    ) -> typing.Tuple[DeleteAttendanceShiftResp, Response]:
        return self.cli.raw_request(_gen_delete_attendance_shift_req(request, options))

    def get_attendance_shift_by_id(
        self, request: GetAttendanceShiftByIDReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceShiftByIDResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_shift_by_id_req(request, options)
        )

    def get_attendance_shift_by_name(
        self, request: GetAttendanceShiftByNameReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceShiftByNameResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_shift_by_name_req(request, options)
        )

    def get_attendance_statistics_data(
        self, request: GetAttendanceStatisticsDataReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceStatisticsDataResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_statistics_data_req(request, options)
        )

    def get_attendance_statistics_header(
        self,
        request: GetAttendanceStatisticsHeaderReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[GetAttendanceStatisticsHeaderResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_statistics_header_req(request, options)
        )

    def update_attendance_user_statistics_settings(
        self,
        request: UpdateAttendanceUserStatisticsSettingsReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[UpdateAttendanceUserStatisticsSettingsResp, Response]:
        return self.cli.raw_request(
            _gen_update_attendance_user_statistics_settings_req(request, options)
        )

    def get_attendance_user_statistics_settings(
        self,
        request: GetAttendanceUserStatisticsSettingsReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[GetAttendanceUserStatisticsSettingsResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_user_statistics_settings_req(request, options)
        )

    def get_attendance_user_daily_shift(
        self, request: GetAttendanceUserDailyShiftReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceUserDailyShiftResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_user_daily_shift_req(request, options)
        )

    def get_attendance_user_task(
        self, request: GetAttendanceUserTaskReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceUserTaskResp, Response]:
        return self.cli.raw_request(_gen_get_attendance_user_task_req(request, options))

    def get_attendance_user_flow(
        self, request: GetAttendanceUserFlowReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceUserFlowResp, Response]:
        return self.cli.raw_request(_gen_get_attendance_user_flow_req(request, options))

    def batch_get_attendance_user_flow(
        self, request: BatchGetAttendanceUserFlowReq, options: typing.List[str] = None
    ) -> typing.Tuple[BatchGetAttendanceUserFlowResp, Response]:
        return self.cli.raw_request(
            _gen_batch_get_attendance_user_flow_req(request, options)
        )

    def batch_create_attendance_user_flow(
        self,
        request: BatchCreateAttendanceUserFlowReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[BatchCreateAttendanceUserFlowResp, Response]:
        return self.cli.raw_request(
            _gen_batch_create_attendance_user_flow_req(request, options)
        )

    def get_attendance_user_task_remedy(
        self, request: GetAttendanceUserTaskRemedyReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceUserTaskRemedyResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_user_task_remedy_req(request, options)
        )

    def create_update_attendance_user_daily_shift(
        self,
        request: CreateUpdateAttendanceUserDailyShiftReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[CreateUpdateAttendanceUserDailyShiftResp, Response]:
        return self.cli.raw_request(
            _gen_create_update_attendance_user_daily_shift_req(request, options)
        )

    def get_attendance_user_approval(
        self, request: GetAttendanceUserApprovalReq, options: typing.List[str] = None
    ) -> typing.Tuple[GetAttendanceUserApprovalResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_user_approval_req(request, options)
        )

    def create_attendance_user_approval(
        self, request: CreateAttendanceUserApprovalReq, options: typing.List[str] = None
    ) -> typing.Tuple[CreateAttendanceUserApprovalResp, Response]:
        return self.cli.raw_request(
            _gen_create_attendance_user_approval_req(request, options)
        )

    def get_attendance_user_allowed_remedy(
        self,
        request: GetAttendanceUserAllowedRemedyReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[GetAttendanceUserAllowedRemedyResp, Response]:
        return self.cli.raw_request(
            _gen_get_attendance_user_allowed_remedy_req(request, options)
        )

    def init_attendance_remedy_approval(
        self, request: InitAttendanceRemedyApprovalReq, options: typing.List[str] = None
    ) -> typing.Tuple[InitAttendanceRemedyApprovalResp, Response]:
        return self.cli.raw_request(
            _gen_init_attendance_remedy_approval_req(request, options)
        )

    def update_attendance_remedy_approval(
        self,
        request: UpdateAttendanceRemedyApprovalReq,
        options: typing.List[str] = None,
    ) -> typing.Tuple[UpdateAttendanceRemedyApprovalResp, Response]:
        return self.cli.raw_request(
            _gen_update_attendance_remedy_approval_req(request, options)
        )
