import { type LogLevel } from '@rocicorp/logger';
import type { ReadonlyJSONValue } from '../../shared/src/json.ts';
import { type PushResponse } from '../../zero-protocol/src/push.ts';
import { type Database, type ExtractTransactionType } from '../../zero-server/src/process-mutations.ts';
import type { Schema } from '../../zero-types/src/schema.ts';
import type { AnyMutatorRegistry } from '../../zql/src/mutate/mutator-registry.ts';
import type { CustomMutatorDefs } from './custom.ts';
export declare const separatorRe: RegExp;
export declare class PushProcessor<_S extends Schema, D extends Database<ExtractTransactionType<D>>, MD extends AnyMutatorRegistry | CustomMutatorDefs<ExtractTransactionType<D>>, C = undefined> {
    #private;
    constructor(dbProvider: D, context?: C, logLevel?: LogLevel);
    /**
     * Processes a push request from zero-cache.
     * This function will parse the request, check the protocol version, and process each mutation in the request.
     * - If a mutation is out of order: processing will stop and an error will be returned. The zero client will retry the mutation.
     * - If a mutation has already been processed: it will be skipped and the processing will continue.
     * - If a mutation receives an application error: it will be skipped, the error will be returned to the client, and processing will continue.
     *
     * @param mutators the custom mutators for the application
     * @param queryString the query string from the request sent by zero-cache. This will include zero's postgres schema name and appID.
     * @param body the body of the request sent by zero-cache as a JSON object.
     */
    process(mutators: MD, queryString: URLSearchParams | Record<string, string>, body: ReadonlyJSONValue): Promise<PushResponse>;
    /**
     * This override gets the query string and the body from a Request object.
     *
     * @param mutators the custom mutators for the application
     * @param request A `Request` object.
     */
    process(mutators: MD, request: Request): Promise<PushResponse>;
}
//# sourceMappingURL=push-processor.d.ts.map