type t = GenericDist_Types.genericDist type error = GenericDist_Types.error type toPointSetFn = t => result type toSampleSetFn = t => result, error> type scaleMultiplyFn = (t, float) => result type pointwiseAddFn = (t, t) => result let sampleN: (t, int) => result, error> let fromFloat: float => t let toString: t => string let normalize: t => t let toFloatOperation: ( t, ~toPointSetFn: toPointSetFn, ~distToFloatOperation: Operation.distToFloatOperation, ) => result let toPointSet: ( t, ~xyPointLength: int, ~sampleCount: int, ~xSelection: GenericDist_Types.Operation.pointsetXSelection=?, unit, ) => result let toSparkline: (t, ~sampleCount: int, ~buckets: int=?, unit) => result let truncate: ( t, ~toPointSetFn: toPointSetFn, ~leftCutoff: option=?, ~rightCutoff: option=?, unit, ) => result let algebraicCombination: ( t, ~toPointSetFn: toPointSetFn, ~toSampleSetFn: toSampleSetFn, ~arithmeticOperation: GenericDist_Types.Operation.arithmeticOperation, ~t2: t, ) => result let pointwiseCombination: ( t, ~toPointSetFn: toPointSetFn, ~arithmeticOperation: GenericDist_Types.Operation.arithmeticOperation, ~t2: t, ) => result let pointwiseCombinationFloat: ( t, ~toPointSetFn: toPointSetFn, ~arithmeticOperation: GenericDist_Types.Operation.arithmeticOperation, ~float: float, ) => result let mixture: ( array<(t, float)>, ~scaleMultiplyFn: scaleMultiplyFn, ~pointwiseAddFn: pointwiseAddFn, ) => result