import { VegaSlimmer } from '../../../../../vega-slimmer/vega-slimmer-core';
import { VegaSignatureCapture } from '../../../vega-signature-capture';
import { VegaSignatureValue } from '../../../types';
/**
 * Signature written mode controller
 */
export declare class WrittenModeSvgController extends VegaSlimmer {
  changeEventEmitter: VegaSignatureCapture['changeEventEmitter'];
  host: VegaSignatureCapture['host'];
  value: VegaSignatureCapture['value'];
  isDrawing: VegaSignatureCapture['isDrawing'];
  disabled: VegaSignatureCapture['disabled'];
  private signatureContainerRef;
  private penWidth;
  private currentPath;
  /**
   * Setup written listeners
   */
  componentDidLoad(): void;
  /**
   * Clear the signature
   */
  handleClear(): void;
  /**
   * Emit the vegaChange event when value changed
   *
   * @param {VegaSignatureValue} newValue - The `newValue` parameter is a object representing the new value for the signature capture.
   * @param {VegaSignatureValue} oldValue - The `oldValue` parameter is a object representing the old value for the signature capture.
   */
  watchValue(newValue: VegaSignatureValue, oldValue: VegaSignatureValue): void;
  /**
   * Set the signature container ref
   *
   * @param {SVGElement} ref - signature container ref
   */
  setSignatureContainerRef(ref: SVGElement): void;
  /**
   * Clear the signature
   */
  clear: () => void;
  /**
   * Setup the listeners, for desktop and mobile
   */
  private setupListeners;
  /**
   * Start drawing the current path
   *
   * @param {MouseEvent} e - MouseEvent
   */
  private startDrawing;
  /**
   * Get the current mouse position.
   * In cypress case, when the mousedown event signature is triggered, the event type is 'Event', which adds compatibility
   *
   * @param {MouseEvent | TouchEvent} e - MouseEvent on desktop or TouchEvent on mobile
   * @returns {VegaSignatureMousePosition} - Current mouse position
   */
  private getPoint;
  /**
   * Draw the current path to the end point
   *
   * @param {MouseEvent} e - Mouse event
   */
  private draw;
  /**
   * Stop drawing and update the value
   */
  private stopDrawing;
  /**
   * Generate the signature base64 image string
   *
   * @returns {string} - base64 image string
   */
  private generateSignatureImage;
  /**
   * Parse the value to svg
   *
   * @param {VegaSignatureValue} value - Signature value
   * @returns {Nullable<HTMLElement>} - SVG element
   */
  private fromDataURL;
  /**
   * Fill the signature from the value.
   * Not fill the signature if the signature container already has child nodes, that means in written status.
   *
   * @param {VegaSignatureValue} value - Signature value
   */
  private fillSignature;
}
