import { HookService, ReactHook } from '../types';
/**
 * Hook to connect a service to a hook value from the context
 * Use this in React components to make hook values available in services
 */
export declare function useHookService<T = unknown>(service: HookService<T>, hookName: string): void;
/**
 * 🆕 TYPE-SAFE VERSION: Connect service with compile-time type checking
 */
export declare function useTypedHookService<THooks extends Record<string, ReactHook<unknown>>, K extends keyof THooks>(service: HookService<ExtractHookType<THooks[K]>>, hookName: K): void;
/**
 * 🆕 STRICT TYPE-SAFE VERSION: Enforces valid hook names at compile time
 * This will show TypeScript errors for invalid hook names
 *
 * Usage:
 * ```typescript
 * // Define your hook types
 * type AppHooks = {
 *   navigate: () => NavigateFunction;
 *   auth: () => AuthState;
 * };
 *
 * // Use with type checking
 * useStrictHookService<AppHooks>(navService, 'navigate'); // ✅ Valid
 * useStrictHookService<AppHooks>(navService, 'invalid');  // ❌ TypeScript Error
 * ```
 */
export declare function useStrictHookService<THooks extends Record<string, ReactHook<unknown>>>(service: HookService<ExtractHookType<THooks[keyof THooks]>>, hookName: keyof THooks & string): void;
/**
 * 🆕 TYPE-SAFE HOOK ACCESS: Get hook value with compile-time type checking
 */
export declare function useTypedHook<THooks extends Record<string, ReactHook<unknown>>, K extends keyof THooks>(hookName: K): ExtractHookType<THooks[K]>;
/**
 * 🆕 STRICT TYPED HOOK ACCESS: Enforces valid hook names at compile time
 */
export declare function useStrictHook<THooks extends Record<string, ReactHook<unknown>>>(hookName: keyof THooks & string): ExtractHookType<THooks[typeof hookName]>;
/**
 * Hook to get a hook value directly from the context
 * Use this in React components when you want to use hook values directly
 */
export declare function useHook<T = unknown>(hookName: string): T | undefined;
/**
 * Hook to get all hook values from the context
 */
export declare function useAllHooks(): Record<string, unknown>;
type ExtractHookType<T> = T extends ReactHook<infer R> ? R : never;
export {};
