module arch.node.engines.verification_config;

import prelude open;
import arch.node.engines.verification_messages open;
import arch.node.types.engine open;
import arch.node.types.messages open;
import arch.node.types.identities open;
import arch.system.identity.identity open hiding {ExternalIdentity};

type VerificationCfg :=
  mkVerificationCfg@{
    verifier
      : Set SignsForEvidence
        -> ExternalIdentity
        -> Verifier ByteString Backend Signable Commitment;
    backend : Backend;
    signsForEngineAddress : EngineID;
  };

module verification_config_example;
  
  verificationCfg : EngineCfg VerificationCfg :=
    mkEngineCfg@{
      node := Curve25519PubKey "0xabcd1234";
      name := "verification";
      cfg :=
        mkVerificationCfg@{
          verifier :=
            \{_ _ :=
              mkVerifier@{
                verify := \{_ _ _ := true};
                verifierHash :=
                  mkHASH@{
                    ordKey :=
                      mkOrdkey@{
                        compare := Ord.cmp;
                      };
                    hash := \{x := "0x1234abcd"};
                  };
              }};
          backend := BackendLocalMemory;
          signsForEngineAddress := mkPair none "Blah";
        };
    };
end;