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