import { Question, FormSection } from 'src/common/entities';
import { RegistrationAnswerDto } from 'src/registration/dto/create-registration.dto';
import { LookupDataRepository } from 'src/lookup-data/lookup-data.repository';
import { UserRepository } from 'src/user/user.repository';
import { AppLoggerService } from './logger.service';
import { AwsS3Service } from './awsS3.service';
type QuestionMapping = {
    question: Question;
    formSectionId: number | null;
    programQuestionFormSection: FormSection | null;
};
export declare class RegistrationAnswerValidationService {
    private readonly lookupDataRepository;
    private readonly userRepository;
    private readonly logger;
    private readonly awsS3Service;
    constructor(lookupDataRepository: LookupDataRepository, userRepository: UserRepository, logger: AppLoggerService, awsS3Service: AwsS3Service);
    private isAnswerEmpty;
    validateSectionCompleteness(answers: RegistrationAnswerDto[], questionMappings: QuestionMapping[], formSectionId: number, context?: {
        program?: any;
        session?: any;
        registration?: any;
    }): void;
    private validateSingleSection;
    validateAllSectionsCompleteness(answers: RegistrationAnswerDto[], questionMappings: QuestionMapping[]): void;
    validateAnswers(answers: RegistrationAnswerDto[], questionMappings: QuestionMapping[], context?: {
        program?: any;
        session?: any;
        registration?: any;
    }): Promise<void>;
    private fetchLookupContext;
    private validateAnswerByQuestion;
    private buildQuestionIdToBindingKeyMap;
    private getSubsections;
    private checkDependencyWithType;
    private isDependencySatisfied;
    private compareNumericMaybeArray;
    private compareNumericOrYearRange;
    private compareValues;
    private addTimeUnit;
    private formatDate;
}
export {};
