/**
 * soccr.io API
 * An ASP.NET Core Web API for managing Soccer items
 *
 * The version of the OpenAPI document: v1
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import { HttpHeaders } from '@angular/common/http';
import { Observable } from 'rxjs';
import { AttributeDefinition } from '../model/models';
import { CommonResult } from '../model/models';
import { DecisionCluster } from '../model/models';
import { DecisionEdge } from '../model/models';
import { DecisionEdgeBlockInjectionRequest } from '../model/models';
import { DecisionFlow } from '../model/models';
import { DecisionFlowStatus } from '../model/models';
import { DecisionHighlight } from '../model/models';
import { DecisionNode } from '../model/models';
import { DecisionNodePath } from '../model/models';
import { HierarchyFlowDetail } from '../model/models';
import { ListAssignmentBigint2x } from '../model/models';
import { NodeAttributeGroup } from '../model/models';
import { NodeAttributeMasterEntry } from '../model/models';
import { NodeScript } from '../model/models';
import { Configuration } from '../configuration';
export interface DecisionFlowServiceInterface {
    defaultHeaders: HttpHeaders;
    configuration: Configuration;
    /**
     *
     *
     * @param body
     */
    deleteEdge(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param body
     */
    deleteNode(body?: number, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     */
    getAttributeGroups(extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     */
    getAttributes(extraHttpRequestParams?: any): Observable<Array<AttributeDefinition>>;
    /**
     * Provides a Decision Flow with all the node data. A simple select of the data. No post-select processing.
     *
     * @param FlowID
     * @param AutoGenerateClusters
     * @param debug
     */
    getDecisionFlow(FlowID?: number, AutoGenerateClusters?: boolean, debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     *
     *
     * @param FlowID
     */
    getDecisionFlowAsHierarchy(FlowID?: number, extraHttpRequestParams?: any): Observable<HierarchyFlowDetail>;
    /**
     * Provides a Decision Flow with all the nodes starting at the supplied node Id on down. A simple select of the data. No post-select processing.
     *
     * @param FlowID
     * @param NodeID
     * @param AutoGenerateClusters
     * @param debug
     */
    getDecisionFlowAtNode(FlowID?: number, NodeID?: number, AutoGenerateClusters?: boolean, debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with all the nodes starting at the supplied node Id on down, with the DOT Graph.
     *
     * @param FlowID
     * @param NodeID
     * @param Debug
     */
    getDecisionFlowAtNodeWithDotGraph(FlowID?: number, NodeID?: number, Debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Gets all the pretermined clusters for a flow.
     *
     * @param FlowID
     */
    getDecisionFlowClusters(FlowID?: number, extraHttpRequestParams?: any): Observable<Array<DecisionCluster>>;
    /**
     * Gets all the clusters for a flow. Can auto-generate clusters if necessary.
     *
     * @param FlowID
     * @param AutoGenerate
     */
    getDecisionFlowClustersAutoGenerate(FlowID?: number, AutoGenerate?: boolean, extraHttpRequestParams?: any): Observable<Array<DecisionCluster>>;
    /**
     *
     *
     * @param Context
     * @param ContextKey
     */
    getDecisionFlowContextClusters(Context?: string, ContextKey?: number, extraHttpRequestParams?: any): Observable<Array<DecisionCluster>>;
    /**
     * Gets a list of decision nodes which can be applied to the context.
     *
     * @param Context
     * @param ContextKey
     */
    getDecisionFlowForContext(Context?: string, ContextKey?: number, extraHttpRequestParams?: any): Observable<Array<DecisionFlow>>;
    /**
     * Provides a Decision Flow with nodes for the selected leaf, as this is supposed to be a single line no cluster generation is allowed.
     *
     * @param FlowID
     * @param LeafNodeID
     * @param debug
     */
    getDecisionFlowForLeafInIsolation(FlowID?: number, LeafNodeID?: number, debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with nodes for the selected leaf and with the DOT Graph.
     *
     * @param FlowID
     * @param LeafNodeID
     * @param Debug
     */
    getDecisionFlowForLeafInIsolationDotGraph(FlowID?: number, LeafNodeID?: number, Debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with nodes for the selected leaf, as this is supposed to be a single line no cluster generation is allowed.
     *
     * @param FlowID
     * @param LeafNodeID
     * @param debug
     */
    getDecisionFlowForLeafInIsolationWithSiblings(FlowID?: number, LeafNodeID?: number, debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with nodes for the selected leaf and with the DOT Graph.
     *
     * @param FlowID
     * @param LeafNodeID
     * @param Debug
     */
    getDecisionFlowForLeafInIsolationWithSiblingsDotGraph(FlowID?: number, LeafNodeID?: number, Debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with all the node data. A simple select of the data. No post-select processing.
     *
     * @param FlowID
     * @param NodeID
     * @param ToLevel
     * @param AutoGenerateClusters
     * @param debug
     */
    getDecisionFlowFromNodeToLevel(FlowID?: number, NodeID?: number, ToLevel?: number, AutoGenerateClusters?: boolean, debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Provides a Decision Flow with all the nodes and with the DOT Graph.
     *
     * @param FlowID
     * @param NodeID
     * @param ToLevel
     * @param AutoGenerateClusters
     * @param Debug
     */
    getDecisionFlowFromNodeToLevelDotGraph(FlowID?: number, NodeID?: number, ToLevel?: number, AutoGenerateClusters?: boolean, Debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Returs a list of all possible Decision Flow status values.
     *
     */
    getDecisionFlowStatusList(extraHttpRequestParams?: any): Observable<Array<DecisionFlowStatus>>;
    /**
     * Provides a Decision Flow with all the nodes and with the DOT Graph.
     *
     * @param FlowID
     * @param AutoGenerateClusters
     * @param Debug
     */
    getDecisionFlowWithDotGraph(FlowID?: number, AutoGenerateClusters?: boolean, Debug?: boolean, extraHttpRequestParams?: any): Observable<DecisionFlow>;
    /**
     * Gets all the decision flows available.
     *
     */
    getDecisionFlows(extraHttpRequestParams?: any): Observable<Array<DecisionFlow>>;
    /**
     *
     *
     * @param NodeID
     */
    getEdgesForNode(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<DecisionEdge>>;
    /**
     *
     *
     */
    getNodeAttributeMasterList(extraHttpRequestParams?: any): Observable<Array<NodeAttributeMasterEntry>>;
    /**
     *
     *
     * @param FlowID
     */
    getNodeAttributesDetailsForFlowInner(FlowID?: number, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param FlowID
     */
    getNodeAttributesDetailsForFlowOuter(FlowID?: number, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param NodeID
     */
    getNodeAttributesDetailsForNodeInner(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param request_body
     */
    getNodeAttributesDetailsForNodeListInner(request_body?: Array<number>, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param request_body
     */
    getNodeAttributesDetailsForNodeListOuter(request_body?: Array<number>, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param NodeID
     */
    getNodeAttributesDetailsForNodeOuter(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<NodeAttributeGroup>>;
    /**
     *
     *
     * @param DecisionHighlight
     */
    highlightDecisionPathToNode(DecisionHighlight?: DecisionHighlight, extraHttpRequestParams?: any): Observable<Array<DecisionNodePath>>;
    /**
     *
     *
     * @param DecisionEdge
     */
    insertEdge(DecisionEdge?: DecisionEdge, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param DecisionNode
     */
    insertNode(DecisionNode?: DecisionNode, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param DecisionEdgeBlockInjectionRequest
     */
    rangeBlockEdgeInjection(DecisionEdgeBlockInjectionRequest?: DecisionEdgeBlockInjectionRequest, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     */
    selectAllNodeScripts(extraHttpRequestParams?: any): Observable<Array<NodeScript>>;
    /**
     *
     *
     * @param NodeID
     */
    selectAllNodeScriptsForNode(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<NodeScript>>;
    /**
     *
     *
     * @param NodeID
     */
    selectDecisionPathToNode(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<DecisionNode>>;
    /**
     *
     *
     * @param NodeID
     */
    selectDecisionTraversePathToNode(NodeID?: number, extraHttpRequestParams?: any): Observable<Array<DecisionNodePath>>;
    /**
     *
     *
     * @param NodeScriptID
     */
    selectNodeScriptByNodeScriptID(NodeScriptID?: number, extraHttpRequestParams?: any): Observable<NodeScript>;
    /**
     *
     *
     * @param ListAssignmentBigint2x
     */
    updateAttributeNodes(ListAssignmentBigint2x?: Array<ListAssignmentBigint2x>, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param DecisionEdge
     */
    updateEdge(DecisionEdge?: DecisionEdge, extraHttpRequestParams?: any): Observable<CommonResult>;
    /**
     *
     *
     * @param DecisionNode
     */
    updateNode(DecisionNode?: DecisionNode, extraHttpRequestParams?: any): Observable<CommonResult>;
}
