import { type WsToolsOptions } from '@coze/api/ws-tools';
import { type CreateTranscriptionsWsReq, type CreateTranscriptionsWsRes, type WebSocketAPI } from '@coze/api';
import { PcmRecorder } from '../pcm-recorder';
/**
 * Base WebSocket transcription client for UniApp/WeChat Mini Program
 */
export declare class BaseWsTranscriptionClient {
    /**
     * WebSocket connection instance
     */
    ws: WebSocketAPI<CreateTranscriptionsWsReq, CreateTranscriptionsWsRes> | null;
    /**
     * Event listeners map
     */
    protected listeners: Map<string, Set<(data: CreateTranscriptionsWsRes) => void>>;
    /**
     * Recorder instance for capturing audio
     */
    recorder: PcmRecorder;
    /**
     * Client configuration options
     */
    config: WsToolsOptions;
    /**
     * API client for making requests
     */
    private api;
    /**
     * Creates a new BaseWsTranscriptionClient instance
     * @param {WsToolsOptions} config - Configuration options
     */
    constructor(config: WsToolsOptions);
    /**
     * Initialize WebSocket connection
     * @returns {Promise<WebSocketAPI>} - WebSocket connection instance
     */
    init(): Promise<WebSocketAPI<CreateTranscriptionsWsReq, CreateTranscriptionsWsRes>>;
    /**
     * Listen for one or more events
     * @param {string|string[]} event - Event name or array of event names
     * @param {function} callback - Callback function
     */
    on(event: string | string[], callback: (data: CreateTranscriptionsWsRes) => void): void;
    /**
     * Remove listener for one or more events
     * @param {string|string[]} event - Event name or array of event names
     * @param {function} callback - Callback function to remove
     */
    off(event: string | string[], callback: (data: CreateTranscriptionsWsRes) => void): void;
    /**
     * Close WebSocket connection
     * @protected
     */
    protected closeWs(): void;
    /**
     * Emit an event to all registered listeners
     * @param {string} event - Event name
     * @param {object} data - Event data
     * @protected
     */
    protected emit(event: string, data: CreateTranscriptionsWsRes): void;
}
export default BaseWsTranscriptionClient;
