/**
 * Path Builder
 *
 * Utilidades para construir rutas de Firestore con templates.
 * Soporta rutas multi-nivel y anidadas.
 */
/**
 * Construye una ruta de Firestore reemplazando placeholders.
 *
 * @param template - Template con placeholders en formato {param}
 * @param params - Objeto con los valores a reemplazar
 * @returns Ruta construida
 * @throws Error si faltan parámetros requeridos
 *
 * @example
 * ```typescript
 * // Ruta simple
 * buildPath('users/{userId}', { userId: 'abc123' });
 * // => 'users/abc123'
 *
 * // Ruta anidada
 * buildPath('users/{userId}/documents/{docId}', {
 *   userId: 'abc123',
 *   docId: 'doc456'
 * });
 * // => 'users/abc123/documents/doc456'
 *
 * // Múltiples niveles
 * buildPath('orgs/{orgId}/teams/{teamId}/members/{memberId}', {
 *   orgId: 'org1',
 *   teamId: 'team2',
 *   memberId: 'member3'
 * });
 * // => 'orgs/org1/teams/team2/members/member3'
 * ```
 */
export declare function buildPath(template: string, params: Record<string, string>): string;
/**
 * Extrae los nombres de los parámetros de un template de ruta.
 *
 * @param template - Template de ruta
 * @returns Array con los nombres de los parámetros
 *
 * @example
 * ```typescript
 * extractParams('users/{userId}/documents/{docId}');
 * // => ['userId', 'docId']
 * ```
 */
export declare function extractPathParams(template: string): string[];
/**
 * Valida que una ruta de Firestore sea válida.
 *
 * @param path - Ruta a validar
 * @returns true si la ruta es válida
 *
 * @example
 * ```typescript
 * isValidPath('users/abc123');           // true
 * isValidPath('users/abc123/documents'); // true
 * isValidPath('users//documents');       // false (segmento vacío)
 * isValidPath('');                       // false (vacío)
 * ```
 */
export declare function isValidPath(path: string): boolean;
/**
 * Obtiene la ruta de la colección padre de un documento.
 *
 * @param documentPath - Ruta completa del documento
 * @returns Ruta de la colección padre
 *
 * @example
 * ```typescript
 * getCollectionPath('users/abc123');
 * // => 'users'
 *
 * getCollectionPath('users/abc123/documents/doc456');
 * // => 'users/abc123/documents'
 * ```
 */
export declare function getCollectionPath(documentPath: string): string;
/**
 * Obtiene el ID del documento de una ruta.
 *
 * @param documentPath - Ruta completa del documento
 * @returns ID del documento
 *
 * @example
 * ```typescript
 * getDocumentId('users/abc123');
 * // => 'abc123'
 *
 * getDocumentId('users/abc123/documents/doc456');
 * // => 'doc456'
 * ```
 */
export declare function getDocumentId(documentPath: string): string;
/**
 * Verifica si una ruta apunta a un documento (número par de segmentos).
 *
 * @param path - Ruta a verificar
 * @returns true si es una ruta de documento
 *
 * @example
 * ```typescript
 * isDocumentPath('users/abc123');           // true
 * isDocumentPath('users');                  // false (colección)
 * isDocumentPath('users/abc123/documents'); // false (colección)
 * ```
 */
export declare function isDocumentPath(path: string): boolean;
/**
 * Verifica si una ruta apunta a una colección (número impar de segmentos).
 *
 * @param path - Ruta a verificar
 * @returns true si es una ruta de colección
 */
export declare function isCollectionPath(path: string): boolean;
/**
 * Combina una ruta base con segmentos adicionales.
 *
 * @param basePath - Ruta base
 * @param segments - Segmentos adicionales
 * @returns Ruta combinada
 *
 * @example
 * ```typescript
 * joinPath('users', 'abc123', 'documents');
 * // => 'users/abc123/documents'
 * ```
 */
export declare function joinPath(...segments: string[]): string;
