(* hardcoded config for now *)

let amount s = Amount.of_string s |> Result.get_ok
let zero_eur = amount "EUR:0.00"
let dummy_duration = Ptime.Span.of_int_s 99999999

module Exchange = struct
  let currency = "EUR"
  let currency_round_unit = amount "EUR:0.01"
  let db = "postgres"
  let attribute_encryption_key = "uhuhg" (* high-entropy nonce. *)
  let port = 3696

  let master_public_key =
    "8MQF2XPWCKCW4199JFPE08X7Y9XAX21SF2HD8NZKXM3PY3CMCJ90===="
    |> B32.decode
    |> Result.get_ok
    |> Mirage_crypto_ec.Ed25519.pub_of_octets
    |> Result.get_ok

  let stefan_abs = zero_eur
  let stefan_log = zero_eur
  let stefan_lin = 0.0
  let signkey_legal_duration = dummy_duration
  let max_keys_caching = 9999999
  let max_requests = 99999999
  let terms_dir = Fpath.(v "terms")
  let terms_etag = "0" |> Headers_lib.Etag.of_crockford32 |> Result.get_ok
  let privacy_dir = Fpath.(v "privacy")
  let privacy_etag = "0" |> Headers_lib.Etag.of_crockford32 |> Result.get_ok
  let enable_kyc = `NO
end

let currency_eur =
  Types.Config_types.Currency.
    {
      enabled= `NO;
      code= "EUR";
      name= "euro";
      fractional_input_digits= 2;
      fractional_normal_digits= 2;
      fractional_trailing_zero_digits= 2;
      alt_unit_names= [ (0, "E"); (3, "kE") ];
    }

module Secmod_rsa = struct
  let lookahead_sign = dummy_duration
  let overlap_duration = dummy_duration
  let sm_priv_key = Fpath.(v "rsa_key.priv")
  let key_dir = Fpath.(v "rsa")
end

module Secmod_eddsa = struct
  let lookahead_sign = dummy_duration
  let overlap_duration = dummy_duration
  let sm_priv_key = Fpath.(v "eddsa_key.priv")
  let key_dir = Fpath.(v "eddsa")
end

let coin_kudo_1 =
  Types.Config_types.Coin.
    {
      section_name= "kudo_1";
      value= amount "EUR:0.01";
      duration_withdraw= dummy_duration;
      duration_spend= dummy_duration;
      duration_legal= dummy_duration;
      fee_withdraw= zero_eur;
      fee_deposit= zero_eur;
      fee_refresh= zero_eur;
      fee_refund= zero_eur;
      cipher= `RSA;
      rsa_keysize= 2048;
      age_restricted= `NO;
    }

let coin_kudo_2 =
  { coin_kudo_1 with section_name= "kudo_2"; value= amount "EUR:0.02" }

let coins = [ coin_kudo_1; coin_kudo_2 ]
