/// <reference types="cypress" />
declare const SVG_NS = "http://www.w3.org/2000/svg";
declare const COLORS: string[];
declare class InputDeviceCapabilities {
    firesTouchEvents: boolean;
    constructor(opts: {
        firesTouchEvents: boolean;
    });
}
declare namespace Cypress {
    interface Chainable<Subject> {
        visitMobile(url: string, options?: Partial<VisitOptions>): Chainable<Window>;
        visitMobile(options: Partial<VisitOptions> & {
            url: string;
        }): Chainable<Window>;
        swipe(...path: SwipeConfAndPath): Chainable<void>;
    }
}
declare type NumPos = [number, number];
declare type FingerPositionName = 'left' | 'right' | 'top' | 'bottom' | 'center' | 'top-left' | 'topLeft' | 'top-right' | 'topRight' | 'bottom-left' | 'bottomLeft' | 'bottom-right' | 'bottomRight';
declare type FingerPosition = NumPos | FingerPositionName;
declare type Fingers = FingerPosition | FingerPosition[];
declare type SwipeConfig = {
    steps?: number;
    delay: number;
    draw: boolean;
};
declare type SwipeConfAndPath = [SwipeConfig, ...FingerPosition[]] | FingerPosition[];
declare type TouchEventConfig = {
    fingers: NumPos[];
    checkpoint?: boolean;
};
declare type EventName = "touchstart" | "touchmove" | "touchend";
declare class SVGCanvas {
    doc: HTMLDocument;
    svg: SVGElement;
    lines: SVGPathElement[];
    constructor(doc: HTMLDocument);
    startLine(finger: number, x: number, y: number): void;
    extendLine(finger: number, x: number, y: number): void;
    mkDot(className: string, x: number, y: number, radius: number, color: string, stroke?: number): SVGCircleElement;
    touchstart(finger: number, x: number, y: number): void;
    touchmove(finger: number, x: number, y: number, checkpoint: boolean): void;
    touchend(finger: number, x: number, y: number): void;
}
declare function getOffset(element: HTMLElement, offset?: {
    top: number;
    left: number;
}): any;
declare function normalizeCheckpointFingers(target: JQuery<HTMLElement>, fingers: Fingers): NumPos[];
declare function notationToPoint(target: JQuery<HTMLElement>, position: FingerPosition): NumPos;
declare class Swipe {
    target: JQuery<HTMLElement>;
    touchCanvas: SVGCanvas | null;
    delay: number;
    stepDelay: number;
    steps: number;
    win: Window;
    path: FingerPosition[];
    promiseChain: Promise<void> | undefined;
    constructor(target: JQuery<HTMLElement>, { steps, delay, draw }: SwipeConfig, path: FingerPosition[]);
    doIt(): void;
    updateFingerMove(from: FingerPosition, to: FingerPosition, checkpoint: number): void;
    dispatchTouchEvent(evName: EventName, { fingers, checkpoint }: TouchEventConfig): void;
}
