/** * @rajeev02/app-shell — Form Engine + KYC * Dynamic forms, multi-step wizard, validation, Indian ID verification */ export type FieldType = "text" | "email" | "phone" | "number" | "password" | "select" | "multiselect" | "checkbox" | "radio" | "date" | "file" | "image" | "aadhaar" | "pan" | "ifsc" | "pincode" | "vpa" | "textarea" | "otp"; export interface FormField { id: string; type: FieldType; label: string; placeholder?: string; required?: boolean; defaultValue?: unknown; validation?: ValidationRule[]; options?: { label: string; value: string; }[]; maxSizeBytes?: number; acceptedTypes?: string[]; dependsOn?: { fieldId: string; value: unknown; }; helpText?: string; masked?: boolean; } export interface ValidationRule { type: "required" | "minLength" | "maxLength" | "pattern" | "email" | "phone" | "aadhaar" | "pan" | "ifsc" | "pincode" | "custom"; value?: unknown; message: string; validator?: (value: unknown) => boolean; } export interface FormStep { id: string; title: string; description?: string; fields: FormField[]; } export interface FormConfig { id: string; title: string; steps: FormStep[]; onSubmit?: (data: Record) => Promise<{ success: boolean; error?: string; }>; } export interface FormState { currentStep: number; totalSteps: number; values: Record; errors: Record; touched: Record; isSubmitting: boolean; isDirty: boolean; } export declare class FormEngine { private config; private state; constructor(config: FormConfig); setValue(fieldId: string, value: unknown): void; getValue(fieldId: string): unknown; getValues(): Record; validateField(fieldId: string): string | null; validateCurrentStep(): boolean; nextStep(): boolean; prevStep(): boolean; submit(): Promise<{ success: boolean; error?: string; }>; getState(): FormState; getCurrentStep(): FormStep; reset(): void; } /** Pre-built KYC form */ export declare function getKycFormConfig(): FormConfig; //# sourceMappingURL=index.d.ts.map