import { type SecurityAlert, type AlertDeliveryResult, AlertSeverity } from '../types.js';
import { BaseAlertChannel, type BaseChannelConfig } from './base.js';
import type { SendInternalResult } from './base.js';
export interface SNSChannelConfig extends BaseChannelConfig {
    /** AWS region */
    region: string;
    /** SNS topic ARN */
    topicArn: string;
    /** AWS credentials (optional - uses default credential chain if not provided) */
    credentials?: {
        accessKeyId: string;
        secretAccessKey: string;
        sessionToken?: string;
    };
    /** Custom endpoint URL (for local development or testing) */
    endpoint?: string;
    /** Include message attributes for filtering */
    includeMessageAttributes?: boolean;
    /** Custom subject prefix */
    subjectPrefix?: string;
}
/**
 * AWS SNS integration for security alerts
 */
export declare class SNSAlertChannel extends BaseAlertChannel {
    protected readonly channelType: "sns";
    protected readonly channelName = "SNS";
    protected readonly logger: import("pino").Logger<never, boolean>;
    private readonly region;
    private topicArn;
    private readonly credentials?;
    private readonly endpoint?;
    private readonly includeMessageAttributes;
    private readonly subjectPrefix;
    private snsClient;
    constructor(config: SNSChannelConfig);
    /**
     * Initialize the SNS client
     */
    private initClient;
    /**
     * Send an alert to SNS
     */
    protected sendInternal(alert: SecurityAlert): Promise<SendInternalResult>;
    /**
     * Publish message to SNS topic
     */
    private publishMessage;
    /**
     * Format alert as message string
     */
    private formatMessage;
    /**
     * Build SNS message attributes for filtering
     */
    private buildMessageAttributes;
    /**
     * Get numeric severity level for filtering
     */
    private getSeverityLevel;
    /**
     * Publish to multiple topics based on severity
     */
    sendToSeverityTopics(alert: SecurityAlert, topicMapping: Partial<Record<AlertSeverity, string>>): Promise<AlertDeliveryResult[]>;
    /**
     * Test the SNS connection
     */
    test(): Promise<boolean>;
    /**
     * Get the topic ARN
     */
    getTopicArn(): string;
}
/**
 * Create a new SNS alert channel
 */
export declare function createSNSChannel(config: SNSChannelConfig): SNSAlertChannel;
//# sourceMappingURL=sns.d.ts.map