If we take every ConfigurableCorePool as a state machine, then a SimulatorRoadmapManager can be taken as PoolState container as well as ConfigurableCorePool manager. At this point, every state machine can be expanded as a roadmap of states.
First let's get the instance of SimulatorRoadmapManager from SimulatorClient.
let simulatorRoadmapManager: SimulatorRoadmapManager =
You can list and check all ConfigurableCorePool created by Tuner within the program.
let pools: ConfigurableCorePool[] = await simulatorRoadmapManager.listRoutes();
With a ConfigurableCorePool id, Tuner can print route from the first pool state to current pool state of the state machine in pretty format.
await simulatorRoadmapManager.printRoute(;
Also you can persist the route for selecting them in the internal database later.
let roadmapId = await simulatorRoadmapManager.persistRoute(,
"description for roadmap"
Then load the roadmap and print the route in pretty format.
await simulatorRoadmapManager.loadAndPrintRoute(roadmapId);
Note: As the storage scale of Uniswap V3 CorePool(up to 160,000+ Ticks and unlimited Positions), frequent persistence of route as well as snapshot is not recommended. Please pay attention to space cost.