/** Typed boundary error when the session is no longer valid. */
export class AuthSessionExpiredError extends Error {
  override readonly name = 'AuthSessionExpiredError'
  constructor(message = 'session expired') {
    super(message)
  }
}

export function isAuthSessionExpiredError(e: unknown): e is AuthSessionExpiredError {
  return typeof e === 'object' && e !== null && (e as { name?: string }).name === 'AuthSessionExpiredError'
}

export class AuthProviderError extends Error {
  override readonly name = 'AuthProviderError'
  constructor(hook: string) {
    super(`${hook} must be used within <AuthProvider>`)
  }
}

export function isAuthProviderError(e: unknown): e is AuthProviderError {
  return typeof e === 'object' && e !== null && (e as { name?: string }).name === 'AuthProviderError'
}
