import { InvoiceService } from "./invoice.service";
import { CreateInvoiceDto } from "./dto/create-invoice.dto";
import { Response } from "express";
import { InvoiceStatus } from "src/common/constant/enum.constant";
import { SendInvoiceEmailDto } from "./dto/send-invoice.dto";
import { MarkInvoicePaymentDto } from "./dto/mark-paid.dto";
export declare class InvoiceController {
    private readonly invoiceService;
    constructor(invoiceService: InvoiceService);
    create(req: Request, files: Express.Multer.File[], data: CreateInvoiceDto, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
    updateInvoice(user: any, invoiceId: string, data: CreateInvoiceDto, files: Express.Multer.File[], res: Response): Promise<Response<any, Record<string, any>>>;
    deleteInvoice(req: Request, id: string, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
    updateInvoiceStatus(invoiceId: string, status: InvoiceStatus, res: Response): Promise<Response<any, Record<string, any>>>;
    getInvoices(res: Response, user: any, page?: number, limit?: number, search?: string, status?: string): Promise<Response<any, Record<string, any>>>;
    getInvoiceById(res: Response, invoiceId: string): Promise<Response<any, Record<string, any>>>;
    downloadInvoicePdf(id: string, templateId: string | undefined, res: Response): Promise<Response<any, Record<string, any>>>;
    sendInvoiceEmail(invoiceId: string, dto: SendInvoiceEmailDto, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
    sendInvoiceDueReminder(invoiceId: string, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
    sendInvoicePaidEmail(invoiceId: string, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
    getTemplateImages(invoiceId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    markPayment(invoiceId: string, dto: MarkInvoicePaymentDto, req: any, res: Response, user: any): Promise<Response<any, Record<string, any>>>;
}
