/**
 * Slack Initializer
 *
 * Handles automatic Slack connection on application startup.
 * Checks for environment variables and initializes if configured.
 *
 * @module services/slack/initializer
 */
import { SlackConfig } from '../../types/slack.types.js';
import type { MessageQueueService } from '../messaging/message-queue.service.js';
/**
 * Result of initialization attempt
 */
export interface SlackInitResult {
    /** Whether initialization was attempted */
    attempted: boolean;
    /** Whether initialization succeeded */
    success: boolean;
    /** Error message if failed */
    error?: string;
}
/**
 * Check if Slack is configured via environment variables
 *
 * @returns True if all required environment variables are set
 */
export declare function isSlackConfigured(): boolean;
/**
 * Get Slack configuration from environment variables
 *
 * @returns SlackConfig object or null if not configured
 */
export declare function getSlackConfigFromEnv(): SlackConfig | null;
/**
 * Get Slack configuration from environment variables or saved credentials.
 * Environment variables take priority over saved credentials.
 *
 * @returns SlackConfig object or null if not configured
 */
export declare function getSlackConfig(): Promise<SlackConfig | null>;
/**
 * Options for Slack initialization
 */
export interface SlackInitOptions {
    /** Optional MessageQueueService for enqueuing messages to orchestrator */
    messageQueueService?: MessageQueueService;
}
/**
 * Initialize Slack integration if configured via environment variables
 * or saved credentials.
 *
 * This function is designed to be called during application startup.
 * It safely handles cases where Slack is not configured.
 *
 * @param options - Optional initialization options
 * @returns Result object indicating success or failure
 *
 * @example
 * ```typescript
 * const result = await initializeSlackIfConfigured({
 *   agentRegistrationService: myService
 * });
 * if (result.success) {
 *   console.log('Slack connected!');
 * } else if (result.attempted) {
 *   console.error('Slack failed to connect:', result.error);
 * } else {
 *   console.log('Slack not configured, skipping');
 * }
 * ```
 */
export declare function initializeSlackIfConfigured(options?: SlackInitOptions): Promise<SlackInitResult>;
/**
 * Gracefully shutdown Slack integration
 *
 * Call this during application shutdown to disconnect cleanly.
 */
export declare function shutdownSlack(): Promise<void>;
//# sourceMappingURL=slack-initializer.d.ts.map