import type { Selectable } from "kysely";
import type { Sessions, Users } from "../datastore/db";

export interface IMemberSessionRepository {
  FindMemberSession: (
    sessionID: string,
    contactID: string,
  ) => Promise<{
    userRecord: Selectable<Users>;
    sessionRecord: Selectable<Sessions>;
    externalAccountTypeID: string | null;
    memberRecordID: string;
  }>;
  FindMemberSessionsByUserId: (
    userId: string,
  ) => Promise<
    Selectable<
      Omit<Sessions, "updated_at" | "pid" | "fcm_token" | "refresh_token">
    >[]
  >;
}

export interface IMemberSessionServices {
  GetMemberBySession: () => Promise<{
    userRecord: Selectable<Users>;
    sessionRecord: Selectable<Sessions>;
    accountID: string;
    contactID: string;
    externalAccountTypeID: string | null;
    memberRecordID: string;
  }>;
  GetMemberSessionsByUserId: (
    userId: string,
  ) => Promise<
    Selectable<
      Omit<Sessions, "updated_at" | "pid" | "fcm_token" | "refresh_token">
    >[]
  >;
}
