(* TODO number - number is "float", but we probably want int everywhere instead - numeric values capped at 2^53 -1 inclusive because json time - better types - issues with "never" = uint64_max *) open Types module ErrorDetail = struct (* TODO GANA error codes https://git.gnunet.org/gana.git/tree/gnu-taler-error-codes/registry.rec *) type t = { code: int; hint: string option; } end module Timestamp = struct type t = | Seconds of float | Never let of_ptime p = Seconds (Ptime.to_float_s p) end module RelativeTime = struct type t = | Microseconds of float | Forever end module RsaDenominationKey = struct type t = { age_mask: int; rsa_pub: RsaPublicKey.t; } end (* not implemented *) module CSDenominationKey = struct (* Clause Schnorr *) type t = { age_mask: int; cs_pub: string; } end module DenominationKey = struct type t = | Rsa of RsaDenominationKey.t | CS of CSDenominationKey.t end module FutureSignKey = struct type t = { key: EddsaPublicKey.t; stamp_start: Timestamp.t; stamp_expire: Timestamp.t; stamp_end: Timestamp.t; signkey_secmod_sig: EddsaSignature.t; } end module FutureDenom = struct type t = { section_name: string; value: Amount.t; stamp_start: Timestamp.t; stamp_expire_withdraw: Timestamp.t; stamp_expire_deposit: Timestamp.t; stamp_expire_legal: Timestamp.t; denom_pub: DenominationKey.t; fee_withdraw: Amount.t; fee_deposit: Amount.t; fee_refresh: Amount.t; fee_refund: Amount.t; denom_secmod_sig: EddsaSignature.t; } end module FutureKeysResponse = struct type t = { future_denoms: FutureDenom.t list; future_signkeys: FutureSignKey.t list; master_pub: EddsaPublicKey.t; denom_secmod_public_key: EddsaPublicKey.t; signkey_secmod_public_key: EddsaPublicKey.t; } end