/// <reference types="node" />
import fs from 'fs';
import { FiniteAutomatonTestInfo, InputStringOption, IOutputFiles } from '../../types';
import { FiniteAutomaton } from '../FiniteAutomaton';
import { RegularExpression } from '../RegularExpression';
import * as FiniteAutomataTestUtils from './utils';
export declare type IAutomataTestConfig = {
    automaton: FiniteAutomaton;
    regex?: RegularExpression;
    options: InputStringOption;
} | {
    automaton?: FiniteAutomaton;
    regex: RegularExpression;
    options: InputStringOption;
};
declare type IWriteStreams = Record<`${keyof IOutputFiles}WriteStream`, null | fs.WriteStream>;
export declare class FiniteAutomataTest {
    #private;
    constructor(logsPath: string);
    createFileWriteStreams(automatonLabel: string, outputFiles: Partial<IOutputFiles>): {
        record: {
            caseWriteStream: fs.WriteStream | null;
            incorrectWriteStream: fs.WriteStream | null;
            correctWriteStream: fs.WriteStream | null;
            inputWriteStream: fs.WriteStream | null;
            aggregateWriteStream: fs.WriteStream | null;
            acceptedWriteStream: fs.WriteStream | null;
            rejectedWriteStream: fs.WriteStream | null;
        };
        endStreams(): void;
    };
    testAutomata(finiteAutomaton: FiniteAutomaton | RegularExpression, finiteAutomatonTestInfo: FiniteAutomatonTestInfo, writeStreams: IWriteStreams, inputStrings: string[]): void;
    test(configs: {
        automaton: FiniteAutomaton | RegularExpression;
        options: InputStringOption;
    }[]): Promise<void>;
}
export { FiniteAutomataTestUtils };
