export type ContactMethod = {
  label: string;
  type: string; // eg. "EMAIL", "SMS", "WHATSAPP", maybe someday "GOOGLE-CONTACT-API"
  value: string;
};

export type Contact = {
  //
  // When adding a property, consider whether it should be added when exporting & sharing contacts, eg. DataExportSection

  did: string;
  contactMethods?: Array<ContactMethod>;
  iViewContent?: boolean;
  name?: string;
  nextPubKeyHashB64?: string; // base64-encoded SHA256 hash of next public key
  notes?: string;
  profileImageUrl?: string;
  publicKeyBase64?: string;
  seesMe?: boolean; // cached value of the server setting
  registered?: boolean; // cached value of the server setting
};

/**
 * This is for those cases (eg. with a DB) where every field is a primitive (and not an object).
 *
 * This is so that we can reuse most of the type and don't have to maintain another copy.
 * Another approach uses typescript conditionals: https://chatgpt.com/share/6855cdc3-ab5c-8007-8525-726612016eb2
 */
export type ContactWithJsonStrings = Omit<Contact, "contactMethods"> & {
  contactMethods?: string;
};

export const ContactSchema = {
  contacts: "&did, name", // no need to key by other things
};
