import { EBiometricsInput } from './models';
import { defaultOnError } from './constants';
import { RenderService, ValidatorService, WebsocketService } from './services';

export async function startFlow(input: EBiometricsInput): Promise<void> {
  input.onError = input.onError ?? defaultOnError;

  try {
    const validatorService = new ValidatorService();
    const state = await validatorService.getState(input);

    const websocketService = new WebsocketService();
    websocketService.connect(state);

    const renderService = new RenderService();
    renderService.createEmbed(state);
  } catch (err: any) {
    input.onError({ message: err.message });
  }
}
