import type Talk from 'talkjs';
import { LEAVE_PROMISE_EVENT, SEND_MESSAGE_PROMISE_EVENT } from './constants';
import type { User } from './User';
import type { InjectJavaScript } from './Session';
type resolverEvent = typeof LEAVE_PROMISE_EVENT | typeof SEND_MESSAGE_PROMISE_EVENT;
export interface InternalConversationBuilder extends Talk.ConversationBuilder {
    _variableName: string;
    _usesSynchronization: boolean;
    _resolve: (event: resolverEvent, key: string, promiseValue?: boolean) => void;
    _setInjectJavaScript: (injectJavaScript: InjectJavaScript) => void;
}
export declare class _ConversationBuilder implements InternalConversationBuilder {
    #private;
    _injectJavaScript?: InjectJavaScript;
    subject?: string | null;
    photoUrl?: string | null;
    custom?: {
        [name: string]: string | null;
    } | null;
    welcomeMessages?: Array<string> | null;
    private constructor();
    static create(conversationId: string): _ConversationBuilder;
    get _conversationId(): string;
    get _variableName(): string;
    get _usesSynchronization(): boolean;
    _setInjectJavaScript(injectJavaScript: InjectJavaScript): void;
    _resolve(event: resolverEvent, key: string, value?: boolean): void;
    leave(): Promise<boolean>;
    setParticipant(user: User, settings?: Partial<Talk.ParticipationSettings>): void;
    setAttributes(attributes: Talk.ConversationAttributes): void;
    sendMessage(text: string, options?: Talk.SendMessageOptions): Promise<void>;
    toString(): string;
    toJSON(): string;
}
export declare const getConversationBuilder: (conversationId: string) => _ConversationBuilder;
export {};
//# sourceMappingURL=ConversationBuilder.d.ts.map