declare enum GenderType { Male = "male", Female = "female" } declare enum PreferredLanguage { English = "English", Hindi = "Hindi", German = "German", French = "French", Spanish = "Spanish", Arabic = "Arabic", Italian = "Italian" } interface Step { type: StepType; value?: any; order?: number; isVisible?: boolean; onStepComplete?: (value: any) => Promise | void; } type Gender = "male" | "female"; type StepType = "email" | "name" | "height" | "gender"; type PreferredLanguageType = `${PreferredLanguage}`; interface StyleConfig { base?: { brandColor?: string; backgroundColor?: string; primaryColor?: string; secondaryColor?: string; baseTextColor?: string; baseFontSize?: string; baseFontFamily?: string; }; logo?: { logoWidth?: string; logoHeight?: string; }; heading?: { headingColor?: string; headingFontSize?: string; headingFontWeight?: string; headingFontFamily?: string; }; subheading?: { subheadingColor?: string; subheadingFontSize?: string; subheadingFontWeight?: string; subheadingFontFamily?: string; }; button?: { buttonBackground?: string; buttonDisabledBackground?: string; buttonDisabledTextColor?: string; buttonTextColor?: string; buttonFontSize?: string; buttonFontFamily?: string; buttonBorderRadius?: string; priority?: { buttonBackground?: string; buttonTextColor?: string; buttonDisabledTextColor?: string; justify?: string; padding?: string; }; }; input?: { inputBackgroundColor?: string; inputTextColor?: string; inputPlaceholderColor?: string; inputBorderColor?: string; inputFontSize?: string; inputFontWeight?: string; inputBorderRadius?: string; inputErrorColor?: string; inputErrorFontSize?: string; priority?: { inputBackgroundColor?: string; inputTextColor?: string; inputBackgroundColorSelect?: string; inputBackgroundColorSelectTextColor?: string; inputPlaceholderColor?: string; }; }; angleDetector?: { successAngleBackground?: string; successAngleLowBackground?: string; successAngleTextLightColor?: string; successAngleTextDarkColor?: string; }; } interface OnboardingProps { steps: Step[]; config?: Config; onComplete?: (values: Record) => void; onDeviceDetected?: (deviceInfo: FocalLengthOuput) => void; } interface Config { style?: StyleConfig; logo?: string; loader?: string; language?: PreferredLanguageType; } interface FocalLengthOuput { brandName: string; modelName: string; focalLength: number; } interface FocalLengthProps { onComplete?: (value: FocalLengthOuput) => Promise | void; config?: Config; } interface sectionsType { full: "full"; body: "body"; face: "face"; } interface EducationalProps { gender?: GenderType; sections?: sectionsType[keyof sectionsType][]; config?: Config; onComplete?: () => void; isCustom?: boolean; startStep?: 1 | 2 | 3; } interface BodyScanBaseProps { config?: Config; onRetry?: () => void; onScanStart?: () => void; onCaptureComplete?: () => void; onUploadStart?: () => void; onUploadEnd?: () => void; onMeasurementSocketStart?: () => void; onMeasurementSocketClose?: () => void; onScanSuccess?: (data: any) => void; onScanError?: (errorDetails: any) => void; onIntermediateScanSuccess?: (data: any) => void; onComplete?: () => void; onCustomScanSuccess?: () => void; } type BodyScanTerminalStateProps = BodyScanBaseProps & ({ isError: true; isSuccess?: boolean; userDetails?: Partial; token?: string; } | { isSuccess: true; isError?: boolean; userDetails?: Partial; token?: string; }); type BodyScanActiveScanProps = BodyScanBaseProps & { isError?: false; isSuccess?: false; userDetails: UserDetails; token: string; }; type BodyScanProps = BodyScanTerminalStateProps | BodyScanActiveScanProps; interface UserDetails { email: string; userName?: string; shopDomain: string; gender: Gender; heightInCm: number; scanType: string; deviceFocalLength: number; deviceModelName: string; callbackUrl?: string | null; sourceTag?: string; } interface FaceScanMetaData { email: string; shopDomain: string; gender: Gender; deviceFocalLength: number; callbackUrl?: string | null; bodyScanId?: string; } interface FaceScanBaseProps { onScanSuccess?: (data: any) => void; onScanError?: (data: any) => void; onRetry?: () => void; onScanStart?: () => void; onCaptureComplete?: () => void; onUploadStart?: () => void; onUploadEnd?: () => void; onMeasurementSocketStart?: () => void; onMeasurementSocketClose?: () => void; config?: Config; } type FaceScanTerminalStateProps = FaceScanBaseProps & ({ isError: true; isSuccess?: boolean; } | { isSuccess: true; isError?: boolean; }) & { userDetails?: FaceScanMetaData; token?: string; }; type FaceScanActiveScanProps = FaceScanBaseProps & { isError?: false; isSuccess?: false; userDetails: FaceScanMetaData; token: string; }; type FaceScanProps = FaceScanTerminalStateProps | FaceScanActiveScanProps; export { GenderType as G, PreferredLanguage as P }; export type { BodyScanProps as B, Config as C, EducationalProps as E, FocalLengthProps as F, OnboardingProps as O, Step as S, UserDetails as U, FaceScanMetaData as a, FaceScanProps as b, FocalLengthOuput as c, StyleConfig as d };