import { type AgentCredentialIntegration, type AgentIntegrationStatusResponse } from '@n8n/api-types';
import { Logger } from '@n8n/backend-common';
import { GlobalConfig } from '@n8n/config';
import { InstanceSettings } from 'n8n-core';
import { CredentialsFinderService } from '../../../credentials/credentials-finder.service';
import { CredentialsService } from '../../../credentials/credentials.service';
import type { PubSubCommandMap } from '../../../scaling/pubsub/pubsub.event-map';
import { Publisher } from '../../../scaling/pubsub/publisher.service';
import { UrlService } from '../../../services/url.service';
import { ChatIntegrationRegistry } from './agent-chat-integration';
import type { Agent } from '../entities/agent.entity';
import { AgentRepository } from '../repositories/agent.repository';
type WebhookHandler = (request: Request, options?: {
    waitUntil?: (task: Promise<unknown>) => void;
}) => Promise<Response>;
interface ChatInstance {
    initialize(): Promise<void>;
    shutdown(): Promise<void>;
    webhooks: Record<string, WebhookHandler>;
    onNewMention: (handler: unknown) => void;
    onSubscribedMessage: (handler: unknown) => void;
    onAction: (handler: unknown) => void;
}
export declare class ChatIntegrationService {
    private readonly logger;
    private readonly agentRepository;
    private readonly credentialsService;
    private readonly credentialsFinderService;
    private readonly urlService;
    private readonly integrationRegistry;
    private readonly instanceSettings;
    private readonly publisher;
    private readonly globalConfig;
    private readonly connections;
    constructor(logger: Logger, agentRepository: AgentRepository, credentialsService: CredentialsService, credentialsFinderService: CredentialsFinderService, urlService: UrlService, integrationRegistry: ChatIntegrationRegistry, instanceSettings: InstanceSettings, publisher: Publisher, globalConfig: GlobalConfig);
    broadcastIntegrationChange(agentId: string, type: string, credentialId: string, action: 'connect' | 'disconnect'): Promise<void>;
    private connectionKey;
    private connectionTypeFromKey;
    connect(agentId: string, credentialId: string, integrationType: string, userId: string, projectId: string, options?: {
        skipExternalHooks?: boolean;
    }): Promise<void>;
    disconnect(agentId: string, type?: string, credentialId?: string): Promise<void>;
    disconnectAll(): Promise<void>;
    disconnectLeaderOnlyIntegrations(): Promise<void>;
    syncToConfig(agent: Agent, previous: AgentCredentialIntegration[], next: AgentCredentialIntegration[]): Promise<void>;
    getStatus(agentId: string): AgentIntegrationStatusResponse & {
        connections: number;
    };
    getChatInstance(agentId: string): ChatInstance | undefined;
    getWebhookHandler(agentId: string, platform: string): WebhookHandler | undefined;
    reconnectAll(): Promise<void>;
    handleIntegrationChanged(payload: PubSubCommandMap['agent-chat-integration-changed']): Promise<void>;
    private disconnectOne;
    private resolveUser;
    private decryptCredential;
    private buildWebhookUrl;
}
export {};
