/** Types generated for queries found in "src/modules/auth/providers/accept-invitations.provider.ts" */

/** 'UpdateInvitationAcceptance' parameters type */
export interface IUpdateInvitationAcceptanceParams {
  id?: string | null | void;
}

/** 'UpdateInvitationAcceptance' return type */
export type IUpdateInvitationAcceptanceResult = void;

/** 'UpdateInvitationAcceptance' query type */
export interface IUpdateInvitationAcceptanceQuery {
  params: IUpdateInvitationAcceptanceParams;
  result: IUpdateInvitationAcceptanceResult;
}

/** 'GetInvitationForAcceptance' parameters type */
export interface IGetInvitationForAcceptanceParams {
  tokenHash?: string | null | void;
}

/** 'GetInvitationForAcceptance' return type */
export interface IGetInvitationForAcceptanceResult {
  /** Timestamp when invitation was accepted (NULL until accepted, single-use token tracking) */
  accepted_at: Date | null;
  /** Auth0 user ID from pre-registration (e.g., 'auth0|507f1f77bcf86cd799439011'), used for cleanup */
  auth0_user_id: string | null;
  /** Business the user is being invited to */
  business_id: string;
  /** Email address of the invited user */
  email: string;
  /** Invitation expiration timestamp (typically 7 days from creation) */
  expires_at: Date;
  /** Unique invitation identifier */
  id: string;
  /** Role to assign to the user upon acceptance */
  role_id: string;
  /** Deterministic local user identifier linked to this invitation */
  user_id: string;
}

/** 'GetInvitationForAcceptance' query type */
export interface IGetInvitationForAcceptanceQuery {
  params: IGetInvitationForAcceptanceParams;
  result: IGetInvitationForAcceptanceResult;
}

/** 'GetInvitationByToken' parameters type */
export interface IGetInvitationByTokenParams {
  tokenHash?: string | null | void;
}

/** 'GetInvitationByToken' return type */
export interface IGetInvitationByTokenResult {
  /** Timestamp when invitation was accepted (NULL until accepted, single-use token tracking) */
  accepted_at: Date | null;
  /** Auth0 user ID from pre-registration (e.g., 'auth0|507f1f77bcf86cd799439011'), used for cleanup */
  auth0_user_id: string | null;
  /** Business the user is being invited to */
  business_id: string;
  /** Email address of the invited user */
  email: string;
  /** Invitation expiration timestamp (typically 7 days from creation) */
  expires_at: Date;
  /** Unique invitation identifier */
  id: string;
  /** Role to assign to the user upon acceptance */
  role_id: string;
  /** Deterministic local user identifier linked to this invitation */
  user_id: string;
}

/** 'GetInvitationByToken' query type */
export interface IGetInvitationByTokenQuery {
  params: IGetInvitationByTokenParams;
  result: IGetInvitationByTokenResult;
}

/** 'GetUserIdByAuth0UserId' parameters type */
export interface IGetUserIdByAuth0UserIdParams {
  auth0UserId?: string | null | void;
}

/** 'GetUserIdByAuth0UserId' return type */
export interface IGetUserIdByAuth0UserIdResult {
  /** Local user identifier, generated when invitation is created */
  user_id: string;
}

/** 'GetUserIdByAuth0UserId' query type */
export interface IGetUserIdByAuth0UserIdQuery {
  params: IGetUserIdByAuth0UserIdParams;
  result: IGetUserIdByAuth0UserIdResult;
}

/** 'InsertAcceptedBusinessUser' parameters type */
export interface IInsertAcceptedBusinessUserParams {
  auth0UserId?: string | null | void;
  ownerId?: string | null | void;
  roleId?: string | null | void;
  userId?: string | null | void;
}

/** 'InsertAcceptedBusinessUser' return type */
export type IInsertAcceptedBusinessUserResult = void;

/** 'InsertAcceptedBusinessUser' query type */
export interface IInsertAcceptedBusinessUserQuery {
  params: IInsertAcceptedBusinessUserParams;
  result: IInsertAcceptedBusinessUserResult;
}

/** 'UpdateBusinessUserAuth0Id' parameters type */
export interface IUpdateBusinessUserAuth0IdParams {
  auth0UserId?: string | null | void;
  ownerId?: string | null | void;
  userId?: string | null | void;
}

/** 'UpdateBusinessUserAuth0Id' return type */
export type IUpdateBusinessUserAuth0IdResult = void;

/** 'UpdateBusinessUserAuth0Id' query type */
export interface IUpdateBusinessUserAuth0IdQuery {
  params: IUpdateBusinessUserAuth0IdParams;
  result: IUpdateBusinessUserAuth0IdResult;
}

