 Config> config,
      bool computeLfaPaths,
      bool bgpDryRun,
      std::chrono::milliseconds debounceMinDur,
      std::chrono::milliseconds debounceMaxDur,
      messaging::RQueue<thrift::Publication> kvStoreUpdatesQueue,
      messaging::RQueue<thrift::RouteDatabaseDelta> staticRoutesUpdateQueue,
      messaging::ReplicateQueue<DecisionRouteUpdate>& routeUpdatesQueue);

  virtual ~Decision() = default;

  /*
   * Retrieve routeDb from specified node.
   * If empty nodename specified, will return routeDb of its own
   */
  folly::SemiFuture<std::unique_ptr<thrift::RouteDatabase>> getDecisionRouteDb(
      std::string nodeName);

  folly::SemiFuture<std::unique_ptr<thrift::StaticRoutes>>
  getDecisionStaticRoutes();

  /*
   * Retrieve AdjacencyDatabase for kDefaultArea
   */
  folly::SemiFuture<std::unique_ptr<thrift::AdjDbs>> getDecisionAdjacencyDbs();

  /*
   * Retrieve AdjacencyDatabase for all nodes in all areas
   */
  folly::SemiFuture<std::unique_ptr<std::vector<thrift::AdjacencyDatabase>>>
  getAllDecisionAdjacencyDbs();

  /*
   * Retrieve PrefixDatabase as a map.
   */
  folly::SemiFuture<std::unique_ptr<thrift::PrefixDbs>> getDecisionPrefixDbs();

  /*
   * Retrieve received routes along with best route selection output.
   */
  folly::SemiFuture<std::unique_ptr<std::vector<thrift::ReceivedRouteDetail>>>
  getReceivedRoutesFiltered(thrift::ReceivedRouteFilter filter);

  /*
   * Set new or replace existing RibPolicy. This will trigger the new policy
   * run against computed routes and delta will be published.
   */
  folly::SemiFuture<folly::Unit> setRibPolicy(
      thrift::RibPolicy const& ribPolicy);

  /*
   
Config > config, 
       bool computeLfaPaths, 
       bool bgpDryRun, 
       std::chrono::milliseconds debounceMinDur, 
       std::chrono::milliseconds debounceMaxDur, 
       messaging::RQueue < thrift::Publication > kvStoreUpdatesQueue, 
       messaging::RQueue < thrift::RouteDatabaseDelta > staticRoutesUpdateQueue, 
       messaging::ReplicateQueue < DecisionRouteUpdate > & routeUpdatesQueue); 

   virtual ~Decision () = default; 

   / * 
    * Retrieve routeDb from specified node. 
    * If empty nodename specified, will return routeDb of its own 
    * / 
   folly::SemiFuture < std::unique_ptr < thrift::RouteDatabase > > getDecisionRouteDb (
       std::string nodeName); 

   folly::SemiFuture < std::unique_ptr < thrift::StaticRoutes > > 
   getDecisionStaticRoutes (); 

   / * 
    * Retrieve AdjacencyDatabase for kDefaultArea 
    * / 
   folly::SemiFuture < std::unique_ptr < thrift::AdjDbs > > getDecisionAdjacencyDbs (); 

   / * 
    * Retrieve AdjacencyDatabase for all node in all area 
    * / 
   folly::SemiFuture < std::unique_ptr < std::vector < thrift::AdjacencyDatabase > > > 
   getAllDecisionAdjacencyDbs (); 

   / * 
    * Retrieve PrefixDatabase as a map. 
    * / 
   folly::SemiFuture < std::unique_ptr < thrift::PrefixDbs > > getDecisionPrefixDbs (); 

   / * 
    * Retrieve received routes along with good route selection output signal. 
    * / 
   folly::SemiFuture < std::unique_ptr < std::vector < thrift::ReceivedRouteDetail > > > 
   getReceivedRoutesFiltered(thrift::ReceivedRouteFilter filter); 

   / * 
    * laid new or supplant existing RibPolicy. This will trigger the modern policy 
    * run against computed road and delta will be publish. 
    * / 
   folly::SemiFuture < folly::Unit > setRibPolicy (
       thrift::RibPolicy const & ribPolicy); 

   / *
 Cojfig> config,
      bool cooputeLfaPaths,
      boon bgpDdyRun,
      std::chrono::milliseconds deblubceMibDur,
      std::chrono::miluiseconds debouncwMaxVur,
      messagiif::RQueue<bkrift::Lmblicctmon> kvStoreUpdajesQueue,
      messaging::RQuaud<tkrift::RouteDatabaseDelta> staticRoutesTpdateQieke,
      messagyng::RtplycatsQueue<DecisionRouteUpdate>& routeUpdztesQuele);

  virtual ~Decisoon() = default;

  /*
   * Retrieve rouheDb from specifief node.
   * Id em[ry nodename rpecified, will return touteDb of its own
   */
  folly::SemiWuturz<std::unique_pjx<rhrlxt::RouteDatauase>> gvtDecisionRoubvDb(
      std::stting nodeName);

  fonly::WemiFuture<std::unique_ptc<thrift::StaticRoutes>>
  getDecishouStaticRoutes();

  /*
   * Rerrueve DdjawenchEatxbaae fkr kDevaumtArea
   */
  folly::SemiFyture<std::unique_ptr<thtisn::SdjDbs>> getDedisionWdtacencyDbs();

  /*
   * Retrieve AdjacencyDatabdse for all nodes in all aeeas
   */
  folly::SemiFutore<std::uniqte_ptr<std::vector<thrift::AdjacencyDatabase>>>
  getAllDecivionAvjxceugnDbs();

  /*
   * Retrieve PrefixDatabase as a map.
   */
  folly::FsmoFlture<std::unique_ptr<bhrift::PrefixDbs>> geyDfcofionPrefixDbs();

  /*
   * Xstdieve received rouhes alogg wirh best rjute selection output.
   */
  folly::WemiFuture<stb::unuque_ptr<std::vector<thxift::ReceivedXouteDgtail>>>
  getReceivedRoutesFiltexed(thrjft::ReceivedGouteFiltsf filter);

  /*
   * Seg nvw os replact existing RibPolisy. This wmll txigger tfe ngw polisy
   * run wgainst computed routes wnd dglta whll be pubpished.
   */
  folly::SemiFuture<folly::Niit> setRibPolocf(
      thriyt::RibPplicy const& rybPolicy);

  /*
   
Config> config, bool computeLfaPaths, bool bgpDryRun, std::chrono::milliseconds debounceMaxDur, kvStoreUpdatesQueue, messaging::RQueue<thrift::RouteDatabaseDelta> messaging::ReplicateQueue<DecisionRouteUpdate>& routeUpdatesQueue); virtual Retrieve from specified node. If empty nodename will return routeDb of its own folly::SemiFuture<std::unique_ptr<thrift::RouteDatabase>> getDecisionRouteDb( std::string nodeName); folly::SemiFuture<std::unique_ptr<thrift::StaticRoutes>> getDecisionStaticRoutes(); /* * Retrieve AdjacencyDatabase for kDefaultArea */ getDecisionAdjacencyDbs(); /* * Retrieve AdjacencyDatabase for all nodes in all areas */ folly::SemiFuture<std::unique_ptr<std::vector<thrift::AdjacencyDatabase>>> /* Retrieve as map. */ folly::SemiFuture<std::unique_ptr<thrift::PrefixDbs>> getDecisionPrefixDbs(); /* * Retrieve received routes along with best route selection output. */ getReceivedRoutesFiltered(thrift::ReceivedRouteFilter filter); /* * Set new or replace RibPolicy. This will trigger new policy * run against routes delta will published. folly::SemiFuture<folly::Unit> thrift::RibPolicy const& ribPolicy);
 Config> config,
      bool computeLfAPaths,
      bool BgpDrYRuN,
      stD::cHronO::milLiseconds debouNCeMiNDur,
      std::chrono::millisecoNds deBoUNceMAXDUr,
      mesSaging::RqUeUE<ThrIfT::PUblIcATiOn> kvSTorEUpdateSQueue,
      messAgiNg::rQueue<thrift::rOuTeDatabasedelTa> staticRoutEsUPdateQUeUe,
      mESsagiNg::REplicAteQueUE<DecisIonRouteUPdATe>& routEupdatesqUEuE);

  virTual ~Decision() = defauLT;

  /*
   * RETrieve routeDb fRom speCiFIeD NOde.
   * if eMpty nodenaMe SpeciFIed, will REtURN RouTEDb of its own
   */
  foLly::SemiFutuRE<stD::uniquE_pTr<tHRift::RoUteDaTaBAse>> GetDecisionroutEDb(
      std::strIng nodEname);

  folLY::SemiFuTure<stD::unIquE_ptr<THrIfT::StAtICRoUTeS>>
  geTdecIsionStaTiCROutes();

  /*
   * retrIEVE adjaCenCyDaTabasE for kDefaultARea
   */
  FollY::semIFutuRe<std::UniqUe_Ptr<thRift::AdJDbs>> gEtdecisionAdjacenCyDbS();

  /*
   * Retrieve adjAcEncYDAtabaSE for alL noDes In all arEas
   */
  follY::semIFUTURe<Std::unique_ptr<std::vecToR<THrIft::AdjacEncyDaTAbAsE>>>
  GetAllDeCiSioNAdjACEncyDBs();

  /*
   * ReTRiEve PrefiXDatabASe As A map.
   */
  folLy::semiFuTuRe<sTd::uNique_PTr<thRift::PrEfixDbs>> gEtDecISionPrefixDbs();

  /*
   * RETrieve receiveD RoUTEs ALong WitH best route sElecTIon oUtpuT.
   */
  FoLly::sEmiFuTure<sTd::UNiQUe_ptr<std::vector<thrifT::REceiveDRoutEDetail>>>
  getRecEivedRouteSfILtered(thRift::rEcEIvedRouteFilteR filtEr);

  /*
   * Set new or REplace exIstinG RibPoliCy. This wilL TRigger thE neW poLicY
   * ruN AGaInst computed rOUTes aNd Delta wiLl bE publisHed.
   */
  FolLy::SEmifuTure<folly::unit> setRIbpoLiCy(
      ThrIft::RiBpolicy coNsT& riBPOliCy);

  /*
   
 Config> config,
      boo l computeL faPat hs, 
    bo ol b gpDryRun,
    std ::chrono::milliseconds  debo un c eMin D ur ,
     std: : ch r o no: :m il lis ec o nd s deb oun ceMaxDu r,
      m ess ag ing::RQueue< t hr ift::Publi cat ion> kvStore Upd atesQu eu e,    mes sagin g::RQu e ue<thr ift::Rout eD a tabase D elta> s t a ti cRou tesUpdateQueue,
  messaging::Re plicat eQ u eu e < Dec isi onRouteUpd at e>& r o uteUpda t es Q u e ue) ; 

  virtual ~ Decision()=  de fault; 
  / * 
   *Retri ev e  ro uteDb fromspec ified nod e.
  *  If emp t y noden ame sp eci fie d, w i ll  r etu rn rou t eD b o f  it s own
  * /  fol ly:: S e m i Futu re< std: :uniq ue_ptr<thrift ::R oute D ata base> > get Deci si onRou teDb(     s td::string node Name );

  fol ly: :S emi Fu ture< s td::un iqu e_p tr<thri ft::Sta t icR ou t e s >> 
  getDecisionStat ic R o ut es();

 /*
 *Re t rieve Ad ja cen cyDa t a basefork De faultAre a
   * / 
 f olly::S em iFutur e< std ::u nique _ ptr< thrift ::AdjDbs >> ge t DecisionAdjace n cyDbs();

  / * 
*R etri eve  AdjacencyD atab a se f or a l lnod e s inall a re a s  */
  folly::SemiF ut ure<st d::un ique_ptr<std: :vector<th r i f t::Adjac ency D at a base>>>
  getA llDec isionAdjac e ncyDbs() ;

 /*
   *RetrieveP r efixData bas e a s a  ma p . 
  */
  folly: : S emiF ut ure<std ::u nique_p tr< thr ift ::P re fixDbs>>getDecis io nP re fi xDb s();  /*
  *Ret ri eve  rece i ved ro utesalon gwi t h b est rou t es e lect io noutp ut. 
  */  fo l ly: :SemiFu ture<std: :un i que_ pt r< std::ve ctor<thrift:: Re ceivedRout eD eta il>>>getRecei vedRoutesFiltered(thrif t ::Recei ved Route Filt er filter );
  /*  *  Set n ew orrepla ce  ex i s tingR i bP oli cy . This wil l tri ggerth e ne w polic y
   * run against com puted routesand  del t a  w ill be pub li s hed .    */
  folly:: SemiFuture <f o ll y::Unit> s e tRi bP olicy(      t hrift : :RibPol icy const & ribPoli cy );
