/** The closed reason enum the API also emits. Shared so both surfaces name a rejection identically. */ export type PathRejection = "path_traversal" | "absolute_path" | "duplicate_path" | "case_duplicate" | "no_index_html" | "bad_encoding" | "reserved_path"; export interface PathError { reason: PathRejection; path: string; } export interface NormalizedPath { ok: true; path: string; } export type NormalizeResult = NormalizedPath | { ok: false; reason: PathRejection; }; /** * Normalize a dist-relative path, then check it. `a/./b.js` normalizes to * `a/b.js` and is legal; `a/../../b.js` normalizes out of the tree and is not. */ export declare function normalizePath(raw: string): NormalizeResult; /** * Validate a whole set of normalized paths. The manifest is rejected as a WHOLE * — never a subset — because a partial accept would publish a tree the creator * did not build. */ export declare function validatePathSet(paths: string[]): PathError | undefined;