import { ArraySchema, Schema } from "@colyseus/schema"; import type { ChildTrait } from "./child.js"; import { ParentTrait } from "./parent.js"; declare class SelectedChildData extends Schema { childIndex: number; selectionIndex: number; constructor(childIndex: number, selectionIndex: number); toString(): string; } /** * * @param entity * @returns * @category SelectableChildren */ export declare function hasSelectableChildren(entity: unknown): entity is SelectableChildrenTrait; /** * Used on **container** - its children can now be selected by players. * * Holds indexes of selected children and in which order were these chosen. * * > TODO: This trait is clearly dependant on ParentTrait. There should be a way of checking/ensuring this dependency is met * @category SelectableChildren */ export declare class SelectableChildrenTrait { selectedChildren: ArraySchema; /** * Select child */ selectChildAt(this: ParentTrait & SelectableChildrenTrait, childIndex: number): void; /** * Deselect child */ deselectChildAt(this: ParentTrait & SelectableChildrenTrait, childIndex: number): void; isChildSelected(childIndex: number): boolean; /** * In which order was nth child selected. Returns `undefined` on index of UNselected child. * @param childIndex index of child */ getSelectionIndex(childIndex: number): number; /** * Number of selected child elements */ countSelectedChildren(): number; /** * Number of not selected child elements */ countUnselectedChildren(this: ParentTrait & SelectableChildrenTrait): number; getSelectedChildren(this: ParentTrait & SelectableChildrenTrait): T[]; getUnselectedChildren(this: ParentTrait & SelectableChildrenTrait): T[]; _selectableEnsureIndex(this: ParentTrait & SelectableChildrenTrait, index: number): void; } export {};