func Presign(config *Config, signers []party.ID, pl *pool.Pool) protocol.StartFunc {
	return presign.StartPresign(config, signers, nil, pl)
}
Presign generates a preprocessed signature that does not depend on the message being signed.
When the message becomes available, the same participants can efficiently combine their shares
to produce a full signature with the PresignOnline protocol.
Note: the PreSignatures should be treated as secret key material.
Returns *ecdsa.PreSignature if successful.
package cmp
import (
	"github.com/taurusgroup/multi-party-sig/internal/round"
	"github.com/taurusgroup/multi-party-sig/pkg/ecdsa"
	"github.com/taurusgroup/multi-party-sig/pkg/math/curve"
	"github.com/taurusgroup/multi-party-sig/pkg/party"
	"github.com/taurusgroup/multi-party-sig/pkg/pool"
	"github.com/taurusgroup/multi-party-sig/pkg/protocol"
	"github.com/taurusgroup/multi-party-sig/protocols/cmp/config"
	"github.com/taurusgroup/multi-party-sig/protocols/cmp/keygen"
	"github.com/taurusgroup/multi-party-sig/protocols/cmp/presign"
	"github.com/taurusgroup/multi-party-sig/protocols/cmp/sign"
)
type Config = config.Config
func EmptyConfig(group curve.Curve) *Config {
	return &Config{
		Group: group,
	}
}
func Keygen(group curve.Curve, selfID party.ID, participants []party.ID, threshold int, pl *pool.Pool) protocol.StartFunc {
	info := round.Info{
		ProtocolID:       "cmp/keygen-threshold",
		FinalRoundNumber: keygen.Rounds,
		SelfID:           selfID,
		PartyIDs:         participants,
		Threshold:        threshold,
		Group:            group,
	}
	return keygen.Start(info, pl, nil)
}
func Refresh(config *Config, pl *pool.Pool) protocol.StartFunc {
	info := round.Info{
		ProtocolID:       "cmp/refresh-threshold",
		FinalRoundNumber: keygen.Rounds,
		SelfID:           config.ID,
		PartyIDs:         config.PartyIDs(),
		Threshold:        config.Threshold,
		Group:            config.Group,
	}
	return keygen.Start(info, pl, config)
}
func Sign(config *Config, signers []party.ID, messageHash []byte, pl *pool.Pool) protocol.StartFunc {
	return sign.StartSign(config, signers, messageHash, pl)
}