import { ExecutionContext } from "ava";
import { NamedCase, UnnamedCase } from "../cases";
import { Configuration } from "../configuration";
import { Context } from "../context";
export * from "../configuration";
export * from "../context";
export * from "../expect";
export * from "../fake";
export interface CasesFunction {
    <T extends UnnamedCase>(name: string, func: (context: Context, _case: T, t: ExecutionContext) => void, cases: {
        [key: string]: T;
    }): void;
    <T extends NamedCase>(name: string, func: (context: Context, _case: T, t: ExecutionContext) => void, cases: T[]): void;
}
export declare type MarblesFunction = (func: (m: Context, t: ExecutionContext) => any) => any;
export declare function configure(configuration: Configuration): {
    cases: CasesFunction;
    marbles: MarblesFunction;
};
declare const cases: CasesFunction, marbles: MarblesFunction;
export { cases, marbles };
export declare function fakeSchedulers(fakeTest: (t: ExecutionContext) => any): (t: ExecutionContext) => any;
