import { Model } from 'mongoose';
import { Invoice, InvoiceDocument } from './schemas/invoice.schema';
import { CreateInvoiceDto } from './dto/create-invoice.dto';
import { UpdateInvoiceDto } from './dto/update-invoice.dto';
import { FilterInvoicesDto } from './dto/filter-invoices.dto';
export declare class InvoicesService {
    private invoiceModel;
    private studentModel;
    private classModel;
    private readonly logger;
    constructor(invoiceModel: Model<InvoiceDocument>, studentModel: Model<any>, classModel: Model<any>);
    private deriveStatus;
    private generateInvoiceNumber;
    private generatePaymentId;
    private generateReceiptNumber;
    private generateTransactionId;
    private escapeRegex;
    private buildQuery;
    create(dto: CreateInvoiceDto, academicYearId?: string): Promise<Invoice & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>>;
    findAll(filter: FilterInvoicesDto, academicYearId?: string): Promise<(import("mongoose").FlattenMaps<InvoiceDocument> & Required<{
        _id: string;
    }>)[]>;
    findOne(id: string): Promise<import("mongoose").FlattenMaps<InvoiceDocument> & Required<{
        _id: string;
    }>>;
    update(id: string, dto: UpdateInvoiceDto): Promise<import("mongoose").FlattenMaps<InvoiceDocument> & Required<{
        _id: string;
    }>>;
    toggleActive(id: string): Promise<{
        _id: string;
        isActive: any;
    }>;
    verifyReceipt(lookup: string): Promise<{
        receiptNumber: string;
        invoiceNumber: string;
        transactionId: string | undefined;
        studentName: string;
        studentId: string;
        className: string;
        feeName: string;
        installment: string;
        amount: number;
        fineAmount: number;
        totalPaid: number;
        status: "partial" | "pending" | "paid";
        paidAt: Date;
        paymentMethod: "upi" | "cash" | "cheque" | "bank_transfer" | "online" | undefined;
    } | null>;
    delete(id: string): Promise<{
        deleted: boolean;
    }>;
    exportAll(filter: FilterInvoicesDto, academicYearId?: string): Promise<(import("mongoose").FlattenMaps<InvoiceDocument> & Required<{
        _id: string;
    }>)[]>;
    upsertFromFeePayment(input: {
        feeAssignmentId: string;
        studentId: string;
        classId: string;
        academicYearId: string;
        billAmount: number;
        totalPaid: number;
        paymentMethod: string;
        generatedBy: string;
        feeName?: string;
        installment?: string;
        fineAmount?: number;
    }): Promise<(Invoice & import("mongoose").Document<unknown, any, any, Record<string, any>> & Required<{
        _id: string;
    }>) | (import("mongoose").FlattenMaps<InvoiceDocument> & Required<{
        _id: string;
    }>) | null>;
}
