/**
 * Normalize path to forward slashes.
 */
export declare function normalizePath(p: string): string;
/**
 * Generate a short hash for an ID.
 * Uses first 8 chars of SHA-256 hash for uniqueness while keeping IDs short.
 * Appends export name for easier debugging in production: "abc123#ExportName"
 */
export declare function hashId(filePath: string, exportName: string): string;
/**
 * Generate an 8-char hex hash for an inline static handler call site.
 * Uses file path and line number (plus optional index for same-line collisions).
 */
export declare function hashInlineId(filePath: string, lineNumber: number, index?: number): string;
export interface DetectedImports {
    loader: boolean;
    handle: boolean;
    locationState: boolean;
    prerenderHandler: boolean;
    staticHandler: boolean;
    router: boolean;
    any: boolean;
}
/**
 * Build a map from local binding name to exported names by walking
 * ExportNamedDeclaration nodes. Handles `export const X`, `export { X }`,
 * and `export { X as Y }`. Skips re-exports (`export { X } from "..."`).
 */
export declare function buildExportMap(program: any): Map<string, string[]>;
/**
 * Single-pass detection of all create* imports from @rangojs/router.
 * Returns which create functions are imported so we can skip unnecessary transforms.
 */
export declare function detectImports(code: string): DetectedImports;
/**
 * Skip past a string literal, template literal, or comment starting at pos.
 * Returns the index after the closing delimiter, or pos if not at a
 * string/comment start. Handles escape sequences and nested ${} in templates.
 */
export declare function skipStringOrComment(code: string, pos: number): number;
/**
 * Find the matching closing paren starting after an already-opened paren.
 * Skips strings, template literals, and comments so parens inside them
 * don't affect depth tracking. Returns the index after the closing paren.
 */
export declare function findMatchingParen(code: string, startPos: number): number;
/**
 * Count the number of top-level arguments in a function call.
 * Skips nested parens, brackets, braces, strings, and comments.
 */
export declare function countArgs(code: string, startPos: number, endPos: number): number;
/**
 * Find the end of a statement: skip whitespace and optional semicolon after
 * a closing paren position.
 */
export declare function findStatementEnd(code: string, pos: number): number;
/**
 * Simple depth-counter paren matching. Does NOT skip strings/comments.
 * Used by loader and handle transforms where the simpler approach suffices.
 * Returns the index after the closing paren.
 */
export declare function findClosingParen(code: string, startPos: number): number;
/**
 * Count arguments using simple depth counting (no string/comment awareness).
 * Used by the loader transform where the original code used this simpler approach.
 */
export declare function countArgsSimple(code: string, startPos: number, endPos: number): number;
//# sourceMappingURL=expose-id-utils.d.ts.map