import type { PCGRandomState } from "@tsplus/stdlib/io/Random" export const TRandomSym = Symbol.for("@effect/core/stm/TRandom") export type TRandomSym = typeof TRandomSym /** * @tsplus type effect/core/stm/TRandom */ export interface TRandom { readonly [TRandomSym]: TRandomSym readonly next: STM readonly nextBoolean: STM readonly nextInt: STM readonly nextRange: (low: number, high: number) => STM readonly nextIntBetween: (low: number, high: number) => STM readonly shuffle: (collection: Collection) => STM> readonly withState: ( f: (state: PCGRandomState) => readonly [A, PCGRandomState] ) => STM } /** * @tsplus type effect/core/stm/TRandom.Ops */ export interface TRandomOps { $: TRandomAspects Tag: Tag } export const TRandom: TRandomOps = { $: {}, Tag: Service.Tag() } /** * @tsplus type effect/core/stm/TRandom.Aspects */ export interface TRandomAspects {}