import type * as RDF from '@rdfjs/types';
import type { IQuadSink } from '../io/IQuadSink';
import type { IDatasetSummary } from '../summary/DatasetSummary';
import { FragmentationStrategyStreamAdapter } from './FragmentationStrategyStreamAdapter';
/**
 * Fragmentation strategy that collects dataset summaries per dataset.
 */
export declare abstract class FragmentationStrategyDatasetSummary<T extends IDatasetSummary> extends FragmentationStrategyStreamAdapter {
    protected readonly summaries: Map<string, T>;
    protected readonly datasetPatterns: RegExp[];
    private readonly blankNodeQuads;
    private readonly blankNodeDatasets;
    constructor(options: IFragmentationStrategyDatasetSummaryOptions);
    protected abstract createSummary(dataset: string): T;
    protected subjectToDatasets(subject: string): Set<string>;
    protected handleQuad(quad: RDF.Quad): Promise<void>;
    protected flush(quadSink: IQuadSink): Promise<void>;
}
export interface IFragmentationStrategyDatasetSummaryOptions {
    /**
     * Regular expressions used to map subjects to datasets.
     */
    datasetPatterns: string[];
}
