import { DatabaseConnection } from "../DatabaseConnection";
import { MakeMongoDbDatabaseConnectionParams } from "../MongoDbDatabaseConnection";
import { LoadPagesArgs, PageStore, PersistedPage, SourceVersions } from "./Page";
import { Filter, Document } from "mongodb";
export type MongoDbPageStore = DatabaseConnection & Omit<PageStore, "loadPages"> & {
    queryType: "mongodb";
    loadPage(args?: LoadPagesArgs<Filter<PersistedPage>>): Promise<PersistedPage | null>;
    loadPages(args?: LoadPagesArgs<Filter<PersistedPage>>): Promise<PersistedPage[]>;
    aggregatePages<T extends Document = Document>(pipeline: Document[]): Promise<T[]>;
    getMissingPagesByUrl(args: {
        expectedUrls: string[];
        urlTransformer?: (url: string) => string;
    }): Promise<string[]>;
    getDataSourceVersions(args: {
        dataSources: string[];
    }): Promise<SourceVersions>;
    metadata: {
        databaseName: string;
        collectionName: string;
    };
    init(): Promise<void>;
};
export type MakeMongoDbPageStoreParams = MakeMongoDbDatabaseConnectionParams & {
    /**
      The name of the collection in the database that stores {@link PersistedPage} documents.
      @default "pages"
     */
    collectionName?: string;
};
/**
  Data store for {@link Page} objects using MongoDB.
 */
export declare function makeMongoDbPageStore({ connectionUri, databaseName, collectionName, }: MakeMongoDbPageStoreParams): MongoDbPageStore;
//# sourceMappingURL=MongoDbPageStore.d.ts.map