/** * 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; /** * 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;