import type { INodeTypes } from 'n8n-workflow';
import type { WorkflowBuilder, WorkflowJSON } from '../types/base';
export { setSchemaBaseDirs, validateNodeConfig, type SchemaValidationResult, } from './schema-validator';
export type ValidationErrorCode = 'NO_NODES' | 'MISSING_TRIGGER' | 'DISCONNECTED_NODE' | 'MISSING_PARAMETER' | 'INVALID_CONNECTION' | 'CIRCULAR_REFERENCE' | 'INVALID_EXPRESSION' | 'AGENT_STATIC_PROMPT' | 'AGENT_NO_SYSTEM_MESSAGE' | 'HARDCODED_CREDENTIALS' | 'SET_CREDENTIAL_FIELD' | 'MERGE_SINGLE_INPUT' | 'TOOL_NO_PARAMETERS' | 'FROM_AI_IN_NON_TOOL' | 'MISSING_EXPRESSION_PREFIX' | 'INVALID_PARAMETER' | 'INVALID_INPUT_INDEX' | 'SUBNODE_NOT_CONNECTED' | 'SUBNODE_PARAMETER_MISMATCH' | 'UNSUPPORTED_SUBNODE_INPUT' | 'MISSING_REQUIRED_INPUT' | 'INVALID_OUTPUT_FOR_MODE' | 'SWITCH_FALLBACK_OUTPUT_DISABLED' | 'MAX_NODES_EXCEEDED' | 'INVALID_EXPRESSION_PATH' | 'PARTIAL_EXPRESSION_PATH' | 'INVALID_DATE_METHOD';
export declare class ValidationError {
    readonly code: ValidationErrorCode;
    readonly message: string;
    readonly nodeName?: string;
    readonly parameterName?: string;
    readonly violationLevel?: 'critical' | 'major' | 'minor';
    constructor(code: ValidationErrorCode, message: string, nodeName?: string, parameterName?: string, violationLevel?: 'critical' | 'major' | 'minor');
}
export declare class ValidationWarning {
    readonly code: ValidationErrorCode;
    readonly message: string;
    readonly nodeName?: string;
    readonly parameterPath?: string;
    readonly originalName?: string;
    readonly violationLevel?: 'critical' | 'major' | 'minor';
    constructor(code: ValidationErrorCode, message: string, nodeName?: string, parameterPath?: string, originalName?: string, violationLevel?: 'critical' | 'major' | 'minor');
}
export interface ValidationResult {
    valid: boolean;
    errors: ValidationError[];
    warnings: ValidationWarning[];
}
export interface ValidationOptions {
    strictMode?: boolean;
    allowDisconnectedNodes?: boolean;
    allowNoTrigger?: boolean;
    validateSchema?: boolean;
    nodeTypesProvider?: INodeTypes;
}
export declare function validateWorkflow(workflowOrJson: WorkflowBuilder | WorkflowJSON, options?: ValidationOptions): ValidationResult;