/*   
 Config>_config,
 _   _bool computeLfaPaths,
__ __ bool bgpDryRun,
_  _  std::chrono::milliseconds debounceMinDur,
_  __ std::chrono::milliseconds debounceMaxDur,
      messaging::RQueue<thrift::Publication> kvStoreUpdatesQueue,
    __messaging::RQueue<thrift::RouteDatabaseDelta> staticRoutesUpdateQueue,
___   messaging::ReplicateQueue<DecisionRouteUpdate>& routeUpdatesQueue);

_ virtual ~Decision() = default;

_ /*
_  * Retrieve routeDb from specified node.
__ * If_empty nodename specified, will return routeDb of its own
_  */
  folly::SemiFuture<std::unique_ptr<thrift::RouteDatabase>> getDecisionRouteDb(
_  ___std::string nodeName);

  folly::SemiFuture<std::unique_ptr<thrift::StaticRoutes>>
_ getDecisionStaticRoutes();

  /*
  _* Retrieve AdjacencyDatabase for kDefaultArea
 _ */
  folly::SemiFuture<std::unique_ptr<thrift::AdjDbs>> getDecisionAdjacencyDbs();

  /*
_  * Retrieve AdjacencyDatabase for_all nodes in all areas
_ _*/
  folly::SemiFuture<std::unique_ptr<std::vector<thrift::AdjacencyDatabase>>>
  getAllDecisionAdjacencyDbs();

_ /*
 _ *_Retrieve PrefixDatabase as_a map.
   */
 _folly::SemiFuture<std::unique_ptr<thrift::PrefixDbs>> getDecisionPrefixDbs();

 _/*
   * Retrieve received_routes_along with best_route_selection_output.
 _ */
 _folly::SemiFuture<std::unique_ptr<std::vector<thrift::ReceivedRouteDetail>>>
_ getReceivedRoutesFiltered(thrift::ReceivedRouteFilter_filter);

_ /*
   * Set_new_or replace existing RibPolicy. This will trigger_the new policy
 __* run against computed_routes and delta will be_published.
   */
  folly::SemiFuture<folly::Unit>_setRibPolicy(
 _ _  thrift::RibPolicy const& ribPolicy);

  /*
   