/**
 * @fileoverview Firebase data transformation utilities for functions
 * @description Server-safe functions for converting data between Firebase and application formats
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
import type { FirestoreTimestamp } from '@donotdev/core/server';
/**
 * Create a server-safe version of the Timestamp creation
 * @param date - The Date object to convert
 * @returns A representation of the timestamp
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function createTimestamp(date: Date): FirestoreTimestamp;
/**
 * Converts a Date or ISO string to a Firestore Timestamp.
 * @param date - The date to convert (string or Date)
 * @returns The Firestore Timestamp
 * @throws Error if the date is invalid
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function toTimestamp(date: string | Date): FirestoreTimestamp;
/**
 * Converts a Firestore Timestamp to an ISO string.
 * @param timestamp - The Firestore Timestamp
 * @returns The ISO string representation
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function toISOString(timestamp: FirestoreTimestamp): string;
/**
 * Checks if a value is a Firestore Timestamp.
 * @param value - The value to check
 * @returns True if the value is a Timestamp
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function isTimestamp(value: any): value is FirestoreTimestamp;
/**
 * Recursively transforms Firestore data to application format by converting Timestamps to ISO strings.
 * @param data - The data to transform
 * @param includeDocumentIds - Whether to include document IDs
 * @returns The transformed data
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function transformFirestoreData<T = any>(data: T, includeDocumentIds?: boolean): T;
/**
 * Recursively prepares data for Firestore by converting Date objects to ISO strings.
 * ISO strings are kept as-is (no conversion needed).
 * @param data - The data to prepare
 * @param removeFields - Optional array of field names to remove
 * @returns The prepared data
 *
 * @version 0.1.0
 * @since 0.0.1
 * @author AMBROISE PARK Consulting
 */
export declare function prepareForFirestore<T = any>(data: T, removeFields?: string[]): T;
