import { Codec, Stream } from "mongodb-stitch-core-sdk";
import { ChangeEvent, RemoteCountOptions, RemoteDeleteResult, RemoteFindOptions, RemoteInsertManyResult, RemoteInsertOneResult, RemoteUpdateOptions, RemoteUpdateResult } from "mongodb-stitch-core-services-mongodb-remote";
import RemoteMongoReadOperation from "./RemoteMongoReadOperation";
export default interface RemoteMongoCollection<DocumentT> {
    readonly namespace: string;
    withCollectionType<U>(codec: Codec<U>): RemoteMongoCollection<U>;
    count(query?: object, options?: RemoteCountOptions): Promise<number>;
    find(query?: object, options?: RemoteFindOptions): RemoteMongoReadOperation<DocumentT>;
    aggregate(pipeline: object[]): RemoteMongoReadOperation<DocumentT>;
    insertOne(document: DocumentT): Promise<RemoteInsertOneResult>;
    insertMany(documents: DocumentT[]): Promise<RemoteInsertManyResult>;
    deleteOne(query: object): Promise<RemoteDeleteResult>;
    deleteMany(query: object): Promise<RemoteDeleteResult>;
    updateOne(query: object, update: object, updateOptions?: RemoteUpdateOptions): Promise<RemoteUpdateResult>;
    updateMany(query: object, update: object, updateOptions?: RemoteUpdateOptions): Promise<RemoteUpdateResult>;
    watch(ids: Array<any>): Promise<Stream<ChangeEvent<DocumentT>>>;
}
