Module Make.Base58

type 'a encoding
val simple_decode : 'a encoding -> string -> 'a option

Decoder for a given kind of data. It returns None when the decoded data does not start with the expected prefix.

val simple_encode : 'a encoding -> 'a -> string

Encoder for a given kind of data.

type data = ..

An extensible sum-type for decoded data: one case per known "prefix". See for instance Hash.Block_hash.Hash or Environment.Ed25519.Public_key_hash.

val register_encoding : prefix:string -> length:int -> to_raw:('a -> string) -> of_raw:(string -> 'a option) -> wrap:('a -> data) -> 'a encoding

Register a new encoding. The function might raise Invalid_arg if the provided prefix overlaps with a previously registered prefix. The to_raw and of_raw are the ad-hoc serialisation/deserialisation for the data. The wrap should wrap the deserialised value into the extensible sum-type data (see the generic function decode).

val check_encoded_prefix : 'a encoding -> string -> int -> unit

Checks that an encoding has a certain prefix and length.

val decode : string -> data option

Generic decoder. It returns None when the decoded data does not start with a registered prefix.