@@ -195,6 +195,11 @@ type ValidationErrorResponse = {
195195 }
196196}
197197
198+ type ValidationMetadataDimension = {
199+ w: number
200+ h: number
201+ }
202+
198203function isRecord(value : unknown ): value is Record <string , unknown > {
199204 return typeof value === ' object' && value !== null
200205}
@@ -250,6 +255,33 @@ function isNullableString(value: unknown): value is string | null {
250255 return value === null || typeof value === ' string'
251256}
252257
258+ function isValidationStatusInfo(value : unknown ): value is ValidationStatusInfo {
259+ if (! isRecord (value )) {
260+ return false
261+ }
262+
263+ return (value .id === undefined || typeof value .id === ' number' )
264+ && (value .label === undefined || isString (value .label ))
265+ }
266+
267+ function isValidationModificationInfo(value : unknown ): value is ValidationModificationInfo {
268+ if (! isRecord (value )) {
269+ return false
270+ }
271+
272+ return (value .status === undefined || typeof value .status === ' number' )
273+ && (value .valid === undefined || typeof value .valid === ' boolean' )
274+ }
275+
276+ function isValidationMetadataDimension(value : unknown ): value is ValidationMetadataDimension {
277+ if (! isRecord (value )) {
278+ return false
279+ }
280+
281+ return typeof value .w === ' number' && Number .isFinite (value .w )
282+ && typeof value .h === ' number' && Number .isFinite (value .h )
283+ }
284+
253285function isRequestedBy(value : unknown ): value is ValidationFileRecord [' requested_by' ] {
254286 if (! isRecord (value )) {
255287 return false
@@ -261,7 +293,15 @@ function isValidationMetadata(value: unknown): value is NonNullable<ValidationFi
261293 if (! isRecord (value )) {
262294 return false
263295 }
264- return isString (value .extension ) && typeof value .p === ' number'
296+
297+ if (! isString (value .extension ) || typeof value .p !== ' number' ) {
298+ return false
299+ }
300+
301+ return (value .d === undefined || (Array .isArray (value .d ) && value .d .every (isValidationMetadataDimension )))
302+ && (value .original_file_deleted === undefined || typeof value .original_file_deleted === ' boolean' )
303+ && (value .pdfVersion === undefined || isString (value .pdfVersion ))
304+ && (value .status_changed_at === undefined || isString (value .status_changed_at ))
265305}
266306
267307function isValidationSettings(value : unknown ): value is NonNullable <ValidationFileRecord [' settings' ]> {
@@ -292,6 +332,11 @@ function isSignerDetailRecord(value: unknown): value is SignerDetailRecord {
292332 && isString (value .request_sign_date )
293333 && typeof value .me === ' boolean'
294334 && Array .isArray (value .visibleElements )
335+ && (value .signature_validation === undefined || isValidationStatusInfo (value .signature_validation ))
336+ && (value .certificate_validation === undefined || isValidationStatusInfo (value .certificate_validation ))
337+ && (value .modification_validation === undefined || isValidationModificationInfo (value .modification_validation ))
338+ && (value .crl_validation === undefined || isString (value .crl_validation ))
339+ && (value .isLibreSignRootCA === undefined || typeof value .isLibreSignRootCA === ' boolean' )
295340}
296341
297342function isValidatedChildFileRecord(value : unknown ): value is ValidatedChildFileRecord {
0 commit comments