import type { PhoneRemoteControlSurface } from '../broker/surface.js';
import type { WhatsAppControllerStateEvent, WhatsAppTransportFactory } from './types.js';
export interface LinkedWhatsAppRemoteControlOptions {
    authDir: string;
    configFilePath?: string;
    bindingFilePath: string;
    logFilePath?: string;
    runtime: PhoneRemoteControlSurface;
    transportFactory?: WhatsAppTransportFactory;
    log?: (message: string) => void;
    channelLabel?: string;
    onStateChange?: (event: WhatsAppControllerStateEvent) => void;
}
export interface LinkedWhatsAppStartStatus {
    pairedChatId: string | null;
    qrText?: string;
}
export declare class LinkedWhatsAppRemoteControl {
    private readonly authDir;
    private readonly configFilePath?;
    private readonly bindingStore;
    private readonly runtime;
    private readonly transportFactory;
    private readonly log;
    private readonly eventLogFilePath?;
    private readonly channelLabel;
    private readonly onStateChange?;
    private transport;
    private pairedChatId;
    private unsubscribeRuntime;
    private unsubscribeMessages;
    private lastQrText;
    private pendingAssistantReply;
    constructor(options: LinkedWhatsAppRemoteControlOptions);
    start(): Promise<LinkedWhatsAppStartStatus>;
    close(): Promise<void>;
    getPairedChatId(): string | null;
    getLastQrText(): string | undefined;
    private emitState;
    private buildPhoneCommandHelp;
    private sendOutgoingText;
    private handleInboundMessage;
    private handleAgentLoopEvent;
    private reportIssue;
    private renderQrToAscii;
    private clearInvalidPairedChat;
    private writeEventLog;
}
//# sourceMappingURL=controller.d.ts.map