/**
 * @license
 * Copyright 2025 Steven Roussey <sroussey@gmail.com>
 * SPDX-License-Identifier: Apache-2.0
 */
import type { ITabularStorage } from "@workglow/storage";
import { EventEmitter } from "@workglow/util";
import type { EventParameters } from "@workglow/util";
import { McpServerPrimaryKeyNames, McpServerRecordSchema } from "./McpServerSchema";
import type { McpServerRecord } from "./McpServerSchema";
export type McpServerEventListeners = {
    server_added: (record: McpServerRecord) => void;
    server_removed: (record: McpServerRecord) => void;
    server_updated: (record: McpServerRecord) => void;
};
export type McpServerEvents = keyof McpServerEventListeners;
export type McpServerEventListener<Event extends McpServerEvents> = McpServerEventListeners[Event];
export type McpServerEventParameters<Event extends McpServerEvents> = EventParameters<McpServerEventListeners, Event>;
export declare class McpServerRepository {
    protected readonly storage: ITabularStorage<typeof McpServerRecordSchema, typeof McpServerPrimaryKeyNames>;
    constructor(storage: ITabularStorage<typeof McpServerRecordSchema, typeof McpServerPrimaryKeyNames>);
    protected events: EventEmitter<McpServerEventListeners>;
    setupDatabase(): Promise<void>;
    on<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>): void;
    off<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>): void;
    once<Event extends McpServerEvents>(name: Event, fn: McpServerEventListener<Event>): void;
    waitOn<Event extends McpServerEvents>(name: Event): Promise<import("@workglow/util").EmittedReturnType<McpServerEventListeners, Event>>;
    addServer(record: McpServerRecord): Promise<McpServerRecord>;
    removeServer(server_id: string): Promise<void>;
    getServer(server_id: string): Promise<McpServerRecord | undefined>;
    enumerateAll(): Promise<McpServerRecord[]>;
    size(): Promise<number>;
}
//# sourceMappingURL=McpServerRepository.d.ts.map