import { PrismaService } from '../../database/prisma.service';
export type UploadEntityType = 'tmp' | 'shop' | 'coupon' | 'lucky-draw' | 'template' | 'business-type';
export type UploadPurpose = 'active' | 'background' | 'sticker' | 'assets';
type UploadOpts = {
    shopId?: string;
    entityType: UploadEntityType;
    entityId?: string;
    purpose: UploadPurpose;
    ext: string;
    buffer: Buffer;
};
export declare class UploadsService {
    private readonly prisma;
    constructor(prisma: PrismaService);
    private baseDir;
    private toRelDir;
    private publicPath;
    private fsPathFromPublic;
    private assertEntityBelongsToShop;
    saveImage(opts: UploadOpts): Promise<string>;
    private tryParseTmpShopPath;
    private extractShopIdFromDestRelDir;
    private relocateTmp;
    moveIfTmp(publicPath: string, destRelDir: string): Promise<string>;
    copyIfTmp(publicPath: string, destRelDir: string): Promise<string>;
    rewriteDesignAssets(shopId: string, design: unknown, dest: {
        bgRelDir: string;
        stickerRelDir: string;
    }, opts?: {
        mode?: 'move' | 'copy';
    }): Promise<unknown>;
}
export {};
