import { MaterialDefinition } from '../modules/material'; import { ECSContext } from './ecs'; import { ArchetypeBundle } from './despawn'; export type InventoryItem = { type: 'entity'; definition: ArchetypeBundle | string; } | { type: 'material'; definition: MaterialDefinition; amount: number; }; export interface Inventory { size: number; selected: number; slots: (InventoryItem | null)[]; } export type InventoryChangeCallback = (inv: Inventory) => void; export declare function createInventory(size: number): Inventory; export declare function addToInventory(inv: Inventory, item: InventoryItem): boolean; export declare function inventoryChanged(ctx: ECSContext, eid: number): void; /** * Swap two slots in the inventory and notify listeners. * @param ctx ECSContext * @param eid Entity id * @param inv Inventory object * @param indexA First slot index * @param indexB Second slot index */ export declare function swapInventorySlots(ctx: ECSContext, eid: number, inv: Inventory, indexA: number, indexB: number): void; export declare function drop(ctx: ECSContext, eid: number, slot: number): number | null; export declare function dropSelected(ctx: ECSContext, eid: number): number | null; //# sourceMappingURL=inventory.d.ts.map