onfido-sdk-ui
Version:
JavaScript SDK view layer for Onfido identity verification
309 lines (253 loc) • 9.42 kB
TypeScript
import type { CaptureRunEvents } from './Events';
export declare const backwardCompatibility: (parameter: SdkParameters) => SdkParameters;
declare type CaptureModule = HostedModule | ExternalModule;
declare enum CaptureModuleType {
HOSTED = "hosted",
EXTERNAL = "external"
}
declare type ChallengePayload = {
type: 'recite';
query: number[];
} | {
type: 'movement';
query: string;
};
export declare type ClassicSdkParameters = {
steps: LegacyStepDefinition[];
} & TokenParameters;
declare type Common = {
sdk_metadata: string;
sdk_source: string;
sdk_version: string;
};
declare type CommonSdkParameters = {
containerEl?: HTMLElement;
containerId?: string;
onError?: ErrorCallback_2;
onComplete?: (data: CompleteData) => void;
showExitButton?: boolean;
onUserExit?: UserExitCallback;
onExternalLink?: ExternalLinkCallback;
enterpriseFeatures?: EnterpriseFeatureParameter;
theme?: Theme;
customUI?: ThemeConfig;
language?: string | LegacyLanguageParameter;
translations?: Translations;
};
declare type CompleteData = Record<string, unknown>;
declare type CrossDeviceMethod = 'copy_link' | 'qr_code' | 'sms';
declare type CrossDevicePolicy = 'enable' | 'force' | 'disable';
declare type CrossDeviceSdkParameters = CommonSdkParameters & {
roomId?: string;
};
declare type CustomCallbackFormatterType = 'raw' | 'formData';
declare type DocumentImageResponse = {
applicant_id: string;
type: DocumentType_2;
side: DocumentSides;
issuing_country: string;
sdk_warnings: ImageQualityWarnings & {
image_quality: {
quality: string;
breakdown: {
document: {
has_document: boolean;
detection_score: number;
} & Score;
has_document: boolean;
cutoff: {
has_cutoff: boolean;
score: number;
} & Score;
blur: {
has_blur: boolean;
score: number;
blur_model: string;
} & Score;
glare: {
score: number;
bbox: [number, number, number, number];
has_glare: boolean;
threshold: number;
glare_model: string;
};
barcode: {
result: string;
properties: Record<string, string>;
};
};
image_quality_uuid: string;
};
};
classification: {
issuing_country: null;
document_version: null;
side?: DocumentSides;
document_type?: DocumentType_2;
};
document_features: {
has_nfc: boolean;
};
} & UploadFileResponse;
declare type DocumentSides = 'front' | 'back';
declare type DocumentType_2 = 'driving_licence' | 'national_identity_card' | 'residence_permit' | 'passport';
declare type EnterpriseCallbackResponse<T> = {
continueWithOnfidoSubmission?: boolean;
onfidoSuccessResponse?: T;
};
declare type EnterpriseFeatureCallback = {
useCustomizedApiRequests?: boolean;
formatter?: CustomCallbackFormatterType;
onSubmitDocument?: (data: FormData | SubmitDocument) => Promise<EnterpriseCallbackResponse<DocumentImageResponse>>;
onSubmitSelfie?: (data: FormData | SubmitSelfie) => Promise<EnterpriseCallbackResponse<UploadFileResponse>>;
onSubmitVideo?: (data: FormData | SubmitVideo) => Promise<EnterpriseCallbackResponse<FaceVideoResponse>>;
};
declare type EnterpriseFeatureParameter = EnterpriseFeatures & EnterpriseFeatureCallback;
declare type EnterpriseFeatures = {
hideOnfidoLogo?: boolean;
cobrand?: {
text?: string;
};
logoCobrand?: {
lightLogoSrc?: string;
darkLogoSrc?: string;
};
};
declare type ErrorCallback_2 = (error: {
type: SdkErrorTypes;
message: string;
exception?: Error | unknown;
}) => void;
declare type Event_2<T extends string> = {
type: T;
};
declare type ExternalLinkCallback = (url: string) => void;
declare type ExternalModule = {
url: string;
} & ModuleType<CaptureModuleType.EXTERNAL>;
declare type FaceVideoResponse = {
challenge: ChallengePayload[];
languages: VideoChallengeLanguage[];
} & UploadFileResponse;
export declare type Handle = {
addEventListener: <EventName extends keyof CaptureRunEvents>(eventName: EventName, listener: Listener<CaptureRunEvents[EventName]>) => void;
removeEventListener: <EventName extends keyof CaptureRunEvents>(eventName: EventName, listener: Listener<CaptureRunEvents[EventName]>) => void;
tearDown: () => Promise<void>;
version?: string;
};
declare type HostedModule = {
version?: string;
module: string;
} & ModuleType<CaptureModuleType.HOSTED>;
declare type ImageQualityValidationTypes = 'detect_barcode' | 'detect_document' | 'detect_cutoff' | 'detect_glare' | 'detect_blur';
declare type ImageQualityWarnings = Partial<Record<ImageQualityValidationTypes, {
valid: boolean;
}>>;
declare type LegacyLanguageParameter = {
locale?: string;
phrases?: Record<string, string>;
mobilePhrases?: Record<string, string>;
direction?: LocaleDirection;
};
declare type LegacyStepDefinition = LegacyStepType | StepDefinition;
declare type LegacyStepType = 'welcome' | 'complete' | 'face' | 'consent' | 'document' | 'poa';
declare type Listener<E extends Event_2<any>> = (e: E) => void;
declare type LocaleDirection = 'ltr' | 'rtl';
declare type ModuleType<T extends CaptureModuleType> = {
type: T;
};
export declare const Onfido: OnfidoApi;
export declare type OnfidoApi = {
init: (parameter: SdkParameters) => Handle;
};
declare type Score = {
min: number;
max: number;
threshold: number;
};
declare type SdkErrorTypes = 'invalid_token' | 'expired_token' | 'expired_trial' | 'geoblocked_request' | 'permissions_unavailable' | 'exception' | 'unsupported' | 'unsupported_feature' | 'invalid_sdk_parameter' | 'restart' | 'desktop' | 'unsupported_sdk_version' | 'no_camera' | 'user_consent_denied' | 'uncaught_fetch_error' | 'api_error' | 'cross_device_verification_invalid' | 'cross_device_verification_abort' | 'workflow_abandoned' | 'workflow_error' | 'workflow_input_error' | 'cross_device_desktop_unavailable' | 'cross_device_connection_lost';
export declare type SdkParameters = StudioSdkParameters | ClassicSdkParameters | CrossDeviceSdkParameters;
declare type StepDefinition = {
type: LegacyStepType | string;
options?: Record<string, unknown>;
module?: CaptureModule;
/**
* the key used to serialize the output for onComplete
*/
key?: string;
};
export declare type StudioSdkParameters = {
workflowRunId: string;
disableWelcomeScreen?: boolean;
disableCompleteScreen?: boolean;
onBiometricTokenGenerated?: (customerUserHash: string, biometricToken: string) => void;
onBiometricTokenRequested?: (customerUserHash: string) => Promise<string>;
} & TokenParameters;
declare type SubmitDocument = {
file: Blob;
side: DocumentSides;
type: string;
sdk_validations: string;
} & Common;
declare type SubmitSelfie = {
file: Blob;
snapshot: {
blob: Blob;
filename: string;
};
};
declare type SubmitVideo = {
file: Blob;
challenge: string;
challenge_id: string;
challenge_switch_at: number | undefined;
languages: string;
};
declare type Theme = {
name: 'light' | 'dark';
config?: ThemeConfig;
};
declare type ThemeConfig = Record<string, any>;
declare type TokenParameters = {
token: string;
language?: string | LegacyLanguageParameter;
translations?: Translations;
theme?: Theme;
/***
* You can change the default country for the SMS number input by passing the
* smsNumberCountryCode option when the SDK is initialized. The value should
* be a string containing a 2-character ISO Country code. If empty, the SMS
* number country code will default to GB.
*/
smsNumberCountryCode?: string;
userDetails?: UserDetails;
_crossDeviceLinkMethods?: CrossDeviceMethod[];
crossDeviceClientIntroProductLogoSrc?: string;
crossDevicePolicy?: CrossDevicePolicy;
disableAnalytics?: boolean;
disableAnalyticsCookies?: boolean;
} & CommonSdkParameters;
declare type TranslationItem<T> = T | (() => Promise<T>);
declare type Translations<T = unknown> = Record<string, TranslationItem<T>>;
declare type UploadFileResponse = {
id: string;
created_at: string;
file_name: string;
file_type: string;
file_size: number;
href: string;
download_href: string;
};
declare enum UserAction {
USER_EXIT = "user_exit",
USER_CONSENT_DENIED = "user_consent_denied"
}
declare type UserDetails = {
smsNumber?: string;
};
declare type UserExitCallback = (action: UserAction) => void;
declare type VideoChallengeLanguage = {
source: string;
language_code: string;
};
export { }