import { Repository } from 'typeorm';
import { AuditReportImage } from '../entities/audit-report-image.entity';
import { ReportBuilderService } from './report-builder.service';
export declare function uprightImage(buf: Buffer, ext: 'jpg' | 'png'): Promise<Buffer>;
export interface ImageRef {
    id: number;
    file: string;
    caption: string;
    w: number;
    h: number;
    mime: string;
    src?: string;
}
export declare function detectImage(buf: Buffer): {
    mime: string;
    ext: string;
    w: number;
    h: number;
} | null;
export declare class ReportImageService {
    private readonly repo;
    private readonly builder;
    constructor(repo: Repository<AuditReportImage>, builder: ReportBuilderService);
    baseDir(): string;
    private maxBytes;
    private maxPerReport;
    private view;
    list(reportId: number, userId: number, q?: {
        section_key?: string;
        clause_id?: number;
    }): Promise<{
        id: number;
        report_id: number;
        section_key: string;
        clause_id: number | null;
        original_name: string;
        mime: string;
        width: number;
        height: number;
        size_bytes: number;
        caption: string;
        sort_order: number;
        created_at: Date;
    }[]>;
    upload(reportId: number, userId: number, files: {
        originalname: string;
        buffer: Buffer;
        size: number;
    }[], dto: {
        section_key?: string;
        clause_id?: number | string;
        caption?: string;
    }): Promise<{
        id: number;
        report_id: number;
        section_key: string;
        clause_id: number | null;
        original_name: string;
        mime: string;
        width: number;
        height: number;
        size_bytes: number;
        caption: string;
        sort_order: number;
        created_at: Date;
    }[]>;
    update(reportId: number, imageId: number, userId: number, dto: {
        caption?: string;
        section_key?: string;
    }): Promise<{
        id: number;
        report_id: number;
        section_key: string;
        clause_id: number | null;
        original_name: string;
        mime: string;
        width: number;
        height: number;
        size_bytes: number;
        caption: string;
        sort_order: number;
        created_at: Date;
    }>;
    reorder(reportId: number, userId: number, ids: number[]): Promise<{
        ok: boolean;
    }>;
    normalizeStoredPictures(): Promise<{
        checked: number;
        fixed: number;
    }>;
    remove(reportId: number, imageId: number, userId: number): Promise<{
        ok: boolean;
    }>;
    fileFor(reportId: number, imageId: number, userId: number): Promise<{
        abs: string;
        mime: string;
    }>;
    read(ref: {
        file: string;
        mime?: string;
    }): {
        buffer: Buffer;
        type: 'jpg' | 'png';
    } | null;
    inline(vm: any): any;
}
