import { USTM } from "@effect/core/stm/STM/definition/base";
import { LazyArg } from "@tsplus/stdlib/data/Function";
import { Collection } from "@tsplus/stdlib/collections/Collection/definition";
import { Tuple } from "@tsplus/stdlib/data/Tuple/definition";
import { Tag } from "@tsplus/stdlib/service/Tag";
import type { PCGRandomState } from "@tsplus/stdlib/utilities/RandomPCG";
export declare const TRandomSym: unique symbol;
export declare type TRandomSym = typeof TRandomSym;
/**
 * @tsplus type ets/TRandom
 */
export interface TRandom {
    readonly [TRandomSym]: TRandomSym;
    readonly next: USTM<number>;
    readonly nextBoolean: USTM<boolean>;
    readonly nextInt: USTM<number>;
    readonly nextRange: (low: number, high: number) => USTM<number>;
    readonly nextIntBetween: (low: number, high: number) => USTM<number>;
    readonly shuffle: <A>(collection: LazyArg<Collection<A>>) => USTM<Collection<A>>;
    readonly withState: <A>(f: (state: PCGRandomState) => Tuple<[A, PCGRandomState]>) => USTM<A>;
}
/**
 * @tsplus type ets/TRandom/Ops
 */
export interface TRandomOps {
    $: TRandomAspects;
    Tag: Tag<TRandom>;
}
export declare const TRandom: TRandomOps;
/**
 * @tsplus type ets/TRandom/Aspects
 */
export interface TRandomAspects {
}
//# sourceMappingURL=definition.d.ts.map