/**
 * Type definitions for Zustand stores
 * FE-TYPE-011: Add type safety for stores
 *
 * This file provides type helpers and exports for all Zustand stores
 * to ensure full type safety across the application.
 */

import type { StateCreator } from 'zustand';

/**
 * Type helper for Zustand store creator with middlewares
 */
export type StoreCreator<T> = StateCreator<T, [], [], T>;

/**
 * Type helper for store state only (without actions)
 */
export type StoreState<T> = Omit<
  T,
  { [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never }[keyof T]
>;

/**
 * Type helper for store actions only
 */
export type StoreActions<T> = Pick<
  T,
  { [K in keyof T]: T[K] extends (...args: any[]) => any ? K : never }[keyof T]
>;
