Key share of Threshold Signature Scheme (TSS)
TSS protocols often share the same structure of key share. Having a separate crate with definition of the key share struct help reusing the code, keeping different implementations compatible and interopable.
The crate provides [DirtyCoreKeyShare] that contains data such as: secret share, other signers commitments,
public key and etc.
[DirtyCoreKeyShare] may contain any data, not necessarily consistent. TSS protocol implementations typically
don't want to handle inconsistent key shares and would rather assume that it's valid. Valid<T>
is a type-guard stating that the value T it holds was validated. So, Valid<DirtyCoreKeyShare> (or
[CoreKeyShare] type alias) can be used to express that only valid key shares are accepted.