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 operationToFloat: ( t, ~toPointSetFn: toPointSetFn, ~operation: Operation.distToFloatOperation, ) => result let toPointSet: (t, int) => result let truncate: ( t, ~toPointSetFn: toPointSetFn, ~leftCutoff: option=?, ~rightCutoff: option=?, unit, ) => result let algebraicCombination: ( t, ~toPointSetFn: toPointSetFn, ~toSampleSetFn: toSampleSetFn, ~operation: GenericDist_Types.Operation.arithmeticOperation, ~t2: t, ) => result let pointwiseCombination: ( t, ~toPointSetFn: toPointSetFn, ~operation: GenericDist_Types.Operation.arithmeticOperation, ~t2: t, ) => result let pointwiseCombinationFloat: ( t, ~toPointSetFn: toPointSetFn, ~operation: GenericDist_Types.Operation.arithmeticOperation, ~float: float, ) => result let mixture: ( array<(t, float)>, ~scaleMultiplyFn: scaleMultiplyFn, ~pointwiseAddFn: pointwiseAddFn, ) => result