class BootstrapCheckpointHandler {

  public Checkpoint createInitialBootstrapCheckpoint(Checkpoint ckpt, Long sinceScn)
  {
    if (sinceScn < 0)
    {
      throw new DatabusRuntimeException("sinceScn must be non-negative:" + sinceScn);
    }

    if (null == ckpt)
    {
      // purely for test cases to work.
      ckpt = new Checkpoint();
    }
    // TODO (DDSDBUS-85): For now, we use the same startScn, min(windowscn) from bootstrap_applier_state,
    // for snapshot all sources. It makes catchup inefficient. We need to optimize it later.
    ckpt.resetBootstrap();

    ckpt.setConsumptionMode(DbusClientMode.BOOTSTRAP_SNAPSHOT);

    // set since scn
    ckpt.setBootstrapSinceScn(sinceScn);
    setSnapshotSource(ckpt, 0);
    setCatchupSource(ckpt, 0);
    ckpt.startSnapShotSource();

    return ckpt;
  }

  public  BootstrapCheckpointHandler(List<String> sourceNames);
  public  BootstrapCheckpointHandler(String... sourceNames);

}