import { Readable } from 'node:stream';
import { Command, CommandIdentifier } from '../command.js';
import { Logger } from '../logger.js';
import { FlowController } from './flow-controller.js';
/**
 * Sends input from concurrently through to commands.
 *
 * Input can start with a command identifier, in which case it will be sent to that specific command.
 * For instance, `0:bla` will send `bla` to command at index `0`, and `server:stop` will send `stop`
 * to command with name `server`.
 *
 * If the input doesn't start with a command identifier, it is then always sent to the default target.
 */
export declare class InputHandler implements FlowController {
    private readonly logger;
    private readonly defaultInputTarget;
    private readonly inputStream?;
    private readonly pauseInputStreamOnFinish;
    constructor({ defaultInputTarget, inputStream, pauseInputStreamOnFinish, logger, }: {
        inputStream?: Readable;
        logger: Logger;
        defaultInputTarget?: CommandIdentifier;
        pauseInputStreamOnFinish?: boolean;
    });
    handle(commands: Command[]): {
        commands: Command[];
        onFinish?: () => void | undefined;
    };
}
