import { ChoiceWithWeight } from "./choices";
import { Executable } from "./execs";
import JvmRandomSwitchOrElse = io.gatling.javaapi.core.condition.RandomSwitchOrElse;
export interface On<T> {
    on(...choices: ChoiceWithWeight[]): OrElse<T>;
}
export interface OrElse<T> {
    orElse(executable: Executable<any>, ...executables: Executable<any>[]): T;
}
export interface RandomSwitchOrElseFunction<T extends RandomSwitchOrElse<T>> {
    /**
     * Execute one of the "choices" randomly based on their respective weight. Weights are expressed
     * in percents so their sum must be <= 100%.
     *
     * @returns the DSL component for defining the "else" block
     */
    (): On<T>;
}
export interface RandomSwitchOrElse<T extends RandomSwitchOrElse<T>> {
    randomSwitchOrElse: RandomSwitchOrElseFunction<T>;
}
export declare const randomSwitchOrElseImpl: <J2, J1 extends JvmRandomSwitchOrElse<J2, any>, T extends RandomSwitchOrElse<T>>(jvmRandomSwitch: J1, wrap: (wrapped: J2) => T) => RandomSwitchOrElseFunction<T>;
