import { Scope } from "./abstractions"
import { flatMap } from "./flatmap"
import { later } from "./later"
import { GenericTransformOp, GenericTransformOpScoped } from "./transform"
import { transformChanges } from "./transformchanges"
export function delay(delay: number): GenericTransformOp
export function delay(delay: number, scope: Scope): GenericTransformOpScoped
export function delay(delay: number, scope?: Scope): any {
return transformChanges(
["delay", [delay]],
(changes) => flatMap((value) => later(delay, value))(changes),
scope as any
)
}