import { HttpClient } from '@angular/common/http';
import { Observable } from 'rxjs';
import * as i0 from "@angular/core";
export interface HiveMessage {
    id?: string;
    message_id?: string;
    phoneNumber: string;
    message: string;
    direction: 'inbound' | 'outbound';
    status: string;
    timestamp?: Date;
    moduleType?: 'Contacts' | 'Leads' | 'Accounts';
    moduleId?: string;
    isTemplate?: boolean;
    message_type?: 'text' | 'image' | 'document' | 'video' | 'audio';
    media_url?: string;
    reply_to_message_id?: string;
}
export interface HiveTemplate {
    id: string;
    template_id: number;
    channel_id?: number;
    name: string;
    status: string;
    language?: string;
    category?: string;
    content?: string;
    parameters?: string | number;
    components?: Array<{
        type: 'BODY' | 'HEADER' | 'FOOTER' | 'BUTTONS';
        text?: string;
    }>;
}
export interface TemplateParameter {
    type: 'text' | 'image' | 'document' | 'video';
    parameter_name?: string;
    value: string;
}
export interface TemplateMapping {
    id: string;
    template_id: number;
    parameter_name: string;
    mapped_field: string;
    default_value: string;
}
export interface HiveChannel {
    channel_id: number;
    name: string;
    status: string;
    phone_number_id: string;
    phone_number?: string;
}
export interface RecordDetails {
    [key: string]: any;
}
export declare class HiveMessageService {
    private http;
    private buildApiUrl;
    private mediaBaseUrl;
    private mediaBaseUrl$;
    private getMediaBaseUrl;
    private cachedTemplates;
    constructor(http: HttpClient);
    private preloadTemplates;
    private cleanPhoneNumber;
    getConversationHistory(phoneNumber: string): Observable<HiveMessage[]>;
    getTemplates(channelId?: number): Observable<HiveTemplate[]>;
    getTemplateMappings(templateId: string | number, module: string): Observable<TemplateMapping[]>;
    getChannels(): Observable<HiveChannel[]>;
    getRecordDetails(module: string, recordId: string): Observable<RecordDetails>;
    sendMessage(phoneNumber: string, message: string, channelId: number, moduleType?: string, moduleId?: string, replyToMessageId?: string): Observable<any>;
    sendMediaMessage(phoneNumber: string, mediaType: 'image' | 'document' | 'video' | 'audio', mediaUrl: string, channelId: number, caption?: string, filename?: string, moduleType?: string, moduleId?: string, replyToMessageId?: string): Observable<any>;
    sendTemplateMessage(phoneNumber: string, templateId: string | number, channelId: number, parameters?: TemplateParameter[], moduleType?: string, moduleId?: string, previewText?: string): Observable<any>;
    uploadMedia(file: File): Observable<{
        success: boolean;
        url: string;
        filename: string;
        message?: string;
    }>;
    static ɵfac: i0.ɵɵFactoryDeclaration<HiveMessageService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<HiveMessageService>;
}
//# sourceMappingURL=hivemessage.service.d.ts.map