import { DataSource, Repository } from 'typeorm';
import { ProgramType } from 'src/common/entities/program-type.entity';
import { ProgramTemplateRepository } from './program-template.repository';
import { TemplateQuestionRepository } from 'src/template-question/template-question.repository';
import { CreateProgramTemplateDto } from './dto/create-program-template.dto';
import { UpdateProgramTemplateDto } from './dto/update-program-template.dto';
import { FilterProgramTemplateDto } from './dto/filter-program-template.dto';
import { UpdateTemplateFormDto } from './dto/update-template-form.dto';
import { AppLoggerService } from 'src/common/services/logger.service';
import { ProgramTemplate } from 'src/common/entities/program-template.entity';
export declare class ProgramTemplateService {
    private readonly programTemplateRepo;
    private readonly templateQuestionRepo;
    private readonly logger;
    private readonly programTypeRepo;
    private readonly dataSource;
    constructor(programTemplateRepo: ProgramTemplateRepository, templateQuestionRepo: TemplateQuestionRepository, logger: AppLoggerService, programTypeRepo: Repository<ProgramType>, dataSource: DataSource);
    findAll(filters: FilterProgramTemplateDto): Promise<{
        data: ProgramTemplate[];
        pagination: {
            totalPages: number;
            pageNumber: number;
            pageSize: number;
            totalRecords: number;
        };
    }>;
    findById(id: number): Promise<ProgramTemplate>;
    findByProgramType(programTypeId: number): Promise<ProgramTemplate[]>;
    create(createDto: CreateProgramTemplateDto): Promise<ProgramTemplate>;
    update(id: number, updateDto: UpdateProgramTemplateDto): Promise<ProgramTemplate>;
    delete(id: number): Promise<{
        deleted: boolean;
    }>;
    publish(id: number, updatedBy?: number): Promise<ProgramTemplate>;
    archive(id: number, updatedBy?: number): Promise<ProgramTemplate>;
    updateTemplateForm(dto: UpdateTemplateFormDto, userId: number): Promise<{
        message: string;
        data: {
            programTemplateId: number;
            sectionsDeleted: number;
            sectionsUpdated: number;
            sectionsAdded: number;
            questionsDeleted: number;
            questionsUpdated: number;
            questionsAdded: number;
        };
    }>;
}
