import { Port, PortPlacement, AbsolutePortPlacement, PortPosition, PortType } from '../../../types/core'; import { PortDefinition } from '../../../types/NodeDefinition'; /** * Required fields for creating a Port instance */ export type PortRequiredFields = { id: string; type: PortType; label: string; nodeId: string; position: PortPosition; }; /** * Optional fields for creating a Port instance */ export type PortOptionalFields = { definitionId?: string; placement?: PortPlacement | AbsolutePortPlacement; dataType?: string | string[]; maxConnections?: number | "unlimited"; allowedNodeTypes?: string[]; allowedPortTypes?: string[]; instanceIndex?: number; instanceTotal?: number; }; /** * Creates a complete Port instance from required and optional fields. * Ensures all properties are explicitly handled. */ export declare const createPort: (required: PortRequiredFields, optional?: PortOptionalFields) => Port; /** * Creates a Port instance by copying all transferable properties from an existing port. * Use this when you need a port with a different nodeId but same characteristics. */ export declare const clonePortForNode: (sourcePort: Port, targetNodeId: string) => Port; /** * Creates a minimal Port instance for action state (connection drag, etc.). * Copies all properties needed for connection validation. */ export declare const createActionPort: (sourcePort: Port) => Port; /** * Creates a Port instance from a PortDefinition. * Used for creating temporary ports when checking connection compatibility. */ export declare const createPortFromDefinition: (definition: PortDefinition, nodeId: string, placement: PortPlacement | AbsolutePortPlacement) => Port; /** * Validates that a Port instance has all expected properties from its source. * Useful for testing to ensure no properties are missed during creation. */ export declare const validatePortCompleteness: (port: Port, source: Port) => string[]; /** * List of all Port property keys for exhaustive checks */ export declare const PORT_PROPERTY_KEYS: ReadonlyArray;