export class DocumentStepData implements StepData {
  stepName: string;
  documents: Document[];

  constructor() {
    this.stepName = '';
    this.documents = [];
  }
}

export class GovernmentIdStepData implements StepData {
  stepName: string;
  captures: GovernmentIdCapture[];

  constructor() {
    this.stepName = '';
    this.captures = [];
  }
}

export interface GovernmentIdCapture {
  idClass: string;
  captureMethod: GovernmentIdCaptureMethod;
  side: GovernmentIdCaptureSide;
  frames: GovernmentIdCaptureFrames[];
}

export enum GovernmentIdCaptureMethod {
  Manual = 'Manual',
  Auto = 'Auto',
  Upload = 'Upload',
}

export enum GovernmentIdCaptureSide {
  Front = 'Front',
  Back = 'Back',
}

export interface GovernmentIdCaptureFrames {
  absoluteFilePath: string;
}

export class SelfieStepData implements StepData {
  stepName: string;
  centerCapture: SelfieCapture | null;
  leftCapture: SelfieCapture | null;
  rightCapture: SelfieCapture | null;

  constructor() {
    this.stepName = '';
    this.centerCapture = null;
    this.leftCapture = null;
    this.rightCapture = null;
  }
}

export interface SelfieCapture {
  captureMethod: SelfieCaptureMethod;
  absoluteFilePath: string;
}

export enum SelfieCaptureMethod {
  Manual = 'Manual',
  Auto = 'Auto',
}

export class UiStepData implements StepData {
  stepName: string;
  componentParams: { [key: string]: any };

  constructor() {
    this.stepName = '';
    this.componentParams = {};
  }
}

export interface Document {
  absoluteFilePath: string;
}

export interface StepData {
  stepName: string;
}
