import { Scroller } from './scroller';
import { Reactive } from './classes/reactive';
import { Item } from './classes/item';
import { WorkflowParams, ProcessName, ProcessPayload, ProcessClass, ProcessSubject, WorkflowError, InterruptParams, StateMachineMethods, ScrollerWorkflow } from './interfaces/index';
export declare class Workflow<ItemData = unknown> {
  isInitialized: boolean;
  disposed: boolean;
  initTimer: ReturnType<typeof setTimeout> | null;
  adapterRun$: Reactive<ProcessSubject>;
  cyclesDone: number;
  cyclesDone$: Reactive<number>;
  interruptionCount: number;
  errors: WorkflowError[];
  private offScroll;
  readonly propagateChanges: WorkflowParams<ItemData>['run'];
  readonly stateMachineMethods: StateMachineMethods<ItemData>;
  scroller: Scroller<ItemData>;
  constructor(params: WorkflowParams<ItemData>);
  init(): void;
  changeItems(items: Item<ItemData>[]): void;
  callWorkflow(processSubject: ProcessSubject): void;
  getUpdater(): ScrollerWorkflow<ItemData>;
  process(data: ProcessSubject): void;
  runProcess(): ({ run, process, name }: ProcessClass) => (...args: unknown[]) => void;
  onError(process: ProcessName, payload?: ProcessPayload): void;
  interrupt({ process, finalize, datasource }: InterruptParams<ItemData>): void;
  done(): void;
  dispose(): void;
  finalize(): void;
}
