import type { ReadOptions } from '../types/call-options';
import type { Doc } from '../types/doc';
import type { ListParams, ListResults } from '../types/list';
import type { SatelliteOptions } from '../types/satellite';
/**
 * Retrieves a single document from a collection.
 *
 * @template D
 * @param {Object} params - The parameters for retrieving the document.
 * @param {string} params.collection - The name of the collection.
 * @param {string} params.key - The key of the document to retrieve.
 * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<Doc<D> | undefined>} A promise that resolves to the document or undefined if not found.
 */
export declare const getDoc: <D>({ satellite, options, ...rest }: {
    collection: string;
    satellite?: SatelliteOptions;
    options?: ReadOptions;
} & Pick<Doc<D>, "key">) => Promise<Doc<D> | undefined>;
/**
 * Retrieves multiple documents from a single or different collections in a single call.
 *
 * @param {Object} params - The parameters for retrieving the documents.
 * @param {Array} params.docs - The list of documents with their collections and keys.
 * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<Array<Doc<any> | undefined>>} A promise that resolves to an array of documents or undefined if not found.
 */
export declare const getManyDocs: ({ satellite, options, ...rest }: {
    docs: ({
        collection: string;
    } & Pick<Doc<any>, "key">)[];
    satellite?: SatelliteOptions;
    options?: ReadOptions;
}) => Promise<(Doc<any> | undefined)[]>;
/**
 * Adds or updates a single document in a collection.
 *
 * @template D
 * @param {Object} params - The parameters for adding or updating the document.
 * @param {string} params.collection - The name of the collection.
 * @param {Doc<D>} params.doc - The document to add or update.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<Doc<D>>} A promise that resolves to the added or updated document.
 */
export declare const setDoc: <D>({ satellite, ...rest }: {
    collection: string;
    doc: Doc<D>;
    satellite?: SatelliteOptions;
}) => Promise<Doc<D>>;
/**
 * Adds or updates multiple documents in a or different collections.
 *
 * @param {Object} params - The parameters for adding or updating the documents.
 * @param {Array} params.docs - The list of documents with their collections and data.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<Array<Doc<any>>>} A promise that resolves to an array of added or updated documents.
 */
export declare const setManyDocs: ({ satellite, ...rest }: {
    docs: {
        collection: string;
        doc: Doc<any>;
    }[];
    satellite?: SatelliteOptions;
}) => Promise<Doc<any>[]>;
/**
 * Deletes a single document from a collection.
 *
 * @template D
 * @param {Object} params - The parameters for deleting the document.
 * @param {string} params.collection - The name of the collection.
 * @param {Doc<D>} params.doc - The document to delete.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<void>} A promise that resolves when the document is deleted.
 */
export declare const deleteDoc: <D>({ satellite, ...rest }: {
    collection: string;
    doc: Doc<D>;
    satellite?: SatelliteOptions;
}) => Promise<void>;
/**
 * Deletes multiple documents from a or different collections.
 *
 * @param {Object} params - The parameters for deleting the documents.
 * @param {Array} params.docs - The list of documents with their collections and data.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<void>} A promise that resolves when the documents are deleted.
 */
export declare const deleteManyDocs: ({ satellite, ...rest }: {
    docs: {
        collection: string;
        doc: Doc<any>;
    }[];
    satellite?: SatelliteOptions;
}) => Promise<void>;
/**
 * Deletes documents from a collection with optional filtering.
 *
 * @param {Object} params - The parameters for deleting documents.
 * @param {string} params.collection - The name of the collection.
 * @param {ListParams} [params.filter] - The filter criteria to match documents for deletion.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<void>} A promise that resolves when the documents are deleted.
 */
export declare const deleteFilteredDocs: ({ satellite, filter, ...rest }: {
    collection: string;
    filter?: ListParams;
    satellite?: SatelliteOptions;
}) => Promise<void>;
/**
 * Lists documents in a collection with optional filtering.
 *
 * @template D
 * @param {Object} params - The parameters for listing the documents.
 * @param {string} params.collection - The name of the collection.
 * @param {ListParams} [params.filter] - Optional filter parameters.
 * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<ListResults<Doc<D>>>} A promise that resolves to the list of documents.
 */
export declare const listDocs: <D>({ satellite, options, filter, ...rest }: {
    collection: string;
    filter?: ListParams;
    satellite?: SatelliteOptions;
    options?: ReadOptions;
}) => Promise<ListResults<Doc<D>>>;
/**
 * Counts documents in a collection with optional filtering.
 *
 * @param {Object} params - The parameters for counting the documents.
 * @param {string} params.collection - The name of the collection.
 * @param {ListParams} [params.filter] - Optional filter parameters.
 * @param {ReadOptions} [params.options] - Call options controlling certification. Defaults to uncertified reads for performance unless specified.
 * @param {SatelliteOptions} [params.satellite] - Options to specify a satellite in a NodeJS environment only. In browser environments, the satellite configuration is inherited from the initialization through `initSatellite()`.
 * @returns {Promise<bigint>} A promise that resolves to the count of documents as a bigint.
 */
export declare const countDocs: ({ satellite, options, filter, ...rest }: {
    collection: string;
    filter?: ListParams;
    satellite?: SatelliteOptions;
    options?: ReadOptions;
}) => Promise<bigint>;
