import * as firestore from "@google-cloud/firestore";
/**
 *  LargeBatch allows for batching operations in Firestore.
 */
export declare class LargeBatch {
    private firestoreInstance;
    private batches;
    private operationCount;
    /**
     * Creates a new instance of the `LargeBatch` class.
     * @param firestoreInstance An instance of Firestore.
     */
    constructor(firestoreInstance: firestore.Firestore);
    /**
     * Returns the current batch and if the number of operations in that batch reaches 500, a new batch is added to the array
     */
    private currentBatch;
    /**
     * Adds a create operation to the current batch.
     * @param documentRef A Firestore DocumentReference.
     * @param data The data to be added to the document.
     */
    create<T>(documentRef: firestore.DocumentReference<T>, data: T): void;
    /**
     * Adds a set operation to the current batch.
     * @param documentRef A Firestore DocumentReference.
     * @param data The data to be set on the document.
     * @param options Optional settings to use when setting the document.
     */
    set<T>(documentRef: firestore.DocumentReference<T>, data: Partial<T> | firestore.WithFieldValue<T>, options?: firestore.SetOptions | undefined): void;
    /**
     * Adds an update operation to the current batch.
     * @param documentRef A Firestore DocumentReference.
     * @param data The data to be updated on the document.
     * @param precondition An optional precondition to use when updating the document.
     */
    update<T>(documentRef: firestore.DocumentReference<T>, data: firestore.UpdateData<T>, precondition?: firestore.Precondition): void;
    /**
     * Adds an update field operation to the current batch.
     * @param documentRef A Firestore DocumentReference.
     * @param field The field to update on the document.
     * @param value The new value of the field.
     * @param fieldsOrPrecondition Additional fields to update on the document, or an optional precondition to use when updating the document.
     */
    updateField(documentRef: firestore.DocumentReference<unknown>, field: string | firestore.FieldPath, value: unknown, ...fieldsOrPrecondition: unknown[]): void;
    /**
     * Adds a delete operation to the current batch.
     * @param documentRef A Firestore DocumentReference.
     * @param precondition An optional precondition to use when deleting the document.
     */
    delete(documentRef: firestore.DocumentReference<unknown>, precondition?: firestore.Precondition): void;
    /**
     * Commits all batches. Optionally, you can pass a commit unit which controls the number of batches that are committed at a time.
     * @param commitUnit Number of batches to commit at a time.
     */
    commit(options?: {
        commitUnit?: number;
    }): Promise<void>;
    /**
     * Commits all batches and reset the batch array and operation count
     * @param batches Array of batches to be committed
     */
    private commitBatches;
}
