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
text/typescript
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