import type { SKYKOIConfig } from "../../config/config.js";
import { type GatewayClientMode, type GatewayClientName } from "../../utils/message-channel.js";
import { type OutboundDeliveryResult, type OutboundSendDeps } from "./deliver.js";
export type MessageGatewayOptions = {
    url?: string;
    token?: string;
    timeoutMs?: number;
    clientName?: GatewayClientName;
    clientDisplayName?: string;
    mode?: GatewayClientMode;
};
type MessageSendParams = {
    to: string;
    content: string;
    channel?: string;
    mediaUrl?: string;
    mediaUrls?: string[];
    gifPlayback?: boolean;
    accountId?: string;
    dryRun?: boolean;
    bestEffort?: boolean;
    deps?: OutboundSendDeps;
    cfg?: SKYKOIConfig;
    gateway?: MessageGatewayOptions;
    idempotencyKey?: string;
    mirror?: {
        sessionKey: string;
        koiId?: string;
        text?: string;
        mediaUrls?: string[];
    };
    abortSignal?: AbortSignal;
};
export type MessageSendResult = {
    channel: string;
    to: string;
    via: "direct" | "gateway";
    mediaUrl: string | null;
    mediaUrls?: string[];
    result?: OutboundDeliveryResult | {
        messageId: string;
    };
    dryRun?: boolean;
};
type MessagePollParams = {
    to: string;
    question: string;
    options: string[];
    maxSelections?: number;
    durationHours?: number;
    channel?: string;
    dryRun?: boolean;
    cfg?: SKYKOIConfig;
    gateway?: MessageGatewayOptions;
    idempotencyKey?: string;
};
export type MessagePollResult = {
    channel: string;
    to: string;
    question: string;
    options: string[];
    maxSelections: number;
    durationHours: number | null;
    via: "gateway";
    result?: {
        messageId: string;
        toJid?: string;
        channelId?: string;
        conversationId?: string;
        pollId?: string;
    };
    dryRun?: boolean;
};
export declare function sendMessage(params: MessageSendParams): Promise<MessageSendResult>;
export declare function sendPoll(params: MessagePollParams): Promise<MessagePollResult>;
export {};
