import { ElementRef } from "@angular/core";
import { Subject } from "rxjs";
import { StiTableElement } from "../elements/StiTableElement";
import { StiDraggableExpressionObject, StiValueElement } from "../system/interfaces";
import { StiModelService } from "./model.service";
import { StiMouseService } from "./mouse.service";
import * as i0 from "@angular/core";
export declare class StiExpressionService {
    model: StiModelService;
    mouseService: StiMouseService;
    static MOUSE_DELTA: number;
    private started;
    private status;
    componentX: number;
    componentY: number;
    componentWidth: number;
    componentHeight: number;
    startExpressionDraggingX: number;
    startExpressionDraggingY: number;
    expressionDraggableContainerX: number;
    expressionDraggableContainerY: number;
    expressionDraggableContainerWidth: number;
    expressionDraggableContainerHeight: number;
    draggableExpressionObject: StiDraggableExpressionObject;
    needToAddExpression: Subject<StiDraggableExpressionObject>;
    expressionPreviewString: string;
    isDragging: boolean;
    elementRef: ElementRef;
    currentSelectedObject: any;
    currentCarretOffset: number;
    getExpressionString(startItem: any): StiDraggableExpressionObject;
    startContainerDrag(object: any): void;
    moveContainer(event: any): void;
    endContainerDrag(event: any): void;
    constructor(model: StiModelService, mouseService: StiMouseService);
    getCaretOffset(element: any): number;
    start(): void;
    private addDependency;
    calculate(): void;
    private getElementName;
    exec(element: StiValueElement, elements: object, table?: StiTableElement, col?: number, row?: number, total?: number): void;
    replaceSystemVariables(expressionString: string): string;
    private resetValue;
    private isNumber;
    private haveExpression;
    isSystemVariables(string: string): boolean;
    private findElement;
    static ɵfac: i0.ɵɵFactoryDeclaration<StiExpressionService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<StiExpressionService>;
}
