import { RawBodyRequest } from '@nestjs/common';
import { Request, Response } from 'express';
import { DocumentCategory } from '@prisma/client';
import { DocumentsService } from './documents.service';
import { AuthenticatedUser } from '../../common/decorators/current-user.decorator';
declare class UploadDocumentDto {
    complexId: string;
    title: string;
    category?: DocumentCategory;
    folder?: string;
    isPublic?: boolean;
    filename: string;
    url: string;
    mimeType?: string;
    sizeBytes?: number;
    contentBase64?: string;
}
declare class AddVersionDto {
    filename: string;
    url: string;
    mimeType?: string;
    sizeBytes?: number;
    contentBase64?: string;
}
declare class RequestSignatureDto {
    signerId: string;
}
export declare class DocumentsController {
    private readonly service;
    constructor(service: DocumentsService);
    upload(user: AuthenticatedUser, dto: UploadDocumentDto): Promise<{
        versions: {
            id: string;
            createdAt: Date;
            version: number;
            url: string;
            filename: string;
            mimeType: string | null;
            sizeBytes: number | null;
            hash: string | null;
            documentId: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        category: import(".prisma/client").$Enums.DocumentCategory;
        title: string;
        isPublic: boolean;
        uploaderId: string;
        folder: string | null;
        latestVersionId: string | null;
    }>;
    addVersion(user: AuthenticatedUser, id: string, dto: AddVersionDto): Promise<{
        versions: {
            id: string;
            createdAt: Date;
            version: number;
            url: string;
            filename: string;
            mimeType: string | null;
            sizeBytes: number | null;
            hash: string | null;
            documentId: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        category: import(".prisma/client").$Enums.DocumentCategory;
        title: string;
        isPublic: boolean;
        uploaderId: string;
        folder: string | null;
        latestVersionId: string | null;
    }>;
    list(user: AuthenticatedUser, complexId?: string, category?: DocumentCategory): Promise<({
        versions: {
            id: string;
            createdAt: Date;
            version: number;
            url: string;
            filename: string;
            mimeType: string | null;
            sizeBytes: number | null;
            hash: string | null;
            documentId: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        category: import(".prisma/client").$Enums.DocumentCategory;
        title: string;
        isPublic: boolean;
        uploaderId: string;
        folder: string | null;
        latestVersionId: string | null;
    })[]>;
    findOne(user: AuthenticatedUser, id: string): Promise<{
        signatureRequests: ({
            signer: {
                id: string;
                email: string;
            };
        } & {
            id: string;
            createdAt: Date;
            status: import(".prisma/client").$Enums.SignatureStatus;
            expiresAt: Date | null;
            providerRef: string | null;
            provider: string;
            signedAt: Date | null;
            documentId: string;
            signingUrl: string | null;
            declinedAt: Date | null;
            signerId: string;
        })[];
        complex: {
            id: string;
            name: string;
            createdAt: Date;
            updatedAt: Date;
            city: string | null;
            country: string;
            status: string;
            tenantId: string;
            type: import(".prisma/client").$Enums.ComplexType;
            address: string | null;
            gpsLat: number | null;
            gpsLng: number | null;
        };
        versions: {
            id: string;
            createdAt: Date;
            version: number;
            url: string;
            filename: string;
            mimeType: string | null;
            sizeBytes: number | null;
            hash: string | null;
            documentId: string;
        }[];
    } & {
        id: string;
        createdAt: Date;
        updatedAt: Date;
        complexId: string;
        category: import(".prisma/client").$Enums.DocumentCategory;
        title: string;
        isPublic: boolean;
        uploaderId: string;
        folder: string | null;
        latestVersionId: string | null;
    }>;
    requestSignature(user: AuthenticatedUser, id: string, dto: RequestSignatureDto): Promise<{
        id: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.SignatureStatus;
        expiresAt: Date | null;
        providerRef: string | null;
        provider: string;
        signedAt: Date | null;
        documentId: string;
        signingUrl: string | null;
        declinedAt: Date | null;
        signerId: string;
    }>;
    stubSign(ref: string, res: Response): Promise<void>;
    callback(req: RawBodyRequest<Request>, headers: Record<string, string>): Promise<{
        id: string;
        createdAt: Date;
        status: import(".prisma/client").$Enums.SignatureStatus;
        expiresAt: Date | null;
        providerRef: string | null;
        provider: string;
        signedAt: Date | null;
        documentId: string;
        signingUrl: string | null;
        declinedAt: Date | null;
        signerId: string;
    } | {
        ok: boolean;
    }>;
    remove(user: AuthenticatedUser, id: string): Promise<{
        deleted: boolean;
    }>;
}
export {};
