import { Optional } from '@cosmicmind/foundationjs';
export type Command = {
    execute(): boolean | Promise<boolean>;
};
export type Sender<T extends Command> = {
    setCommand(command: T): void;
    execute(): void;
};
export type Receivable<T extends Command> = {
    operation(...commands: T[]): boolean;
};
export type HistoryStack = {
    push(command: Command): void;
    pop(): Optional<Command>;
    clear(): void;
};
export declare class CommandHistory implements HistoryStack {
    protected commands: Command[];
    constructor();
    push(command: Command): void;
    pop(): Optional<Command>;
    clear(): void;
}
//# sourceMappingURL=Command.d.ts.map