diff --git a/src/api.ml b/src/api.ml index 646a74e6..80496bd8 100644 --- a/src/api.ml +++ b/src/api.ml @@ -627,3 +627,46 @@ module AmlOfficerSetup = struct |> mem "change_date" Timestamp.jsont ~enc:change_date |> finish end + +module ExchangePartnerSetupRequest = struct + type t = { + partner_base_url: string; + partner_pub: EddsaPublicKey.t; + wad_frequency: RelativeTime.t; + master_sig: PartnerConfigurationPS.t; + start_date: Timestamp.t; + end_date: Timestamp.t; + wad_fee: Amount.t; + } + + let jsont = + let make partner_base_url partner_pub wad_frequency master_sig start_date + end_date wad_fee = + { + partner_base_url; + partner_pub; + wad_frequency; + master_sig; + start_date; + end_date; + wad_fee; + } + in + let partner_base_url v = v.partner_base_url in + let partner_pub v = v.partner_pub in + let wad_frequency v = v.wad_frequency in + let master_sig v = v.master_sig in + let start_date v = v.start_date in + let end_date v = v.end_date in + let wad_fee v = v.wad_fee in + let open Jsont.Object in + map ~kind:"ExchangePartnerSetupRequest" make + |> mem "partner_base_url" Jsont.string ~enc:partner_base_url + |> mem "partner_pub" EddsaPublicKey.jsont ~enc:partner_pub + |> mem "wad_frequency" RelativeTime.jsont ~enc:wad_frequency + |> mem "master_sig" PartnerConfigurationPS.jsont ~enc:master_sig + |> mem "start_date" Timestamp.jsont ~enc:start_date + |> mem "end_date" Timestamp.jsont ~enc:end_date + |> mem "wad_fee" Amount.jsont ~enc:wad_fee + |> finish +end diff --git a/src/bin_signature.ml b/src/bin_signature.ml index e14a0ae7..cbb74660 100644 --- a/src/bin_signature.ml +++ b/src/bin_signature.ml @@ -515,6 +515,46 @@ module MasterAmlOfficerStatusPS = struct include MK (R) end +module PartnerConfigurationPS = struct + module R = struct + (* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *) + type r = { + partner_pub: MasterPublicKeyP.t; + start_date: TimestampNBO.t; + end_date: TimestampNBO.t; + wad_frequency: TimeRelativeNBO.t; + wad_fee: AmountNBO.t; + h_url: Hash_64_cstr.t; + } + + let bin = + let open Bin in + Purpose.make_bin Taler_signatures.master_partner_details + @@ fun _purpose -> + record + (fun + _purpose + partner_pub + start_date + end_date + wad_frequency + wad_fee + h_url + -> { partner_pub; start_date; end_date; wad_frequency; wad_fee; h_url }) + |+ Purpose.field _purpose + |+ field MasterPublicKeyP.bin (fun t -> t.partner_pub) + |+ field TimestampNBO.bin (fun t -> t.start_date) + |+ field TimestampNBO.bin (fun t -> t.end_date) + |+ field TimeRelativeNBO.bin (fun t -> t.wad_frequency) + |+ field AmountNBO.bin (fun t -> t.wad_fee) + |+ field Hash_64_cstr.bin (fun t -> t.h_url) + |> sealr + end + + include R + include MK (R) +end + (* ### BIN IMPL END ### *) module WithdrawRequestPS = struct @@ -994,18 +1034,6 @@ module AmlDecisionPS = struct } end -module PartnerConfigurationPS = struct - (* purpose.purpose = TALER_SIGNATURE_MASTER_PARNTER_DETAILS *) - type t = { - partner_pub: MasterPublicKeyP.t; - start_date: TimestampNBO.t; - end_date: TimestampNBO.t; - wad_frequency: TimeRelativeNBO.t; - wad_fee: AmountNBO.t; - h_url: Hash_64_cstr.t; - } -end - module ReserveOpenPS = struct (* purpose.purpose = TALER_SIGNATURE_WALLET_RESERVE_OPEN *) type t = {