export interface Position {
    x: number;
    y: number;
}
export interface Size {
    width: number;
    height: number;
}
export type WorkflowObjectType = 'stage' | 'action' | 'form' | 'decision' | 'subflow' | 'swimlane' | 'start';
export interface WorkflowMetadata {
    id: string;
    code: string;
    name: string;
    description?: string;
    tenantId?: string;
    formId?: string;
    createdAt?: Date;
    isNew?: boolean;
}
import { Tag } from '../../../models/Tag';
export interface WorkflowObject {
    id: string;
    type: WorkflowObjectType;
    position: Position;
    size: Size;
    label: string;
    originalId?: string;
    originalCode?: string;
    tenantId?: string;
    createdAt?: Date;
    tags?: Tag[];
    [key: string]: any;
}
export interface Swimlane extends WorkflowObject {
    type: 'swimlane';
    order?: number;
    tags: Tag[];
}
export interface Stage extends WorkflowObject {
    type: 'stage';
    swimlaneId?: string;
    description?: string;
    duration?: number;
    passOnRule?: string;
    actorRule?: string;
    minNoOfActor?: number;
    isParallel?: boolean;
    isEntryPoint?: boolean;
    isExitPoint?: boolean;
    tags?: Tag[];
    form?: string;
    allowMultiSubProcess?: boolean;
    assignmentType?: string;
    subWorkflow?: string;
    isSubProcess?: boolean;
}
export interface Action extends WorkflowObject {
    type: 'action';
    fromId: string;
    toId: string;
    isParallel?: boolean;
    passOnRule?: string;
    properties?: {
        actions?: Array<{
            id: number;
            label: string;
            amount: number;
        }>;
        duration?: number;
    };
    points: Position[];
}
export interface Decision extends WorkflowObject {
    type: 'decision';
    condition: string;
}
export interface Form extends WorkflowObject {
    type: 'form';
    formType?: string;
    referenceId: string;
}
export interface SubFlow extends WorkflowObject {
    type: 'subflow';
    flowId?: string;
    referenceId: string;
}
export interface ToolbarItem {
    id: WorkflowObjectType;
    label: string;
    icon: string;
}
export type NodeSide = 'top' | 'right' | 'bottom' | 'left';
export interface ConnectionPoint {
    x: number;
    y: number;
    side: NodeSide;
    position?: Position;
    type?: 'start' | 'bend' | 'end';
}
export interface RoutingPoint extends Position {
    type: 'start' | 'bend' | 'end';
    isHorizontal?: boolean;
}
