import type { Readable } from 'node:stream';
import type * as RDF from '@rdfjs/types';
import type { IQuadSink } from './io/IQuadSink';
import type { IQuadSource } from './io/IQuadSource';
import type { IFragmentationStrategy } from './strategy/IFragmentationStrategy';
import type { IQuadTransformer } from './transform/IQuadTransformer';
import type { ITransformCallback } from './transformCallback/ITransformCallback';
/**
 * Fragments quads from a given source into a given sink.
 */
export declare class Fragmenter {
    private readonly quadSource;
    private readonly transformers?;
    private readonly fragmentationStrategy;
    private readonly quadSink;
    private readonly transformCallBack?;
    constructor(options: IFragmenterOptions);
    static getTransformedQuadStream(quadSource: IQuadSource, transformers: IQuadTransformer[], transformCallback?: ITransformCallback[]): RDF.Stream & Readable;
    /**
     * Read quads from a given source, fragment it into the sink, and close the sink.
     */
    fragment(): Promise<void>;
}
export interface IFragmenterOptions {
    quadSource: IQuadSource;
    transformers?: IQuadTransformer[];
    fragmentationStrategy: IFragmentationStrategy;
    quadSink: IQuadSink;
    transformCallback?: ITransformCallback[];
}
