import type { Room } from "../room/base.js"; import type { State } from "../state/state.js"; import type { ParentTrait } from "../traits/parent.js"; import { Command, Target, TargetHolder, Targets, TargetsHolder } from "../command.js"; /** * A command which by itself changes nothing, * but applies subCommands and executes these instead. */ export declare class DealCards extends Command { source: TargetHolder; targets: TargetsHolder; count: number; step: number; onEmptied: () => Command; /** * Deals `count` cards from this container to other containers. * Eg. hands * * @param source will take cards from here * @param targets and put them in these containers */ constructor(source: Target, targets: Targets, options?: DealCardsOptions); execute(state: State, room: Room): Promise; undo(state: State, room: Room): Promise; } interface DealCardsOptions { /** * How many cards should I deal for each target in total? */ count?: number; /** * Number of cards on each singular deal */ step?: number; /** * Called when deck gets emptied before dealing out every requested card. * `count: Infinity` won't have this called. */ onEmptied?: () => Command; } export {};