import { CustomerAsset, SerializedImage, SerializedProp } from "./customer-base";
import { GeolocationData } from "../../common";

enum EWitnessStatus {
  Created = "CREATED",
  MintingStarted = "MINTING_STARTED",
  MintingFailed = "MINTING_FAILED",
  Minted = "MINTED",
}

enum ERelationType {
  CheckinOfficial = "CHECKIN_OFFICIAL",
  CheckinWitness = "CHECKIN_WITNESS",
  CheckinInspector = "CHECKIN_INSPECTOR",
  CheckinBuyer = "CHECKIN_BUYER",
  CheckinSeller = "CHECKIN_SELLER",
  ParentVDT = "PARENT_VDT",
  ChildVDT = "CHILD_VDT",
  CheckinArchive = "CHECKIN_ARCHIVE",
}

export interface WitnessAsset {
  id: string;
  status: EWitnessStatus;
  relationType: ERelationType;
  userId?: string;
  name?: string;
  email?: string;
  firstName?: string;
  lastName?: string;
  avatarUrl?: string;
  serializedImages?: SerializedImage[];
  serializedProps: SerializedProp[];
  eventIdRef: string;
  isMinted: boolean;
  city: string;
  state: string;
  country: string;
  locationAccuracy: 'exact' | 'city';
  geolocation: GeolocationData;
  createdAt: Date;
  mintedAt?: Date;
  approved: boolean;
  level: number;
  categoryId?: string;
  asset?: CustomerAsset;
}