declare module "js-given" { class Stage { constructor(); and(): this; but(): this; with(): this; given(): this; when(): this; then(): this; } type ScenariosParam = { given: () => G; when: () => W; then: () => T; }; type ScenarioFunc = SimpleScenarioFunc | ParametrizedScenarioFuncWithParameters; type SimpleScenarioFunc = { (): void; }; type ParametrizedScenarioFuncWithParameters = { func: (...args: any[]) => void; parameters: Array>; }; type Class = { new(): T; } type ScenariosDescriptions = { (scenariosParam: ScenariosParam): {[key:string]: ScenarioDescription}; }; type ScenarioDescription = { scenarioFunction: ScenarioFunc; }; type ScenarioOptions = {}; function scenario(options: ScenarioOptions, scenarioFunction: ScenarioFunc): ScenarioDescription; function scenarios(groupName: string, stagesParam: Class, scenarioFunc: ScenariosDescriptions): void; function scenarios(groupName: string, stagesParam: [Class, Class, Class], scenarioFunc: ScenariosDescriptions): void; function setupForRspec(describe: any, it: any): void; function setupForAva(test: any): void; type StateType = { (target: object, decoratedPropertyKey: string, descriptor?: TypedPropertyDescriptor<() => any>): any; addProperty: (target: Class, propertyName: string) => void; }; var State: StateType; function doAsync(action: () => Promise): void; function setupForAva(test: any): void; function parametrized(parameters: Array>, func: () => void): ParametrizedScenarioFuncWithParameters; function parametrized1(parameters: T[], func: (a: T) => void): ParametrizedScenarioFuncWithParameters; function parametrized2(parameters: Array<[A, B]>, func: (a: A, b: B) => void): ParametrizedScenarioFuncWithParameters; function parametrized3(parameters: Array<[A, B, C]>, func: (a: A, b: B, c: C) => void): ParametrizedScenarioFuncWithParameters; function parametrized4(parameters: Array<[A, B, C, D]>, func: (a: A, b: B, c: C, d: D) => void): ParametrizedScenarioFuncWithParameters; function parametrized5(parameters: Array<[A, B, C, D, E]>, func: (a: A, b: B, c: C, d: D, e: E) => void): ParametrizedScenarioFuncWithParameters; function parametrized6(parameters: Array<[A, B, C, D, E, F]>, func: (a: A, b: B, c: C, d: D, e: E, f: F) => void): ParametrizedScenarioFuncWithParameters; function parametrized7(parameters: Array<[A, B, C, D, E, F, G]>, func: (a: A, b: B, c: C, d: D, e: E, f: F, g: G) => void): ParametrizedScenarioFuncWithParameters; export { Stage, State, setupForRspec, setupForAva, scenarios, scenario, doAsync, parametrized, parametrized1, parametrized2, parametrized3, parametrized4, parametrized5, parametrized6, parametrized7, } }