import type { Request, Response } from 'express';
import { DocumentsService } from './services/documents.service';
import { UploadDocumentDto } from './dto/upload-document.dto';
import { UpdateDocumentDto } from './dto/update-document.dto';
import { ListDocumentsQueryDto } from './dto/list-documents.dto';
import { UnlockDocumentDto } from './dto/unlock-document.dto';
import { ListAccessLogQueryDto } from './dto/list-access-log.dto';
export declare class DocumentsController {
    private readonly service;
    private readonly logger;
    constructor(service: DocumentsService);
    private getCurrentUserId;
    private getRequestContext;
    upload(dto: UploadDocumentDto, file: Express.Multer.File, req: Request): Promise<import("./entities/document.entity").Document>;
    analytics(req: Request): Promise<{
        total_docs: number;
        active_docs: number;
        total_opens: number;
        failed_attempts: number;
    }>;
    usersForRoles(roleIds: string, req: Request): Promise<{
        id: number;
        name: string;
        email: string;
        role_id: number;
    }[]>;
    list(q: ListDocumentsQueryDto, req: Request): Promise<{
        data: import("./entities/document.entity").Document[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    findOne(id: number, req: Request): Promise<import("./entities/document.entity").Document>;
    update(id: number, dto: UpdateDocumentDto, req: Request): Promise<import("./entities/document.entity").Document>;
    remove(id: number, req: Request): Promise<{
        ok: true;
    }>;
    requestOtp(id: number, req: Request): Promise<{
        ok: true;
        expires_in_minutes: number;
    }>;
    unlock(id: number, dto: UnlockDocumentDto, req: Request): Promise<{
        token: string;
        view_url: string;
        download_url: string | null;
        expires_in_minutes: number;
    }>;
    view(id: number, token: string, req: Request, res: Response): Promise<void>;
    download(id: number, token: string, req: Request, res: Response): Promise<void>;
    getAccessLog(id: number, q: ListAccessLogQueryDto, req: Request): Promise<{
        data: import("./entities/document-access-log.entity").DocumentAccessLog[];
        meta: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
    }>;
    exportAccessLog(id: number, req: Request, res: Response): Promise<void>;
}
