/**
 * Common Input Validators
 *
 * Basic validators for strings, numbers, arrays, objects, booleans,
 * enums, URLs, emails, and composite/assertion helpers.
 */
import type { ValidationResult, ValidationOptions } from './types.js';
/**
 * Validate that a value is a non-empty string
 */
export declare function validateString(value: unknown, options?: ValidationOptions): ValidationResult<string>;
/**
 * Validate string with length constraints
 */
export declare function validateStringLength(value: unknown, minLength: number, maxLength: number, options?: ValidationOptions): ValidationResult<string>;
/**
 * Validate string matches a pattern
 */
export declare function validatePattern(value: unknown, pattern: RegExp, options?: ValidationOptions & {
    patternDescription?: string;
}): ValidationResult<string>;
/**
 * Validate that a value is a number
 */
export declare function validateNumber(value: unknown, options?: ValidationOptions): ValidationResult<number>;
/**
 * Validate number within range
 */
export declare function validateNumberRange(value: unknown, min: number, max: number, options?: ValidationOptions): ValidationResult<number>;
/**
 * Validate positive integer
 */
export declare function validatePositiveInteger(value: unknown, options?: ValidationOptions): ValidationResult<number>;
/**
 * Validate that a value is an array
 */
export declare function validateArray<T = unknown>(value: unknown, options?: ValidationOptions & {
    minLength?: number;
    maxLength?: number;
}): ValidationResult<T[]>;
/**
 * Validate that a value is a non-null object
 */
export declare function validateObject<T extends Record<string, unknown> = Record<string, unknown>>(value: unknown, options?: ValidationOptions): ValidationResult<T>;
/**
 * Validate that a value is one of the allowed choices
 */
export declare function validateChoice<T extends string>(value: unknown, choices: readonly T[], options?: ValidationOptions): ValidationResult<T>;
/**
 * Validate and parse boolean value
 */
export declare function validateBoolean(value: unknown, options?: ValidationOptions): ValidationResult<boolean>;
/**
 * Validate URL format
 */
export declare function validateUrl(value: unknown, options?: ValidationOptions & {
    protocols?: string[];
}): ValidationResult<string>;
/**
 * Validate email format
 */
export declare function validateEmail(value: unknown, options?: ValidationOptions): ValidationResult<string>;
/**
 * Validate optional value (returns valid with undefined if not provided)
 */
export declare function validateOptional<T>(value: unknown, validator: (value: unknown, options: ValidationOptions) => ValidationResult<T>, options?: ValidationOptions): ValidationResult<T | undefined>;
/**
 * Validate with default value
 */
export declare function validateWithDefault<T>(value: unknown, defaultValue: T, validator: (value: unknown, options: ValidationOptions) => ValidationResult<T>, options?: ValidationOptions): ValidationResult<T>;
export interface SchemaField<T = unknown> {
    validator: (value: unknown, options: ValidationOptions) => ValidationResult<T>;
    required?: boolean;
    default?: T;
    fieldName?: string;
}
export type Schema = Record<string, SchemaField>;
/**
 * Validate an object against a schema
 */
export declare function validateSchema<T extends Record<string, unknown>>(data: unknown, schema: Schema, options?: {
    strict?: boolean;
}): ValidationResult<T>;
/**
 * Assert validation passes or throw error
 */
export declare function assertValid<T>(result: ValidationResult<T>, context?: string): T;
/**
 * Create a throwing validator
 */
export declare function createAssertingValidator<T>(validator: (value: unknown, options?: ValidationOptions) => ValidationResult<T>): (value: unknown, context?: string, options?: ValidationOptions) => T;
export declare const assertString: (value: unknown, context?: string, options?: ValidationOptions) => string;
export declare const assertNumber: (value: unknown, context?: string, options?: ValidationOptions) => number;
export declare const assertPositiveInteger: (value: unknown, context?: string, options?: ValidationOptions) => number;
export declare const assertArray: (value: unknown, context?: string, options?: ValidationOptions) => unknown[];
export declare const assertObject: (value: unknown, context?: string, options?: ValidationOptions) => Record<string, unknown>;
export declare const assertBoolean: (value: unknown, context?: string, options?: ValidationOptions) => boolean;
export declare const assertUrl: (value: unknown, context?: string, options?: ValidationOptions) => string;
export declare const assertEmail: (value: unknown, context?: string, options?: ValidationOptions) => string;
