import { PrismaService } from '../prisma/prisma.service.js';
import { StorageService } from '../storage/storage.service.js';
import { SmbService } from '../storage/smb.service.js';
export declare class NodesService {
    private readonly prisma;
    private readonly storageService;
    private readonly smbService;
    constructor(prisma: PrismaService, storageService: StorageService, smbService: SmbService);
    createFolder(name: string, parentId: string | null, userId: string): Promise<{
        id: string;
        parentId: string | null;
        name: string;
        type: string;
        sizeBytes: number;
        mimeType: string;
        createdAt: Date;
        updatedAt: Date;
        ownerId: string;
    }>;
    requestFileUpload(name: string, sizeBytes: number, parentId: string | null, mimeType: string, userId: string): Promise<{
        node: {
            id: string;
            parentId: string | null;
            name: string;
            type: string;
            sizeBytes: number;
            mimeType: string;
            createdAt: Date;
            updatedAt: Date;
        };
        uploadUrl: string;
    }>;
    getFileDownloadUrl(nodeId: string, userId: string): Promise<{
        downloadUrl: string;
    }>;
    listNodes(parentId: string | null, userId: string, tab?: string, search?: string): Promise<{
        id: string;
        parentId: null;
        name: string;
        type: string;
        sizeBytes: number;
        mimeType: string;
        createdAt: Date;
        updatedAt: Date;
        ownerId: string;
        isStarred: boolean;
    }[] | {
        id: string;
        parentId: string;
        name: any;
        type: string;
        sizeBytes: any;
        mimeType: string;
        createdAt: any;
        updatedAt: any;
        ownerId: string;
        isStarred: boolean;
    }[]>;
    getPermissions(nodeId: string, userId: string): Promise<({
        user: {
            email: string;
        } | null;
    } & {
        id: string;
        role: import("@prisma/client").$Enums.PermissionRole;
        createdAt: Date;
        updatedAt: Date;
        granteeType: import("@prisma/client").$Enums.GranteeType;
        expiresAt: Date | null;
        nodeId: string;
        granteeId: string | null;
    })[]>;
    updatePermission(nodeId: string, permissionId: string, role: any, userId: string): Promise<{
        id: string;
        role: import("@prisma/client").$Enums.PermissionRole;
        createdAt: Date;
        updatedAt: Date;
        granteeType: import("@prisma/client").$Enums.GranteeType;
        expiresAt: Date | null;
        nodeId: string;
        granteeId: string | null;
    }>;
    removePermission(nodeId: string, permissionId: string, userId: string): Promise<{
        id: string;
        role: import("@prisma/client").$Enums.PermissionRole;
        createdAt: Date;
        updatedAt: Date;
        granteeType: import("@prisma/client").$Enums.GranteeType;
        expiresAt: Date | null;
        nodeId: string;
        granteeId: string | null;
    }>;
    renameNode(id: string, name: string, userId: string): Promise<{
        success: boolean;
    }>;
    deleteNode(id: string, userId: string): Promise<{
        success: boolean;
    }>;
    restoreNode(id: string, userId: string): Promise<import("@prisma/client").Prisma.BatchPayload>;
    shareNode(id: string, email: string, userId: string): Promise<{
        id: string;
        role: import("@prisma/client").$Enums.PermissionRole;
        createdAt: Date;
        updatedAt: Date;
        granteeType: import("@prisma/client").$Enums.GranteeType;
        expiresAt: Date | null;
        nodeId: string;
        granteeId: string | null;
    }>;
    moveNode(id: string, newParentId: string | null, userId: string): Promise<{
        success: boolean;
    }>;
    hasEditorPermission(nodeId: string, userId: string): Promise<boolean>;
    getStarredIds(userId: string): Promise<any[]>;
    toggleStar(id: string, isStarred: boolean, userId: string): Promise<{
        success: boolean;
    }>;
    updateFolderColor(id: string, color: string, userId: string): Promise<import("@prisma/client").Prisma.BatchPayload>;
    getNotifications(userId: string): Promise<unknown>;
    markNotificationsRead(userId: string): Promise<{
        success: boolean;
    }>;
}
