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; type HiddenType = { (target: object, decoratedPropertyKey: string, descriptor?: TypedPropertyDescriptor< () => any >): any; addHiddenStep: (target: Class, methodName: string) => void; }; var Hidden: HiddenType; 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; type ParameterFormatterDecorator = { (target: object, decoratedPropertyKey: string, descriptor?: TypedPropertyDescriptor< () => any >): any; }; type ParameterFormatter = { (...parameterNames: string[]): ParameterFormatterDecorator; formatParameter: ( stageClass: Class, stepMethodName: string, ...parameterNames: string[] ) => void; }; var Quoted: ParameterFormatter; function QuotedWith(quoteCharacter: string): ParameterFormatter; var NotFormatter: ParameterFormatter; type Formatter = (parameterValue: any) => string; function buildParameterFormatter(formatter: Formatter): ParameterFormatter; export { Stage, State, setupForRspec, setupForAva, scenarios, scenario, doAsync, parametrized, parametrized1, parametrized2, parametrized3, parametrized4, parametrized5, parametrized6, parametrized7, Hidden, Quoted, QuotedWith, NotFormatter, buildParameterFormatter, }; }