/// <reference types="node" />
import { EventEmitter } from 'events';
import type { BindingsStream, FragmentSelectorShape, IActionContext, IQuerySource, IQueryBindingsOptions, QuerySourceReference } from '@comunica/types';
import type { Quad } from '@rdfjs/types';
import type { AsyncIterator } from 'asynciterator';
import type { Ask, Operation, Update } from 'sparqlalgebrajs/lib/algebra';
export declare enum StreamingQuerySourceStatus {
    Initializing = 0,
    Running = 1,
    Idle = 2,
    Stopped = 3
}
export declare abstract class StreamingQuerySource implements IQuerySource {
    private _status;
    statusEvents: EventEmitter;
    context?: IActionContext;
    get status(): StreamingQuerySourceStatus;
    protected set status(value: StreamingQuerySourceStatus);
    abstract halt(): void;
    abstract resume(): void;
    abstract getSelectorShape(_context: IActionContext): Promise<FragmentSelectorShape>;
    abstract queryBindings(_operation: Operation, _context: IActionContext, _options: IQueryBindingsOptions | undefined): BindingsStream;
    abstract queryBoolean(_operation: Ask, _context: IActionContext): Promise<boolean>;
    abstract queryQuads(_operation: Operation, _context: IActionContext): AsyncIterator<Quad>;
    abstract queryVoid(_operation: Update, _context: IActionContext): Promise<void>;
    referenceValue: QuerySourceReference;
}
