import { DataSource } from 'typeorm';
import { TemplateQuestionRepository } from './template-question.repository';
import { CreateTemplateQuestionDto } from './dto/create-template-question.dto';
import { UpdateTemplateQuestionDto } from './dto/update-template-question.dto';
import { FilterTemplateQuestionDto } from './dto/filter-template-question.dto';
import { CloneQuestionsDto } from './dto/clone-questions.dto';
import { AppLoggerService } from 'src/common/services/logger.service';
import { MasterQuestionRepository } from 'src/master-question/master-question.repository';
import { TemplateFormSectionRepository } from 'src/template-form-section/template-form-section.repository';
import { TemplateQuestion } from 'src/common/entities/template-question.entity';
export declare class TemplateQuestionService {
    private readonly templateQuestionRepo;
    private readonly masterQuestionRepo;
    private readonly templateFormSectionRepo;
    private readonly logger;
    private readonly dataSource;
    constructor(templateQuestionRepo: TemplateQuestionRepository, masterQuestionRepo: MasterQuestionRepository, templateFormSectionRepo: TemplateFormSectionRepository, logger: AppLoggerService, dataSource: DataSource);
    findAll(filters: FilterTemplateQuestionDto): Promise<{
        data: TemplateQuestion[];
        pagination: {
            totalPages: number;
            pageNumber: number;
            pageSize: number;
            totalRecords: number;
        };
    }>;
    findById(id: number): Promise<TemplateQuestion>;
    findByTemplateSection(templateFormSectionId: number): Promise<TemplateQuestion[]>;
    findByProgramTemplate(programTemplateId: number): Promise<TemplateQuestion[]>;
    create(createDto: CreateTemplateQuestionDto): Promise<TemplateQuestion>;
    update(id: number, updateDto: UpdateTemplateQuestionDto): Promise<TemplateQuestion>;
    delete(id: number, userId?: number): Promise<{
        deleted: boolean;
    }>;
    cloneQuestions(cloneDto: CloneQuestionsDto): Promise<{
        success: boolean;
        clonedQuestions: number;
        skipped: number;
        skippedDetails: any[];
        questions: any[];
    }>;
    private generateUniqueQuestionCode;
}
