import * as class_validator from 'class-validator';
import { ValidatorOptions } from 'class-validator/types/validation/ValidatorOptions';
import { EncounterReq } from './models/request/EncounterReq.js';
import './models/audit/AuditBase.js';
import './models/audit/AuditEventBase.js';
import './models/contact/Contact.js';
import './models/common/CommonTradingAs.js';
import './models/contact/Address.js';
import './models/common/CommonPostAddress.js';
import './models/contact/ContactType.js';
import './models/contact/GenericContact.js';
import './models/contact/RteArea.js';
import './models/contact/StoppingOfficer.js';
import './models/dangerous/DangerousCheckListBase.js';
import './models/dangerous/DangerousCheckListItemBase.js';
import './models/dangerous/DangerousCheckListItemDetailBase.js';
import './models/dangerous/DangerousContainerTypeBase.js';
import './models/defects/DefectProsecution.js';
import './models/common/CommonDeletion.js';
import './models/driver/Drivers.js';
import './models/minimum/Nationality.js';
import './models/payments/ActualPayment.js';
import './models/payments/PaymentReversalReason.js';
import './models/payments/PaymentStatus.js';
import './models/driver/DetailsOrigin.js';
import './models/driver/LicenceCategory.js';
import './models/driver/LicenceType.js';
import './models/journey/Journey.js';
import './models/journey/JourneyType.js';
import './models/journey/PortOfExit.js';
import './models/minimum/EncounterReason.js';
import './models/common/CommonCode.js';
import './models/minimum/EncounterTexts.js';
import './models/minimum/TextType.js';
import './models/minimum/EthnicityInfo.js';
import './models/minimum/ObservedEthnicityInfo.js';
import './models/minimum/CapturedEthnicity.js';
import './models/common/CommonDescription.js';
import './models/minimum/InspectionType.js';
import './models/minimum/Location.js';
import './models/minimum/Motor.js';
import './models/common/CommonVehicle.js';
import './models/trailer/PoliceDefect.js';
import './models/common/CommonVehicleWeights.js';
import './models/defects/Defect.js';
import './models/defects/Part.js';
import './models/defects/DefectSummary.js';
import './models/defects/SignificanceReason.js';
import './models/emissions/EmissionCheckBase.js';
import './models/emissions/FuelTypeBase.js';
import './models/notices/NoticeBase.js';
import './models/minimum/VehicleIdType.js';
import './models/common/CommonData.js';
import './models/notices/ExemptionConditionBaseType.js';
import './models/notices/NoticeClosureBaseType.js';
import './models/notices/NoticeType.js';
import './models/notices/NoticeTypeDetail.js';
import './models/notices/OffenceBaseType.js';
import './models/common/CommonVersion.js';
import './models/notices/Offences.js';
import './models/common/CommonOffence.js';
import './models/notices/PenaltyNotice.js';
import './models/notices/PenaltyNoticeStatus.js';
import './models/notices/ProhibitionClosureReasonBaseType.js';
import './models/notices/RemovalInstruction.js';
import './models/minimum/AxlesWeight.js';
import './models/minimum/BodyType.js';
import './models/minimum/Laden.js';
import './models/minimum/RoadsideVehicleType.js';
import './models/minimum/SpecialReturnCodeFlagType.js';
import './models/notices/ActualOffences.js';
import './models/notices/Offence.js';
import './models/notices/OffenceSanctionText.js';
import './models/common/CommonOffenceDetail.js';
import './models/notices/OffenceSeverityBand.js';
import './models/operator/Operator.js';
import './models/operator/ExistingOperatorDetail.js';
import './models/operator/ExistingTradingAs.js';
import './models/operator/RecordType.js';
import './models/operator/LicenceTypeCode.js';
import './models/operator/OCRSOperatorSnapshots.js';
import './models/operator/StateOfOpDisc.js';
import './models/roadworthiness/RoadWorthinessCheckList.js';
import './models/roadworthiness/RoadWorthinessCheckItem.js';
import './models/tax/TaxForm.js';
import './models/trailer/Trailer.js';

declare abstract class ValidatorBase {
    protected readonly encounterReq: Readonly<Partial<EncounterReq>>;
    protected constructor(encounterReq: Readonly<Partial<EncounterReq>>);
}
declare class EncounterSchema extends ValidatorBase {
    private validationOptions;
    private static readonly _defaultValidatorOptions;
    constructor(encounterReq: Partial<EncounterReq>, validationOptions?: ValidatorOptions);
    validate(): Promise<class_validator.ValidationError[]>;
    private initialiseRuntimeContext;
    private resolveEncounterType;
    private resolveExaminerOfficerType;
    private resolveRequestType;
    private hasValidationGroup;
}

export { EncounterSchema, ValidatorBase };
