import "@gatling.io/jvm-types";
import * as jvm from "./gatlingJvm/app";
import { PauseType } from "./structure/pauses";
import { Duration } from "./utils/duration";
import { SessionTo } from "./session";
import { Assertion } from "./assertions";
import { PopulationBuilder } from "./population";
import { ProtocolBuilder } from "./protocol";
import { ThrottleStep } from "./throttling";
export { asJava } from "./gatlingJvm/collections";
export { asByteArray, asByteArrayFunction, asByteArrayMap } from "./gatlingJvm/byteArrays";
export { readResourceAsBytes, readResourceAsString } from "./gatlingJvm/resources";
export * from "./utils/duration";
export * from "./assertions";
export * from "./body";
export * from "./checks";
export * from "./closedInjection";
export * from "./common";
export { dummy, DummyBuilder, DummyFunction } from "./dummy";
export * from "./feeders";
export * from "./filters";
export { GlobalStore } from "./globalStore";
export * from "./openInjection";
export * from "./population";
export { getParameter, getOption, getEnvironmentVariable, GetWithDefault } from "./parameters";
export * from "./protocol";
export * from "./scenario";
export * from "./session";
export * from "./structure";
export * from "./throttling";
export interface SetUp {
    /**
     * Define the desired protocol configurations
     *
     * @param protocols - the protocols
     * @returns the same mutated setup instance
     */
    protocols(...protocols: ProtocolBuilder[]): SetUp;
    /**
     * Define the desired assertions
     *
     * @param assertions - the assertions
     * @returns the same mutated setup instance
     */
    assertions(...assertions: Assertion[]): SetUp;
    /**
     * Define the run max duration
     *
     * @param duration - the max duration
     * @returns the same mutated setup instance
     */
    maxDuration(duration: Duration): SetUp;
    /**
     * Define the throttling, meaning a maximum throughput over time
     *
     * @param throttleSteps - the throttling DSL steps
     * @returns the same mutated setup instance
     */
    throttle(...throttleSteps: ThrottleStep[]): SetUp;
    /**
     * Disable the pauses
     *
     *  @returns the same mutated setup instance
     */
    disablePauses(): SetUp;
    /**
     * Apply constant pauses
     *
     * @returns the same mutated setup instance
     */
    constantPauses(): SetUp;
    /**
     * Apply exponential pauses
     *
     * @returns the same mutated setup instance
     */
    exponentialPauses(): SetUp;
    /**
     * Apply custom pauses
     *
     * @returns the same mutated setup instance
     */
    customPauses(f: SessionTo<number>): SetUp;
    /**
     * Apply uniform pauses with half-width defined as a percentage
     *
     * @returns the same mutated setup instance
     */
    uniformPauses(plusOrMinus: number): SetUp;
    /**
     * Apply uniform pauses with half-width defined as an absolute value
     *
     * @returns the same mutated setup instance
     */
    uniformPauses(plusOrMinus: Duration): SetUp;
    /**
     * Apply normal distribution pauses with the standard deviation defined as an absolute value
     *
     * @param stdDevDuration - the standard deviation of the distribution.
     * @returns the same mutated setup instance
     */
    normalPausesWithStdDevDuration(stdDevDuration: Duration): SetUp;
    /**
     * Apply normal distribution pauses with the standard deviation defined as a percentage of the
     * value defined in the scenario
     *
     * @param stdDevPercent - the standard deviation of the distribution in percents.
     * @returns the same mutated setup instance
     */
    normalPausesWithPercentageDuration(stdDevPercent: number): SetUp;
    /**
     * Apply uniform pauses with a given strategy
     *
     * @param pauseType - the pause type
     * @returns the same mutated setup instance
     */
    pauses(pauseType: PauseType): SetUp;
}
export type SetUpFunction = (...populationBuilders: PopulationBuilder[]) => SetUp;
export type Simulation = (setUp: SetUpFunction) => void;
export declare const simulation: (simulation: Simulation) => jvm.Simulation;
