/**
 * Admission Fee Snapshot Model - Response Types
 *
 * Purpose: Response type definitions with populated references for fee snapshots
 * Stores complete fee structure snapshot at the time of admission confirmation/conversion
 * Prefix: adfsn_ (admission fee snapshot)
 */
import { AdmissionFeeSnapshot } from "../../schema/admission/admission_fee_snapshot";
import { controllerResponse } from "../../utilities";
/**
 * Response type with populated references
 * Using Omit to avoid type conflicts when overriding properties
 */
type AdmissionAdmissionFeeSnapshot = Omit<AdmissionFeeSnapshot, 'adfsn_admission_id_admap' | 'adfsn_user_id_auth' | 'adfsn_entity_id_syen' | 'adfsn_academic_year_id_acayr' | 'adfsn_class_program_id_acacpm' | 'adfsn_class_program_term_id_acapt' | 'adfsn_class_program_branch_id_acabrn' | 'adfsn_section_id_acapts' | 'adfsn_fee_structure_id_feest' | 'adfsn_currency_id_sycr' | 'adfsn_created_by_user' | 'adfsn_modified_by_user'> & {
    adfsn_admission_id_admap?: {
        _id: string;
        admap_application_number?: string;
        admap_first_name?: string;
        admap_last_name?: string;
    } | string;
    adfsn_user_id_auth?: {
        _id: string;
        user_first_name?: string;
        user_last_name?: string;
        user_fullname?: string;
        user_email?: string;
    } | string;
    adfsn_entity_id_syen?: {
        _id: string;
        syen_name?: string;
        syen_entity_code?: string;
    } | string;
    adfsn_academic_year_id_acayr?: {
        _id: string;
        acayr_name?: string;
        acayr_code?: string;
        acayr_title?: string;
    } | string;
    adfsn_class_program_id_acacpm?: {
        _id: string;
        acacpm_alise_title?: string;
        acacpm_name?: string;
        acacpm_title?: string;
    } | string;
    adfsn_class_program_term_id_acapt?: {
        _id: string;
        acapt_name?: string;
        acapt_code?: string;
    } | string | null;
    adfsn_class_program_branch_id_acabrn?: {
        _id: string;
        acabrn_name?: string;
        acabrn_code?: string;
    } | string | null;
    adfsn_section_id_acapts?: {
        _id: string;
        acapts_name?: string;
        acapts_code?: string;
    } | string | null;
    adfsn_fee_structure_id_feest?: {
        _id: string;
        feest_structure_name?: string;
        feest_structure_code?: string;
    } | string | null;
    adfsn_currency_id_sycr?: {
        _id: string;
        syic_currency_code?: string;
        syic_currency_name?: string;
        syic_currency_symbol?: string;
    } | string | null;
    adfsn_created_by_user?: {
        _id: string;
        user_first_name?: string;
        user_last_name?: string;
        user_fullname?: string;
    } | string | null;
    adfsn_modified_by_user?: {
        _id: string;
        user_first_name?: string;
        user_last_name?: string;
        user_fullname?: string;
    } | string | null;
};
/**
 * Controller response type for list operations
 */
interface admissionFeeSnapshotControllerResponse extends controllerResponse {
    data?: AdmissionAdmissionFeeSnapshot[] | AdmissionAdmissionFeeSnapshot | null;
    totalDocument?: number;
}
/**
 * Controller response for single operations
 */
interface AdmissionFeeSnapshotResponse extends AdmissionAdmissionFeeSnapshot {
}
/**
 * Get by ID payload
 */
interface MAdmissionFeeSnapshotGetByIdPayload {
    adfsn_id?: string;
    adfsn_admission_id_admap?: string;
    adfsn_student_id?: string;
}
/**
 * List payload
 */
interface MAdmissionFeeSnapshotListPayload {
    adfsn_admission_id_admap?: string;
    adfsn_student_id?: string;
    adfsn_entity_id_syen?: string;
    adfsn_academic_year_id_acayr?: string;
    adfsn_class_program_id_acacpm?: string;
    adfsn_applied_at_stage?: 'CONFIRMATION' | 'CONVERSION';
    adfsn_isactive?: boolean;
    pageIndex?: number;
    pageSize?: number;
    query?: string;
}
/**
 * Insert/Update payload
 */
interface MAdmissionFeeSnapshotInsertUpdatePayload extends AdmissionFeeSnapshot {
    adfsn_id?: string;
}
export { AdmissionAdmissionFeeSnapshot, // Main response type
AdmissionFeeSnapshotResponse, // Single response
admissionFeeSnapshotControllerResponse, // List response
MAdmissionFeeSnapshotGetByIdPayload, MAdmissionFeeSnapshotListPayload, MAdmissionFeeSnapshotInsertUpdatePayload };
