module arch.node.engines.executor_config;

import prelude open;
import arch.node.engines.executor_messages open;
import arch.node.types.engine open;
import arch.node.types.messages open;
import arch.node.types.identities open;

type ExecutorCfg KVSKey Executable :=
  mkExecutorCfg@{
    timestamp : TxFingerprint;
    executable : Executable;
    lazy_read_keys : Set KVSKey;
    eager_read_keys : Set KVSKey;
    will_write_keys : Set KVSKey;
    may_write_keys : Set KVSKey;
    worker : EngineID;
    issuer : EngineID;
  };

module executor_config_example;
  
  executorCfg : EngineCfg (ExecutorCfg String ByteString) :=
    mkEngineCfg@{
      node := Curve25519PubKey "0xabcd1234";
      name := "executor";
      cfg :=
        mkExecutorCfg@{
          timestamp := 0;
          executable := "";
          lazy_read_keys := Set.empty;
          eager_read_keys := Set.empty;
          will_write_keys := Set.empty;
          may_write_keys := Set.empty;
          worker := mkPair none "";
          issuer := mkPair none "";
        };
    };
end;