// Package v1 provides a wrapper around the [DKLs18](https://eprint.iacr.org/2018/499.pdf) sign and dkg and provides // serialization, serialization, and versioning for the serialized data. package v1 import ( "source.quilibrium.com/quilibrium/monorepo/nekryptology/pkg/core/protocol" ) // Basic protocol interface implementation that calls the next step func in a pre-defined list type protoStepper struct { steps []func(input *protocol.Message) (*protocol.Message, error) step int } // Next runs the next step in the protocol and reports errors or increments the step index func (p *protoStepper) Next(input *protocol.Message) (*protocol.Message, error) { if p.complete() { return nil, protocol.ErrProtocolFinished } // Run the current protocol step and report any errors output, err := p.steps[p.step](input) if err != nil { return nil, err } // Increment the step index and report success p.step++ return output, nil } // Reports true if the step index exceeds the number of steps func (p *protoStepper) complete() bool { return p.step >= len(p.steps) /**/ }