import { MTableQueries } from "../../common-types/common";
import { AttendanceRecord, AttendanceRecordBase, AttendanceProviderMaster, AttendanceSchoolIntegration, AttendanceException } from "../../schema";
import { controllerResponse } from "../../utilities";
type AttendanceErrorLogger<T> = {
    [key in keyof T]: string;
};
declare class MAttendanceRecord extends MTableQueries {
    atnr_id?: string;
    atnr_user_id_auth?: string;
    atnr_entity_id_syen?: string;
    atnr_attendee_type?: "STUDENT" | "TEACHER" | "STAFF" | "ALL";
    atnr_section_id_acapts?: string;
    atnr_academic_year_id_acayr?: string;
    atnr_period_index?: number;
    atnr_status_sygms?: string;
    fromDate?: string;
    toDate?: string;
    constructor(init: MAttendanceRecord);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceRecord>>;
}
declare class MAttendanceRecordGetByIdPayload {
    atnr_id?: string;
    constructor(init: MAttendanceRecordGetByIdPayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceRecordGetByIdPayload>>;
}
declare class MAttendanceRecordDeletePayload {
    atnr_id?: string;
    constructor(init: MAttendanceRecordDeletePayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceRecordDeletePayload>>;
}
declare class MAttendanceRecordInsertUpdatePayload extends AttendanceRecord {
    constructor(init: AttendanceRecord);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceRecordInsertUpdatePayload>>;
}
interface IAttendanceBulkRecord {
    atnr_user_id_auth: string;
    atnr_status_sygms: string;
    atnr_remark?: string;
    atnr_period_index?: number;
}
declare class MAttendanceRecordBulkSavePayload {
    atnr_date?: Date | string;
    atnr_entity_id_syen?: string;
    atnr_attendee_type?: "STUDENT" | "TEACHER" | "STAFF" | "ALL";
    atnr_section_id_acapts?: string;
    atnr_academic_year_id_acayr?: string;
    atnr_period_index?: number;
    records?: IAttendanceBulkRecord[];
    constructor(init: MAttendanceRecordBulkSavePayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceRecordBulkSavePayload>>;
}
declare class MAttendanceReportPayload {
    atnr_entity_id_syen?: string;
    atnr_attendee_type?: "STUDENT" | "TEACHER" | "STAFF" | "ALL";
    atnr_section_id_acapts?: string;
    atnr_academic_year_id_acayr?: string;
    fromDate?: string;
    toDate?: string;
    atnr_user_id_auth?: string;
    threshold?: number;
    constructor(init: MAttendanceReportPayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceReportPayload>>;
}
declare class MAttendanceException extends MTableQueries {
    atex_id?: string;
    atex_entity_id_syen?: string;
    atex_exception_status?: "OPEN" | "RESOLVED";
    constructor(init: MAttendanceException);
}
declare class MAttendanceExceptionResolvePayload {
    atex_id?: string;
    atex_resolution_note?: string;
    constructor(init: MAttendanceExceptionResolvePayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceExceptionResolvePayload>>;
}
declare class MAttendanceProviderMaster extends MTableQueries {
    atprv_id?: string;
    atprv_provider_code?: string;
    atprv_provider_name?: string;
    atprv_isactive?: boolean;
    constructor(init: MAttendanceProviderMaster);
}
declare class MAttendanceProviderInsertUpdatePayload extends AttendanceProviderMaster {
    constructor(init: AttendanceProviderMaster);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceProviderInsertUpdatePayload>>;
}
declare class MAttendanceSchoolIntegrationInsertUpdatePayload extends AttendanceSchoolIntegration {
    constructor(init: AttendanceSchoolIntegration);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceSchoolIntegrationInsertUpdatePayload>>;
}
declare class MAttendanceSchoolIntegrationGetByIdPayload {
    atsi_id?: string;
    constructor(init: MAttendanceSchoolIntegrationGetByIdPayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceSchoolIntegrationGetByIdPayload>>;
}
declare class MAttendanceSchoolIntegrationActionPayload {
    atsi_id?: string;
    constructor(init: MAttendanceSchoolIntegrationActionPayload);
    Validate?(): Partial<AttendanceErrorLogger<MAttendanceSchoolIntegrationActionPayload>>;
}
interface AttendanceRecordResponse extends Omit<AttendanceRecordBase, "atnr_user_id_auth" | "atnr_status_sygms" | "atnr_section_id_acapts" | "atnr_academic_year_id_acayr"> {
    atnr_user_id_auth?: {
        _id?: string;
        syus_name?: string;
        user_fullname?: string;
        syus_email?: string;
    } | string;
    atnr_status_sygms?: {
        _id?: string;
        sygms_title?: string;
        sygms_code?: string;
    } | string;
    atnr_section_id_acapts?: {
        _id?: string;
        acapts_name?: string;
        acapts_code?: string;
    } | string;
    atnr_academic_year_id_acayr?: {
        _id?: string;
        acayr_name?: string;
        acayr_code?: string;
    } | string;
}
interface attendanceRecordControllerResponse extends controllerResponse {
    data?: AttendanceRecordResponse[] | AttendanceRecordResponse | null;
    totalDocument?: number;
}
interface attendanceRecordByIdControllerResponse extends controllerResponse {
    data?: AttendanceRecordResponse | null;
}
interface attendanceRecordInsertUpdateControllerResponse extends controllerResponse {
    data?: AttendanceRecordResponse | null;
}
interface attendanceRecordDeleteControllerResponse extends controllerResponse {
    data?: boolean;
}
interface attendanceReportControllerResponse extends controllerResponse {
    data?: unknown;
}
interface attendanceExceptionControllerResponse extends controllerResponse {
    data?: AttendanceException[] | AttendanceException | null;
    totalDocument?: number;
}
interface attendanceIntegrationControllerResponse extends controllerResponse {
    data?: unknown;
    totalDocument?: number;
}
export { MAttendanceRecord, MAttendanceRecordGetByIdPayload, MAttendanceRecordDeletePayload, MAttendanceRecordInsertUpdatePayload, MAttendanceRecordBulkSavePayload, MAttendanceReportPayload, MAttendanceException, MAttendanceExceptionResolvePayload, MAttendanceProviderMaster, MAttendanceProviderInsertUpdatePayload, MAttendanceSchoolIntegrationInsertUpdatePayload, MAttendanceSchoolIntegrationGetByIdPayload, MAttendanceSchoolIntegrationActionPayload, attendanceRecordControllerResponse, attendanceRecordByIdControllerResponse, attendanceRecordInsertUpdateControllerResponse, attendanceRecordDeleteControllerResponse, attendanceReportControllerResponse, attendanceExceptionControllerResponse, attendanceIntegrationControllerResponse, AttendanceRecordResponse, IAttendanceBulkRecord };
