import type { GatewayAccountAdapterContext, GatewayAdapter, GatewayConversationEndpoint } from "./adapters.ts";
import type { ChatAccountConfig, ChatService } from "./chat/core/config-types.ts";
export interface GatewayPlatformCapabilities {
    markdown?: boolean;
    attachments?: boolean;
    typing?: boolean;
    polling?: boolean;
    realtime?: boolean;
    threads?: boolean;
    voiceInput?: boolean;
    voiceOutput?: boolean;
}
export interface GatewayPlatformRegistration {
    service: ChatService;
    label: string;
    capabilities?: GatewayPlatformCapabilities;
    startAccountAdapter(accountId: string, account: ChatAccountConfig, endpoints: GatewayConversationEndpoint[], context?: GatewayAccountAdapterContext): Promise<GatewayAdapter>;
    sendMessage?(account: ChatAccountConfig, channelId: string, text: string, options?: {
        attachmentPaths?: string[];
        signal?: AbortSignal;
        replyToMessageId?: string;
    }): Promise<string>;
}
export declare class GatewayPlatformRegistry {
    private readonly entries;
    register(entry: GatewayPlatformRegistration, options?: {
        replace?: boolean;
    }): void;
    has(service: ChatService): boolean;
    get(service: ChatService): GatewayPlatformRegistration | undefined;
    require(service: ChatService): GatewayPlatformRegistration;
    list(): GatewayPlatformRegistration[];
}
export declare const defaultGatewayPlatformRegistry: GatewayPlatformRegistry;
//# sourceMappingURL=platform-registry.d.ts.map