import { Collection } from '../../collection/index.js';
import { Context, GetResult } from '../builder/types.js';
import { CollectionConfigBuilder } from './collection-config-builder.js';
import { CollectionSubscription } from '../../collection/subscription.js';
import { LazyDemandPlan } from '../compiler/joins.js';
export declare class CollectionSubscriber<TContext extends Context, TResult extends object = GetResult<TContext>> {
    private sourceId;
    private alias;
    private collection;
    private collectionConfigBuilder;
    private subscriptionLoadingPromises;
    private sentToD2Rows;
    private orderedLoader;
    private readonly demand;
    constructor(sourceId: string, alias: string, collection: Collection, collectionConfigBuilder: CollectionConfigBuilder<TContext, TResult>);
    subscribe(): CollectionSubscription;
    private subscribeToChanges;
    private registerSubscriptionCleanup;
    setDemand(subscription: CollectionSubscription, plan: LazyDemandPlan, keys: Set<unknown>): void;
    private sendChangesToPipeline;
    private subscribeToMatchingChanges;
    private subscribeToOrderedChanges;
    private truncateReplayPublicationControl;
    loadMoreIfNeeded(subscription: CollectionSubscription): void;
    private sendChangesToPipelineWithTracking;
    private getWhereClause;
    private getOrderByInfo;
    private ensureLoadingPromise;
}
