import { Model } from "mongoose";
import { ResponseService } from "src/common/service/response.service";
import { ExpenseDocument } from "src/schema/expenses.schema";
import { UsersDocument } from "src/schema/users.schema";
import { StorageService } from "src/common/service/storage.service";
import { CreateExpenseDto } from "./dto/create-expense.dto";
import { Response } from "express";
import { UpdateExpenseDto } from "./dto/update-expense.dto";
import { InvoiceDocument } from "src/schema/invoice.schema";
import { AttachmentDocument } from "src/schema/attachment.schema";
import { PdfService } from "src/pdf/pdf.service";
export declare class ExpensesService {
    private readonly expenseModel;
    private readonly invoiceModel;
    private readonly attachmentModel;
    private readonly usersModel;
    private resService;
    private storageService;
    private pdfService;
    constructor(expenseModel: Model<ExpenseDocument>, invoiceModel: Model<InvoiceDocument>, attachmentModel: Model<AttachmentDocument>, usersModel: Model<UsersDocument>, resService: ResponseService, storageService: StorageService, pdfService: PdfService);
    private generateExpenseNumber;
    createExpense(userId: string, dto: CreateExpenseDto, res: Response, file?: Express.Multer.File): Promise<Response<any, Record<string, any>>>;
    findAllExpensesByUserId(res: Response, userId: string, page?: number, limit?: number, search?: string): Promise<Response<any, Record<string, any>>>;
    getExpenses(userId: string, res: Response, page?: number, limit?: number, search?: string, status?: string): Promise<Response<any, Record<string, any>>>;
    getExpenseById(userId: string, expenseId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    toBoolean(value: any): Promise<boolean | undefined>;
    updateExpense(userId: string, expenseId: string, dto: UpdateExpenseDto, file: Express.Multer.File | undefined, res: Response): Promise<Response<any, Record<string, any>>>;
    deleteExpense(userId: string, expenseId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    listExpenses(userId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    generateExpensePdf(userId: string, expenseId: string, res: Response): Promise<Response<any, Record<string, any>>>;
}
