onfido-sdk-ui
Version:
JavaScript SDK view layer for Onfido identity verification
116 lines (99 loc) • 3 kB
text/typescript
const STEP_WELCOME = 'welcome'
const STEP_USER_CONSENT = 'userConsent'
const STEP_DOCUMENT = 'document'
const STEP_POA = 'poa'
const STEP_FACE = 'face'
const STEP_COMPLETE = 'complete'
const STEP_AUTH = 'auth'
const STEP_CROSS_DEVICE_SESSION_INTRO = 'crossDeviceSessionIntro'
export type StepTypes =
| typeof STEP_WELCOME
| typeof STEP_USER_CONSENT
| typeof STEP_DOCUMENT
| typeof STEP_POA
| typeof STEP_FACE
| typeof STEP_COMPLETE
| typeof STEP_AUTH
| typeof STEP_CROSS_DEVICE_SESSION_INTRO
export type DocumentTypes =
| 'passport'
| 'driving_licence'
| 'national_identity_card'
| 'residence_permit'
export type PoaTypes =
| 'bank_building_society_statement'
| 'utility_bill'
| 'council_tax'
| 'benefit_letters'
| 'government_letter'
export type RequestedVariant = 'standard' | 'video'
export type DocumentTypeConfig =
| boolean
| {
country: string | null
}
export type CaptureOptions = {
requestedVariant?: RequestedVariant
uploadFallback?: boolean
useUploader?: boolean
useWebcam?: boolean
}
export type StepOptionWelcome = {
title?: string
descriptions?: string[]
nextButton?: string
}
export type StepOptionAuth = { retries?: number }
export type StepOptionDocument = {
documentTypes?: Partial<Record<DocumentTypes, DocumentTypeConfig>>
forceCrossDevice?: boolean
photoCaptureFallback?: never // for cross-compatibility with StepOptionFace in withCrossDeviceWhenNoCamera
showCountrySelection?: boolean
useLiveDocumentCapture?: boolean
} & CaptureOptions
export type StepOptionPoA = {
country?: string
documentTypes?: Partial<Record<PoaTypes, boolean>>
}
export type StepOptionFace = {
forceCrossDevice?: never // for cross-compatibility with StepOptionDocument in withCrossDeviceWhenNoCamera
photoCaptureFallback?: boolean
useMultipleSelfieCapture?: boolean
} & CaptureOptions
export type StepOptionComplete = {
message?: string
submessage?: string
}
type StepOptionsMap = {
welcome: StepOptionWelcome
userConsent: never
auth: StepOptionAuth
crossDeviceSessionIntro: never
document: StepOptionDocument
poa: StepOptionPoA
face: StepOptionFace
complete: StepOptionComplete
}
export type StepConfigMap = {
[Type in StepTypes]: {
type: Type
options?: StepOptionsMap[Type]
}
}
export type StepConfigWelcome = StepConfigMap['welcome']
export type StepConfigUserConsent = StepConfigMap['userConsent']
export type StepConfigAuth = StepConfigMap['auth']
export type StepConfigCrossDeviceSessionIntro = StepConfigMap['crossDeviceSessionIntro']
export type StepConfigDocument = StepConfigMap['document']
export type StepConfigPoa = StepConfigMap['poa']
export type StepConfigFace = StepConfigMap['face']
export type StepConfigComplete = StepConfigMap['complete']
export type StepConfig =
| StepConfigWelcome
| StepConfigUserConsent
| StepConfigDocument
| StepConfigPoa
| StepConfigFace
| StepConfigComplete
| StepConfigAuth
| StepConfigCrossDeviceSessionIntro