import { WorkflowElement } from '../../../../classes';
import { LinkStrategy } from '../../../../interfaces';
import { CustomBpmnModdle, ModdleElement, BpmnStatementNode, ConditionOperatorPair } from '../../../../types';
import { UtilsService } from '../../../utils.service';
import * as i0 from "@angular/core";
export declare class OrGatewayLinkStrategy implements LinkStrategy<ModdleElement> {
    private readonly moddle;
    private readonly utils;
    private readonly conditions;
    constructor(moddle: CustomBpmnModdle, utils: UtilsService, conditions: Array<ConditionOperatorPair>);
    /**
     * It creates a link between the element and the node
     * @param element - The element that is being processed.
     * @param {BpmnStatementNode} node - BpmnStatementNode
     * @returns An array of ModdleElements
     */
    execute(element: WorkflowElement<ModdleElement>, node: BpmnStatementNode): ModdleElement[];
    /**
     * > Create a link between two nodes
     * @param {BpmnStatementNode} node - BpmnStatementNode
     * @returns An array of links
     */
    private createLink;
    /**
     * It creates a link between two nodes
     * @param {string} id - The id of the link
     * @param {ModdleElement} from - ModdleElement - the source element of the link
     * @param {ModdleElement} to - ModdleElement - the element that the link is going to
     * @returns An object with the id, sourceRef, and targetRef properties.
     */
    private createLinkAttrs;
    /**
     * It creates a script that loops through the rows of the table and adds the taskIds of the rows that
     * match the condition to an array
     * @param {BpmnStatementNode} node - The node that we're creating the script for.
     * @param {string} flowId - The id of the flow that is being created.
     * @param {boolean} [isElse] - boolean - This is a flag that tells the function whether or not the
     * script is for the else statement.
     * @returns An object with a script and a name.
     */
    private createScript;
    /**
     * It creates a loop script that loops through the read object and pushes the task ids to the ids
     * array if the condition is met
     * @param {BpmnStatementNode} node - BpmnStatementNode - The node that is being processed
     * @param {string} condition - The condition to be evaluated.
     * @param [isElse=false] - This is a boolean value that determines whether the loop is for the else
     * condition or not.
     * @returns A string of javascript code.
     */
    private createLoopScript;
    /**
     * > Get the last node with outputs
     * @param {BpmnStatementNode} node - The node to start from
     * @returns The last node with an output.
     */
    private getLastNodeWithOutput;
    /**
     * It returns a string that represents the condition of the node
     * @param {BpmnStatementNode} node - BpmnStatementNode - the node that is being processed
     * @returns The condition is being returned.
     */
    private getCondition;
    static ɵfac: i0.ɵɵFactoryDeclaration<OrGatewayLinkStrategy, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<OrGatewayLinkStrategy>;
}
