import type { MessageBus } from "./MessageBus.js";
import type { Operation } from "./Operation.js";
/**
 * A registry of well-known operations.
 */
export declare abstract class OperationRegistry {
    protected readonly _messages: MessageBus;
    /**
     * Operation name prefix that will be added to all operations in this
     * registry.
     */
    protected abstract readonly _prefix: string;
    /**
     * Creates a registry.
     *
     * @param messages The message bus to use.
     */
    constructor(messages: MessageBus);
    /**
     * Returns the operation corresponding to the given unqualified name.
     *
     * @param name The name of the operation without the common prefix
     *   associated with this registry.
     */
    protected _get<T = void, TResult = undefined>(name: string): Operation<T, TResult>;
}
