import { MTableQueries } from "../../common-types/common";
import { AcaClassProgramMaster, AcaClassProgramMasterBase } from "../../schema";
import { controllerResponse } from "../../utilities";
type IClassProgramMasterErrorLogger = {
    [key in keyof MClassProgramMaster]: string;
};
type IClassProgramMasterGetByIdErrorLogger = {
    [key in keyof MClassProgramMasterGetByIdPayload]: string;
};
type IClassProgramMasterDeleteErrorLogger = {
    [key in keyof MClassProgramMasterDeletePayload]: string;
};
type IClassProgramMasterInsertUpdateErrorLogger = {
    [key in keyof MClassProgramMasterInsertUpdatePayload]: string;
};
type IClassProgramMasterToggleStatusErrorLogger = {
    [key in keyof MClassProgramMasterToggleStatusPayload]: string;
};
declare class MClassProgramMaster extends MTableQueries {
    acacpm_id?: string;
    acacpm_entity_id_syen?: string;
    acacpm_academic_year_id_acayr?: string;
    acacpm_student_role_id_syro?: string;
    acacpm_isactive?: boolean;
    constructor(init: MClassProgramMaster);
    Validate?(): Partial<IClassProgramMasterErrorLogger>;
}
declare class MClassProgramMasterGetByIdPayload {
    acacpm_id?: string;
    constructor(init: MClassProgramMasterGetByIdPayload);
    Validate?(): Partial<IClassProgramMasterGetByIdErrorLogger>;
}
declare class MClassProgramMasterDeletePayload {
    acacpm_id?: string;
    constructor(init: MClassProgramMasterDeletePayload);
    Validate?(): Partial<IClassProgramMasterDeleteErrorLogger>;
}
declare class MClassProgramMasterToggleStatusPayload {
    acacpm_id?: string;
    constructor(init: MClassProgramMasterToggleStatusPayload);
    Validate?(): Partial<IClassProgramMasterToggleStatusErrorLogger>;
}
declare class MClassProgramMasterInsertUpdatePayload extends AcaClassProgramMaster {
    constructor(init: AcaClassProgramMaster);
    Validate?(): Partial<IClassProgramMasterInsertUpdateErrorLogger>;
}
/**
 * Configuration interface for class program general master
 * Used to determine if semester and branch dropdowns should be shown
 */
interface ClassProgramConfiguration {
    semesterType?: boolean;
    branchType?: boolean;
    [key: string]: unknown;
}
/**
 * Extended general master interface with configuration
 */
interface ClassProgramGeneralMaster {
    _id?: string;
    sygms_id_sygmt?: string;
    sygms_code?: string;
    sygms_title?: string;
    sygms_desc?: string;
    sygms_isactive?: boolean;
    sygms_configuration?: ClassProgramConfiguration;
    sygms_entity_id_syen?: string;
}
interface AcaClassProgramMasterResponse extends AcaClassProgramMasterBase {
    acacpm_class_program_id_sygms?: ClassProgramGeneralMaster | {
        _id?: string;
        acacpm_name?: string;
        sygms_configuration?: ClassProgramConfiguration;
    };
    acacpm_academic_year_id_acayr?: {
        _id?: string;
        acayr_name?: string;
        acayr_code?: string;
    };
    acacpm_entity_id_syen?: {
        _id?: string;
        syen_name?: string;
    };
}
interface classProgramMasterControllerResponse extends controllerResponse {
    data?: AcaClassProgramMasterResponse[];
}
interface classProgramMasterByIdControllerResponse extends controllerResponse {
    data?: AcaClassProgramMasterResponse;
}
interface classProgramMasterInsertUpdateControllerResponse extends controllerResponse {
    data?: AcaClassProgramMasterResponse;
}
interface classProgramMasterDeleteControllerResponse extends controllerResponse {
    data?: boolean;
}
interface classProgramMasterToggleStatusControllerResponse extends controllerResponse {
    data?: boolean;
}
export { IClassProgramMasterErrorLogger, IClassProgramMasterGetByIdErrorLogger, IClassProgramMasterDeleteErrorLogger, IClassProgramMasterInsertUpdateErrorLogger, IClassProgramMasterToggleStatusErrorLogger, MClassProgramMaster, MClassProgramMasterGetByIdPayload, MClassProgramMasterDeletePayload, MClassProgramMasterInsertUpdatePayload, MClassProgramMasterToggleStatusPayload, classProgramMasterControllerResponse, classProgramMasterByIdControllerResponse, classProgramMasterInsertUpdateControllerResponse, classProgramMasterDeleteControllerResponse, classProgramMasterToggleStatusControllerResponse, AcaClassProgramMasterResponse, ClassProgramConfiguration, ClassProgramGeneralMaster };
