import { Model, Types } from "mongoose";
import { Attachment, AttachmentDocument } from "src/schema/attachment.schema";
import { StoragesService } from "src/storage/storage.service";
import { ResponseService } from "src/common/service/response.service";
import { Response } from "express";
export declare class AttachmentService {
    private attachmentModel;
    private readonly s3StorageService;
    private readonly resService;
    constructor(attachmentModel: Model<AttachmentDocument>, s3StorageService: StoragesService, resService: ResponseService);
    uploadAttachment(file: Express.Multer.File, options: {
        entityType: "expense" | "invoice" | "estimate" | "profile";
        entityId: string;
        userId: string;
    }): Promise<import("mongoose").Document<unknown, {}, AttachmentDocument, {}, {}> & Attachment & Document & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    uploadBufferAttachment(buffer: Buffer, fileName: string, mimeType: string, options: {
        entityType: "expense" | "invoice" | "estimate" | "profile" | "invoice-template" | "estimate-template";
        entityId: string;
        userId: string;
    }): Promise<import("mongoose").Document<unknown, {}, AttachmentDocument, {}, {}> & Attachment & Document & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    }>;
    deleteExistingInvoiceTemplates(invoiceId: string, userId: string): Promise<void>;
    deleteExistingEstimateTemplates(estimateId: string, userId: string): Promise<void>;
    getAttachments(entityType: string, entityId: string): Promise<(import("mongoose").Document<unknown, {}, AttachmentDocument, {}, {}> & Attachment & Document & {
        _id: Types.ObjectId;
    } & {
        __v: number;
    })[]>;
    deleteAttachment(userId: string, attachmentId: string, res: Response): Promise<Response<any, Record<string, any>>>;
    getListAttachments(): Promise<{
        Key?: string;
    }[]>;
    private extractKeyFromUrl;
}
