client_side_validation 0.12.0

Client-side validation foundation library
Documentation
{-
  Id: stl:wH1wmGy2-0vBNWxL-MK~_eQb-Ayskv~e-oFmDrzI-O_IW_P0#biology-news-adam
  Name: CommitVerify
  Version: 0.1.0
  Description: Client-side-validation deterministic commitments
  Author: Dr Maxim Orlovsky <orlovsky@lnp-bp.org>
  Copyright (C) 2023-2024 LNP/BP Standards Association. All rights reserved.
  License: Apache-2.0
-}

@context
typelib CommitVerify

import Std#delete-roman-hair
  use U5#orbit-graph-sonic


@mnemonic(miami-legacy-empire)
data Commitment        : [Byte ^ 32]

@mnemonic(model-tourist-formal)
data Leaf              : inhabited#16 (protocol ProtocolId, message Message)
                       | entropy (entropy U64, pos U32)

@mnemonic(gong-elite-seminar)
data MerkleBlock       : method Method
                       , depth Std.U5
                       , cofactor U16
                       , crossSection [TreeNode ^ 1..0xffffffff]
                       , entropy U64?

@mnemonic(aztec-miracle-igloo)
data MerkleConcealed   : depth Std.U5
                       , cofactor U16
                       , merkleRoot MerkleHash

@mnemonic(horse-popcorn-bundle)
data MerkleHash        : [Byte ^ 32]

@mnemonic(cadet-guitar-trilogy)
data MerkleNode        : branching NodeBranching
                       , depth U8
                       , width U256
                       , node1 MerkleHash
                       , node2 MerkleHash

@mnemonic(edison-pablo-orinoco)
data MerkleProof       : method Method
                       , pos U32
                       , cofactor U16
                       , path [MerkleHash ^ ..0x20]

@mnemonic(jump-respond-panda)
data MerkleTree        : method Method
                       , depth Std.U5
                       , entropy U64
                       , cofactor U16
                       , messages {ProtocolId -> ^ ..0xffffff Message}
                       , map {U32 -> ^ ..0xffffff ProtocolId, Message}

@mnemonic(druid-blitz-rover)
data Message           : [Byte ^ 32]

@mnemonic(subject-justin-cowboy)
data Method            : sha256t | (|)


@mnemonic(member-dexter-price)
data NodeBranching     : void | single | branch


@mnemonic(shadow-eclipse-program)
data ProtocolId        : [Byte ^ 32]

@mnemonic(origin-roger-relax)
data ReservedBytes1    : [Byte ^ 1]

@mnemonic(marble-prepare-arnold)
data ReservedBytes10   : [Byte ^ 10]

@mnemonic(bazooka-orchid-mike)
data ReservedBytes11   : [Byte ^ 11]

@mnemonic(panther-andrea-granite)
data ReservedBytes12   : [Byte ^ 12]

@mnemonic(chief-pattern-evita)
data ReservedBytes13   : [Byte ^ 13]

@mnemonic(prize-edison-classic)
data ReservedBytes14   : [Byte ^ 14]

@mnemonic(dispute-yoga-july)
data ReservedBytes15   : [Byte ^ 15]

@mnemonic(romeo-imitate-shelter)
data ReservedBytes16   : [Byte ^ 16]

@mnemonic(basic-alert-tomato)
data ReservedBytes17   : [Byte ^ 17]

@mnemonic(pioneer-jupiter-salary)
data ReservedBytes18   : [Byte ^ 18]

@mnemonic(reunion-druid-postage)
data ReservedBytes19   : [Byte ^ 19]

@mnemonic(florida-libra-circus)
data ReservedBytes2    : [Byte ^ 2]

@mnemonic(bingo-ventura-reflex)
data ReservedBytes20   : [Byte ^ 20]

@mnemonic(taxi-roman-vision)
data ReservedBytes21   : [Byte ^ 21]

@mnemonic(almond-airline-igor)
data ReservedBytes22   : [Byte ^ 22]

@mnemonic(express-initial-nixon)
data ReservedBytes23   : [Byte ^ 23]

@mnemonic(elvis-uniform-invite)
data ReservedBytes24   : [Byte ^ 24]

@mnemonic(ginger-pump-toyota)
data ReservedBytes25   : [Byte ^ 25]

@mnemonic(mouse-america-basket)
data ReservedBytes26   : [Byte ^ 26]

@mnemonic(senator-summer-jason)
data ReservedBytes27   : [Byte ^ 27]

@mnemonic(lagoon-target-viva)
data ReservedBytes28   : [Byte ^ 28]

@mnemonic(france-finland-edition)
data ReservedBytes29   : [Byte ^ 29]

@mnemonic(avatar-deal-product)
data ReservedBytes3    : [Byte ^ 3]

@mnemonic(lotus-asia-rodent)
data ReservedBytes30   : [Byte ^ 30]

@mnemonic(sharp-habitat-first)
data ReservedBytes31   : [Byte ^ 31]

@mnemonic(turbo-denmark-earth)
data ReservedBytes32   : [Byte ^ 32]

@mnemonic(young-goblin-academy)
data ReservedBytes4    : [Byte ^ 4]

@mnemonic(violin-journal-service)
data ReservedBytes5    : [Byte ^ 5]

@mnemonic(joker-peru-brave)
data ReservedBytes6    : [Byte ^ 6]

@mnemonic(ricardo-domino-logic)
data ReservedBytes7    : [Byte ^ 7]

@mnemonic(rudolf-tape-adrian)
data ReservedBytes8    : [Byte ^ 8]

@mnemonic(slow-sport-radical)
data ReservedBytes9    : [Byte ^ 9]

@mnemonic(pizza-sherman-sound)
data StrictHash        : [Byte ^ 32]

@mnemonic(bahama-toyota-disco)
data TreeNode          : concealedNode (depth Std.U5, hash MerkleHash)
                       | commitmentLeaf (protocolId ProtocolId, message Message)