/**
 * Production transports for the ApprovalChannelDispatcher (W1.10).
 *
 * Provides concrete EmailSender + SmsSender implementations wired against
 * real production APIs:
 *   - Email: Resend (https://resend.com/docs/api-reference/emails/send-email)
 *   - SMS:   Twilio (https://www.twilio.com/docs/messaging/send-messages)
 *
 * Both adapters accept an injectable `transport` so they can be unit-tested
 * without hitting the network. In production the default transport uses
 * node:https directly with no external SDK dependency.
 *
 * @connexum/ai-governance  F-NEW-PRODUCT-APPROVAL-CHANNEL-EMAIL-SMS (production wiring)
 */
import type { EmailSender, SlackSender, SmsSender } from './approval-notifications.js';
export interface HttpsTransportRequest {
    method: 'GET' | 'POST' | 'PUT' | 'DELETE';
    hostname: string;
    path: string;
    headers: Record<string, string>;
    body?: string;
}
export interface HttpsTransportResponse {
    status: number;
    bodyText: string;
}
export type HttpsTransport = (req: HttpsTransportRequest) => Promise<HttpsTransportResponse>;
export declare const nodeHttpsTransport: HttpsTransport;
export interface ResendEmailAdapterOptions {
    apiKey: string;
    /** From address. Default 'governance@my-cc.io'. */
    fromAddress?: string;
    /** Custom transport for tests. Defaults to nodeHttpsTransport. */
    transport?: HttpsTransport;
}
export declare function createResendEmailSender(options: ResendEmailAdapterOptions): EmailSender;
export interface TwilioSmsAdapterOptions {
    accountSid: string;
    authToken: string;
    /** Twilio messaging service SID OR an E.164 from-number. */
    from: string;
    transport?: HttpsTransport;
}
export declare function createTwilioSmsSender(options: TwilioSmsAdapterOptions): SmsSender;
export interface SlackWebhookAdapterOptions {
    /**
     * Default webhook URL used when the recipient doesn't supply one.
     * Set via SLACK_WEBHOOK_URL env var at server boot. Optional.
     */
    defaultWebhookUrl?: string;
    /** Custom HTTPS transport for tests. Defaults to nodeHttpsTransport. */
    transport?: HttpsTransport;
}
/**
 * Creates a SlackSender that POSTs to a Slack incoming-webhook URL.
 *
 * Payload shape: { text, blocks } — Slack Block Kit with approve/deny
 * action buttons that route to context.approveUrl / context.denyUrl.
 *
 * The transport accepts the existing HttpsTransportRequest shape
 * (hostname + path), so the webhook URL is parsed on each call.
 */
export declare function createSlackWebhookSender(options?: SlackWebhookAdapterOptions): SlackSender;
//# sourceMappingURL=approval-channel-adapters.d.ts.map