import type { RouteParams, RouteParamValue } from "../IRouteMatcher.js";
import { type QueryParamDef } from "./path-utils.js";
/**
 * Validates that all required parameters are present in the params object.
 * Throws descriptive errors for missing or invalid parameters.
 * Optionally validates parameter types if paramTypes is provided.
 * Optionally validates query parameters if queryDefs is provided.
 */
export declare function validateParameters(pattern: string, segments: string[], params: RouteParams, paramTypes?: Record<string, string>, // TODO: make it required and remove extra checks
queryDefs?: QueryParamDef[]): void;
/**
 * Builds URL segments from a pattern and parameters
 */
export declare function buildUrlSegments(segments: string[], params: RouteParams, paramTypes?: Record<string, string>): string[];
/**
 * Convert a raw string value according to declared parameter type.
 */
export declare function convertParamValue(value: string, type: string): RouteParamValue;
/**
 * Extracts query parameters from a query string based on pattern definitions.
 * Populates params with converted values.
 * Returns false if a required query parameter is missing.
 */
export declare function matchQueryParams(queryDefs: QueryParamDef[], query: string, params: RouteParams): boolean;
/**
 * Builds a query string from pattern definitions and parameters.
 * Returns the query string including the leading "?" or empty string if no params are set.
 */
export declare function buildQueryString(queryDefs: QueryParamDef[], params: RouteParams): string;
//# sourceMappingURL=parameter-utils.d.ts.map