import { ValidationRule, ValidationContext, ValidationSeverity } from '../interfaces'; /** * Validator function for arguments */ export type ArgumentValidator = (args: any[], node: any) => string | null; /** * Configuration for a specific function's argument validation */ export interface FunctionArgumentConfig { /** Minimum number of arguments required */ minArgs?: number; /** Maximum number of arguments allowed */ maxArgs?: number; /** Expected argument types (by position) */ expectedTypes?: Array<'string' | 'number' | 'boolean' | 'object' | 'array' | 'function' | 'literal'>; /** Custom validator function */ validator?: ArgumentValidator; /** Custom error message */ message?: string; } /** * Options for CallArgumentValidationRule */ export interface CallArgumentValidationOptions { /** Map of function name to argument configuration */ functions: Record; } /** * Rule that validates function call arguments * * Ensures that specific functions are called with the correct number * and types of arguments. Useful for enforcing API contracts. */ export declare class CallArgumentValidationRule implements ValidationRule { private options; readonly name = "call-argument-validation"; readonly description = "Validates function call arguments"; readonly defaultSeverity = ValidationSeverity.ERROR; readonly enabledByDefault = false; constructor(options: CallArgumentValidationOptions); validate(context: ValidationContext): void; /** * Get the type of an argument node */ private getArgumentType; }