UNPKG

tiny-essentials

Version:

Collection of small, essential scripts designed to be used across various projects. These simple utilities are crafted for speed, ease of use, and versatility.

95 lines 3.92 kB
export default TinyInventoryTrader; export type InventoryMetadata = import("./TinyInventory.mjs").InventoryMetadata; export type AddItemResult = import("./TinyInventory.mjs").AddItemResult; /** * - Transfer configuration. */ export type TransferItemCfg = { /** * - Sender slot index. */ slotIndex?: number | undefined; /** * - Receiver slot index (optional). */ receiverSlotIndex?: number | undefined; /** * - Sender special slot ID. */ specialSlot?: string | undefined; /** * - Quantity to transfer. */ quantity?: number | undefined; /** * - Whether to force addition even if space is limited. */ forceSpace?: boolean | undefined; /** * - If true, transfer will throw if not all items can fit. */ strict?: boolean | undefined; }; /** @typedef {import('./TinyInventory.mjs').InventoryMetadata} InventoryMetadata */ /** @typedef {import('./TinyInventory.mjs').AddItemResult} AddItemResult */ /** * @typedef {Object} TransferItemCfg - Transfer configuration. * @property {number} [slotIndex] - Sender slot index. * @property {number} [receiverSlotIndex] - Receiver slot index (optional). * @property {string} [specialSlot] - Sender special slot ID. * @property {number} [quantity=1] - Quantity to transfer. * @property {boolean} [forceSpace=false] - Whether to force addition even if space is limited. @property {boolean} [strict=false] - If true, transfer will throw if not all items can fit. */ /** * Class responsible for managing item transfers between two TinyInventory instances. */ declare class TinyInventoryTrader { /** * Manages item transfers between two TinyInventory instances. * @param {TinyInventory} [sender] - Inventory to remove items from. * @param {TinyInventory} [receiver] - Inventory to add items to. */ constructor(sender?: TinyInventory, receiver?: TinyInventory); /** @param {TinyInventory} value Sets the sender inventory. */ set sender(value: TinyInventory); /** @returns {TinyInventory|null} The currently connected sender inventory. */ get sender(): TinyInventory | null; /** @param {TinyInventory} value Sets the receiver inventory. */ set receiver(value: TinyInventory); /** @returns {TinyInventory|null} The currently connected receiver inventory. */ get receiver(): TinyInventory | null; /** * Connects the sender and receiver inventories for trading. * @param {TinyInventory} sender - Inventory to remove items from. * @param {TinyInventory} receiver - Inventory to add items to. */ connect(sender: TinyInventory, receiver: TinyInventory): void; /** * Disconnects the sender and receiver inventories, preventing further transfers. */ disconnect(): void; /** * Inverts the sender and receiver roles. * Useful when performing bidirectional transfers. */ invert(): void; /** * Transfers an item from sender to receiver. * * @param {TransferItemCfg} options - Transfer configuration. * @returns {Partial<AddItemResult>} Remaining quantity that could NOT be transferred. * @throws {Error} If sender or receiver is not connected, item does not exist in sender, * or if strict mode is enabled and receiver has no space for full transfer. */ transferItem({ slotIndex, specialSlot, quantity, receiverSlotIndex, forceSpace, strict, }: TransferItemCfg): Partial<AddItemResult>; /** * Transfers multiple items at once. * @param {TransferItemCfg[]} items - Array of transfer configs (see transferItem options). * @returns {Partial<AddItemResult>[]} Array of remaining quantities for each item. */ transferMultiple(items: TransferItemCfg[]): Partial<AddItemResult>[]; #private; } import TinyInventory from './TinyInventory.mjs'; //# sourceMappingURL=TinyInventoryTrader.d.mts.map