import { FireEnjinFetchEvent } from "@fireenjin/sdk";
import { EventEmitter } from "../../../stencil-public-runtime";
import { Flow, Step, Template } from "../../../sdk";
export declare class FlowRider {
  flowEl: HTMLFireenjinFlowElement;
  successTemplateEl: HTMLDivElement;
  fireenjinFetch: EventEmitter<FireEnjinFetchEvent>;
  /**
   * The form data entered by the user
   */
  formData: any;
  successIcon: string;
  flowId: string;
  renderId?: string;
  materialId?: string;
  fetch: string;
  stepInput: {
    [stepName: string]: any;
  };
  endpoint: string;
  isLoading: boolean;
  templates: Template[];
  beforeSubmit?: (data: any) => Promise<any>;
  /**
   * The template to use for success at end of flow
   */
  successTemplate: any;
  /**
   * The success message to show beneath the icon
   */
  successMessage: string;
  /**
   * The template to use for error
   */
  errorTemplate: any;
  /**
   * Should we show a progress bar for the flow?
   */
  showProgress: boolean;
  /**
   * The current path of the flow they are in
   */
  currentPath: string;
  /**
   * The current step of the path they are on
   */
  currentStep: string;
  flow: Flow;
  renderedSuccessTemplate: any;
  /**
   * Any errors captured from the flow
   */
  errors: string[];
  /**
   * The current steps on the path selected
   */
  pathSteps: Step[];
  /**
   * The full list of steps in the DB (DEPRECATE)
   */
  steps: Step[];
  /**
   * The index of the current slide (step) on the path
   */
  currentSlideIndex: number;
  /**
   * A list of paths the user can travel down composed of steps
   */
  paths: {
    [pathName: string]: Step[];
  };
  /**
   * Check the path's logic and return the matching path based on form data
   * @returns path String
   */
  checkPath(): Promise<string>;
  /**
   * Set the current path of the flow
   * @param path The path to switch to
   * @returns steps any[] A list of steps
   */
  setPath(path?: string): Promise<Step[]>;
  renderPaths(): Promise<void>;
  onChange(): Promise<void>;
  onSuccess(event: any): void;
  onError(event: any): void;
  onSlideWillChange(): void;
  onSlideChange(event: any): Promise<void>;
  onBeforeSubmit(data: any): Promise<any>;
  fetchFlow(): Promise<void>;
  fetchSteps(): Promise<void>;
  componentDidLoad(): void;
  render(): any;
}
