import type { Friend } from './friends.js'; import type { FreeAppStore } from './index.js'; import type { User } from './types.js'; export type { User } from './types.js'; export type { UseVoiceInputReturn } from './voice.js'; export { useVoiceInput } from './voice.js'; type ThemePreference = 'light' | 'dark' | 'system'; type ResolvedTheme = 'light' | 'dark'; /** * Theme hook — zero-provider. Persists preference, applies data-theme on html element. * * Usage: * ```tsx * const { theme, preference, setPreference } = useTheme() * // theme: 'light' | 'dark' (resolved) * // preference: 'light' | 'dark' | 'system' (user's choice) * ``` */ export declare function useTheme(): { theme: ResolvedTheme; preference: ThemePreference; setPreference: (pref: ThemePreference) => void; }; /** * Auth state + actions. The primary way apps interact with platform identity. * * Usage: * ```tsx * const { user, loading, signIn, signOut, deleteAccount } = useAuth(fas) * if (loading) return * if (!user) return * return

Welcome, {user.login}!

* ``` */ export declare function useAuth(app: FreeAppStore): { user: User | null; loading: boolean; signIn: () => void; signOut: () => void; deleteAccount: () => Promise; hasRole: (role: string) => Promise; }; /** * Friends hook — fetches friends + incoming requests on mount. * * Usage: * ```tsx * const { friends, requests, loading, requestCount, refresh } = useFriends(fas) * ``` */ export declare function useFriends(app: FreeAppStore): { friends: Friend[]; requests: Friend[]; loading: boolean; requestCount: number; refresh: () => void; }; //# sourceMappingURL=hooks.d.ts.map