import { DataSource } from 'typeorm';
import { ChecklistTemplate } from '../entities/checklist-template.entity';
import { ChecklistTemplateItem } from '../entities/checklist-template-item.entity';
import { ChecklistTemplateFile } from '../entities/checklist-template-file.entity';
import { AuditChecklist, AuditChecklistStatus } from '../entities/audit-checklist.entity';
import { AuditChecklistItem } from '../entities/audit-checklist-item.entity';
import { AuditScheduleRow } from '../../audit-schedules/entities/audit-schedule-row.entity';
import { PreviousNcService } from '../../previous-nc/services/previous-nc.service';
import { ChecklistStorageService } from './checklist-storage.service';
import { ChecklistsService } from './checklists.service';
import { ChecklistFileParserService } from './checklist-file-parser.service';
export declare class ChecklistTemplatesAccessService {
    private readonly ds;
    private readonly nc;
    private readonly storage;
    private readonly checklists;
    private readonly parser;
    constructor(ds: DataSource, nc: PreviousNcService, storage: ChecklistStorageService, checklists: ChecklistsService, parser: ChecklistFileParserService);
    isAdminViaNc(userId: number): Promise<boolean>;
    isAdmin(userId: number): Promise<boolean>;
    private load;
    private canSee;
    private assertSee;
    private assertEdit;
    assertCanEdit(id: number, userId: number): Promise<void>;
    private isAssignedToAudit;
    assertChecklistAccess(checklistId: number, userId: number): Promise<AuditChecklist>;
    assertItemAccess(itemId: number, userId: number): Promise<void>;
    private templateStandardIds;
    private auditScope;
    listVisible(userId: number): Promise<{
        is_admin: boolean;
        checklists: {
            id: number;
            name: string;
            created_by: number | null;
            can_edit: boolean;
            standard_id: number | null;
            standard_ids: number[];
            is_shareable: boolean;
            items: {
                id: number;
                item_text: string;
                category: string | null;
                sort_order: number;
                is_active: boolean;
            }[];
            files: {
                id: number;
                original_name: string;
                size_bytes: number;
                mime: string | null;
                created_at: Date;
            }[];
            shared_user_ids: number[];
        }[];
    }>;
    rename(userId: number, id: number, name: string): Promise<ChecklistTemplate>;
    setShareable(userId: number, id: number, isShareable: boolean): Promise<{
        id: number;
        is_shareable: boolean;
    }>;
    setStandards(userId: number, id: number, standardIds: number[]): Promise<{
        id: number;
        standard_ids: number[];
    }>;
    remove(userId: number, id: number): Promise<void>;
    addItem(userId: number, templateId: number, text: string, category?: string): Promise<ChecklistTemplateItem>;
    updateItem(userId: number, itemId: number, patch: {
        item_text?: string;
        category?: string | null;
        is_active?: boolean;
        sort_order?: number;
    }): Promise<ChecklistTemplateItem>;
    deleteItem(userId: number, itemId: number): Promise<{
        removed: boolean;
        hidden: boolean;
    }>;
    setShares(adminId: number, templateId: number, userIds: number[]): Promise<{
        template_id: number;
        shared_user_ids: number[];
    }>;
    uploadFile(userId: number, templateId: number, file: any): Promise<{
        file: ChecklistTemplateFile;
        format: string;
        supported: boolean;
        items_added: number;
        items_skipped: number;
    }>;
    openFile(userId: number, fileId: number): Promise<{
        filename: string;
        stream: import("stream").Readable;
        size: number;
        mimeType: string;
    }>;
    deleteFile(userId: number, fileId: number): Promise<{
        removed: boolean;
    }>;
    availableForAudit(rowId: number, userId: number): Promise<(ChecklistTemplate & {
        is_mine: boolean;
        owner_name: string | null;
        shared_with_me: boolean;
    })[]>;
    visibleChecklists(rowId: number, userId: number): Promise<AuditChecklist[]>;
    buildForUser(rowId: number, userId: number, dto: {
        standard_id: number;
        template_item_ids: number[];
    }): Promise<{
        built_by: number;
        id: number;
        audit_schedule_row_id: number;
        audit_schedule_row: AuditScheduleRow;
        company_id: number;
        company: import("../../companies/entities/company.entity").Company;
        standard_id: number;
        standard: import("../../standards/entities/standard.entity").Standard;
        status: AuditChecklistStatus;
        submitted_by: number | null;
        submitted_by_user: import("../../user/entities/user.entity").User | null;
        submitted_at: Date | null;
        client_notified_at: Date | null;
        client_submitted_at: Date | null;
        completed_at: Date | null;
        notify_emails: string | null;
        client_message: string | null;
        due_date: string | null;
        items: AuditChecklistItem[];
        created_at: Date;
        updated_at: Date;
    }>;
    private assertDraftEdit;
    addDraftItems(userId: number, checklistId: number, templateItemIds: number[]): Promise<{
        added: number;
    }>;
    removeDraftItem(userId: number, checklistId: number, templateItemId: number): Promise<{
        removed: boolean;
    }>;
}
