/// <reference types="node" resolution-mode="require"/>
import EventEmitter from 'node:events';
import { type SelectQuery } from 'sparqljs';
import type { NamedNode } from '@rdfjs/types';
import type { Endpoint } from './types.js';
import { BaseQuery } from './sparql.js';
interface Events {
    data: [$this: NamedNode];
    end: [numResults: number];
    error: [IteratorError];
}
export default class Iterator extends EventEmitter<Events> {
    readonly query: Query;
    readonly endpoint: Endpoint;
    private readonly delay;
    private readonly engine;
    private source?;
    private offset;
    totalResults: number;
    constructor(query: Query, endpoint: Endpoint, delay?: number);
    run(): Promise<void>;
}
export declare class Query extends BaseQuery {
    protected readonly query: SelectQuery;
    static from(query: SelectQuery, limit?: number): Query;
    private constructor();
    get limit(): number;
    set offset(offset: number);
    protected validate(): void;
}
export declare class IteratorError extends Error {
    readonly context: {
        endpoint: string;
        query: string;
    };
    constructor(args: {
        error: Error;
        endpoint: Endpoint;
        query: Query;
    });
}
export {};
//# sourceMappingURL=iterator.d.ts.map