import { MatrixClient, MatrixEvent, RelationType, TypedEventEmitter } from "matrix-js-sdk/src/matrix";
import { IDestroyable } from "../utils/IDestroyable";
export declare enum RelationsHelperEvent {
    Add = "add"
}
interface EventMap {
    [RelationsHelperEvent.Add]: (event: MatrixEvent) => void;
}
/**
 * Helper class that manages a specific event type relation for an event.
 * Just create an instance and listen for new events for that relation.
 * Optionally receive the current events by calling emitCurrent().
 * Clean up everything by calling destroy().
 */
export declare class RelationsHelper extends TypedEventEmitter<RelationsHelperEvent, EventMap> implements IDestroyable {
    private event;
    private relationType;
    private relationEventType;
    private client;
    private relations?;
    private eventId;
    private roomId;
    constructor(event: MatrixEvent, relationType: RelationType, relationEventType: string, client: MatrixClient);
    private setUpRelations;
    private onRelationsCreated;
    private setRelations;
    private onRelationsAdd;
    emitCurrent(): void;
    getCurrent(): MatrixEvent[];
    /**
     * Fetches all related events from the server and emits them.
     */
    emitFetchCurrent(): Promise<void>;
    destroy(): void;
}
export {};
