From 5a941ee497ddf7e21014373a41bc8a603fb4b9f8 Mon Sep 17 00:00:00 2001 From: swrup Date: Thu, 4 Dec 2025 18:25:05 +0100 Subject: [PATCH] + wip DenomGroup --- src/api.ml | 58 ++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 58 insertions(+) diff --git a/src/api.ml b/src/api.ml index 19b615cb..b38e9f5d 100644 --- a/src/api.ml +++ b/src/api.ml @@ -963,3 +963,61 @@ module DenomCommon = struct |> mem "lost" (Jsont.option Jsont.bool) ~enc:lost |> finish end + +module DenomGroupRsa = struct + type t = { + rsa_pub: RsaPublicKey.t; + value: Amount.t; + fee_withdraw: Amount.t; + fee_deposit: Amount.t; + fee_refresh: Amount.t; + fee_refund: Amount.t; + } + + let jsont = + let make rsa_pub value fee_withdraw fee_deposit fee_refresh fee_refund = + { rsa_pub; value; fee_withdraw; fee_deposit; fee_refresh; fee_refund } + in + let rsa_pub v = v.rsa_pub in + let value v = v.value in + let fee_withdraw v = v.fee_withdraw in + let fee_deposit v = v.fee_deposit in + let fee_refresh v = v.fee_refresh in + let fee_refund v = v.fee_refund in + let open Jsont.Object in + map ~kind:"DenomGroupRsa" make + |> mem "rsa_pub" RsaPublicKey.jsont ~enc:rsa_pub + |> mem "value" Amount.jsont ~enc:value + |> mem "fee_withdraw" Amount.jsont ~enc:fee_withdraw + |> mem "fee_deposit" Amount.jsont ~enc:fee_deposit + |> mem "fee_refresh" Amount.jsont ~enc:fee_refresh + |> mem "fee_refund" Amount.jsont ~enc:fee_refund + |> finish +end + +module DenomGroup = struct + (* TODO +type DenomGroup = + | DenomGroupRsa + | DenomGroupCs + | DenomGroupRsaAgeRestricted + | DenomGroupCsAgeRestricted; + *) + type t = Rsa of DenomGroupRsa.t + + let to_octets = function Rsa denom -> RsaPublicKey.to_octets denom.rsa_pub + + let of_cs _v = + Jsont.Error.msg Jsont.Meta.none "CSDenominationKey are not supported" + + let of_rsa v = Rsa v + + let jsont = + let open Jsont.Object in + let rsa = Case.map "RSA" DenomGroupRsa.jsont ~dec:of_rsa in + let enc_case = function Rsa v -> Case.value rsa v in + let cases = Case.[ make rsa ] in + map ~kind:"DenomGroup" Fun.id + |> case_mem "cipher" Jsont.string ~enc:Fun.id ~enc_case cases + |> finish +end