import type ECSpresso from 'ecspresso';
/**
 * React context for providing the ECS instance to the component tree.
 * Wrap your UI root with `<EcsContext.Provider value={ecs}>`.
 */
declare const EcsContext: import("react").Context<ECSpresso<any, string, string, string, string> | null>;
export { EcsContext };
/**
 * Creates typed hooks bound to a specific world config.
 *
 * Call once at module scope with your world type, then use the
 * returned hooks in components anywhere under the `EcsContext.Provider`.
 *
 * @example
 * ```tsx
 * const ecs = ECSpresso.create()
 *   .withResourceTypes<{ score: number; health: number }>()
 *   .withEventTypes<{ enemyKilled: { id: number } }>()
 *   .build();
 *
 * type ECS = typeof ecs;
 * const { useResource, useEvent, useEcs } = createEcsHooks<ECS>();
 * ```
 */
export declare function createEcsHooks<W extends ECSpresso<any>>(): {
    readonly useEcs: () => W;
    readonly useResource: <K extends keyof W["_cfg"]["resources"] & string>(key: K) => W["_cfg"]["resources"][K];
    readonly useEvent: <E extends keyof W["_cfg"]["events"] & string>(type: E, callback: (data: W["_cfg"]["events"][E]) => void) => void;
};
