import * as React from "react";
import { Transaction, SetOptions, DocumentData, Precondition, DocumentSnapshot } from "@google-cloud/firestore";
import { FirestoreProviderState, FirestoreQuery } from "../types";
export declare type FirestoreTranasactionWithContextProps = FirestoreProviderState & FirestoreTranasactionProps;
export declare type TransactionLogic = (t: {
    transaction: Transaction;
    get: (query: FirestoreQuery) => Promise<DocumentSnapshot>;
    update: (path: string, value: any) => Promise<Transaction>;
    set: (path: string, value: DocumentData, options?: SetOptions) => Promise<Transaction>;
    fDelete: (path: string, precondition?: Precondition) => Promise<Transaction>;
}) => Promise<any>;
export declare class FirestoreTranasactionWithContext extends React.Component<FirestoreTranasactionWithContextProps> {
    createTransactionRunner: () => (transactionLogic: TransactionLogic) => Promise<void>;
    shouldComponentUpdate(nextProps: FirestoreTranasactionWithContextProps): boolean;
    render(): any;
}
export declare type FirestoreTranasactionProps = {
    children: ({ runTransaction }: {
        runTransaction: (t: TransactionLogic) => Promise<any>;
    }) => React.ReactNode;
};
export declare class FirestoreTransaction extends React.Component<FirestoreTranasactionProps> {
    render(): JSX.Element;
}
