import type { ResponseResult } from "./runtime-core.js"; import type { RequestSource } from "./server.js"; export declare function searchOf(url: string): string; /** A query value: a single occurrence is a string; a repeated key promotes to a string[] so an * array query schema (`t.array(t.string())`) can validate `?tag=a&tag=b` - last-wins silently * dropped values before (audit 2026-06). Single-occurrence keys stay plain strings, so existing * `t.string()` schemas are untouched; a repeated key against a string schema now FAILS validation * (an explicit 400 beats silently picking one). */ export type QueryValue = string | string[]; /** Return a value-equal, likely-internalized copy of a parsed record key. See the note above. */ export declare function internParseKey(key: string): string; export declare function queryObjectOf(search: string): Record; /** `application/x-www-form-urlencoded`, with or without a charset suffix. */ export declare function isUrlEncodedForm(contentType: string): boolean; /** * Read an HTML-form body (urlencoded) into the plain object a body schema validates - same byte * cap as the JSON path (a lying/absent Content-Length can't force an oversized buffer), same * repeated-key -> `string[]` promotion as query parsing, same `__proto__` guard. * * A rejection is a `ResponseResult`, not a built `Response`, matching the JSON reader: the cap is a * framework render, and answering one on the plain lane costs what a handler's plain return costs * (see `plainError`). The distinction is observable on the Node adapter - a `Response` there is * untagged, so its body drains through a Web stream and the answer goes out chunked. */ export declare function readBoundedForm(req: RequestSource, maxBytes: number): Promise | ResponseResult>; //# sourceMappingURL=query.d.ts.map