import type { Aim } from "../scene/spatial.js"; export interface ItemUseInput { from: string; itemId: string; inventoryId?: string; aim?: Aim; } export interface ItemUseRejection { reason: string; } export interface ItemUseResult { state: TState; error?: string; } export interface ItemUseHandler { can?(state: TState, input: ItemUseInput): ItemUseRejection | null; apply(state: TState, input: ItemUseInput): ItemUseResult; } export interface ItemUse { register(handlers: Record>): void; registered(): string[]; can(state: TState, input: ItemUseInput): ItemUseRejection | null; use(state: TState, input: ItemUseInput): ItemUseResult; } /** * Use or consume items, applying their effects and per-item cooldowns. * * @capability consumables use/consume items with cooldowns and effects */ export declare function createItemUse(resolveUse: (itemId: string) => string | null | undefined): ItemUse;