/**
 * Ported from https://github.com/zio/zio/blob/master/core/shared/src/main/scala/zio/Random.scala
 *
 * Copyright 2020 Michael Arnaldi and the Matechs Garage Contributors.
 */
import "../Operator"
import type { UIO } from "../Effect/effect"
import type { HasTag } from "../Has"
export declare const RandomSymbol: unique symbol
export declare type RandomSymbol = typeof RandomSymbol
export declare abstract class Random {
  readonly _tag: RandomSymbol
  abstract readonly next: UIO<number>
  abstract readonly nextBoolean: UIO<boolean>
  abstract readonly nextInt: UIO<number>
  abstract readonly nextRange: (low: number, high: number) => UIO<number>
  abstract readonly nextIntBetween: (low: number, high: number) => UIO<number>
}
export declare class LiveRandom extends Random {
  private PRNG
  constructor(seed: number)
  next: UIO<number>
  nextBoolean: UIO<boolean>
  nextInt: UIO<number>
  nextRange: (low: number, high: number) => UIO<number>
  nextIntBetween: (low: number, high: number) => UIO<number>
}
export declare const defaultRandom: LiveRandom
export declare const HasRandom: import("../Has").Tag<Random>
export declare type HasRandom = HasTag<typeof HasRandom>
export declare const next: import("../Effect/effect").Effect<
  import("../Has").Has<Random>,
  never,
  number
>
export declare const nextBoolean: import("../Effect/effect").Effect<
  import("../Has").Has<Random>,
  never,
  boolean
>
export declare const nextIntBetween: (
  low: number,
  high: number
) => import("../Effect/effect").Effect<import("../Has").Has<Random>, never, number>
export declare const nextInt: import("../Effect/effect").Effect<
  import("../Has").Has<Random>,
  never,
  number
>
export declare const nextRange: (
  low: number,
  high: number
) => import("../Effect/effect").Effect<import("../Has").Has<Random>, never, number>
export declare const withSeed: (
  seed: number
) => <R1, E1, A1>(
  ma: import("../Effect/effect").Effect<R1 & import("../Has").Has<Random>, E1, A1>
) => import("../Effect/effect").Effect<R1 & import("../Has").Has<Random>, E1, A1>
//# sourceMappingURL=index.d.ts.map
