interface ECDHCyclicGroup : Type -> TypeScalar : TypeElement : Typediffie_hellman : Scalar -> Element -> Maybe (List Bits8)generate_key_pair : MonadRandom m => m (Scalar, Element)deserialize_pk : List Bits8 -> Maybe Elementserialize_pk : Element -> List Bits8Scalar : ECDHCyclicGroup a => TypeElement : ECDHCyclicGroup a => Typediffie_hellman : {auto __con : ECDHCyclicGroup a} -> Scalar -> Element -> Maybe (List Bits8)generate_key_pair : {auto __con : ECDHCyclicGroup a} -> MonadRandom m => m (Scalar, Element)deserialize_pk : {auto __con : ECDHCyclicGroup a} -> List Bits8 -> Maybe Elementserialize_pk : {auto __con : ECDHCyclicGroup a} -> Element -> List Bits8deserialize_then_dh : {auto {conArg:4197} : ECDHCyclicGroup dh} -> Scalar -> List Bits8 -> Maybe (List Bits8)data X25519_DH : Typedata X448_DH : Type