interface Claims {
  // https://openid.net/specs/openid-connect-core-1_0.html#StandardClaims
  sub?: string;
  name?: string;
  given_name?: string;
  family_name?: string;
  middle_name?: string;
  nickname?: string;
  preferred_username?: string;
  profile?: string; // url to their profile
  picture?: string; // url to their image ending in .png, .jpg, etc...
  website?: string;
  email: string;
  email_verified?: boolean;
  gender?: string; // usually 'male' or 'female'
  birthdate?: string; // 'yyyy-mm-dd'
  zoneinfo?: string; // e.g. 'Europe/Paris' or 'America/Los_Angeles'
  local?: string; // e.g. 'en-US' or 'fr-CA' some implementations us underscore
  phone_number?: string;
  phone_number_verified?: boolean;
  address?: Address;
  updated_at?: number; // seconds since the epoc when this object was last updated
}

interface User {
  claims: Claims;
  customers: string[];
}

interface Address {
  formatted: string;
  street_address: string;
  locality: string; // e.g. city
  region: string; // e.g. state, province, prefecture or region
  postal_code: string; // zip coed or postal code
  country: string;
}

export {
  User,
  Claims,
  Address
}
