import { CommunicationTemplateRepository } from './repositories/communication-template.repository';
import { CreateCommunicationTemplateDto, UpdateCommunicationTemplateDto } from './dto';
import { CommunicationChannel, CommunicationContext, CommunicationTemplateEntity } from '../../entities/communication-template.entity';
import { TemplateRendererService } from './services/template-renderer.service';
import { QueryContextResolver } from './resolvers/query-context.resolver';
import { BookingContextResolver } from './resolvers/booking-context.resolver';
import { MovementSupplierContextResolver } from './resolvers/movement-supplier-context.resolver';
import { MovementCustomerContextResolver } from './resolvers/movement-customer-context.resolver';
export declare class CommunicationTemplateService {
    private readonly repo;
    private readonly renderer;
    private readonly queryCtx;
    private readonly bookingCtx;
    private readonly movementSupplierCtx;
    private readonly movementCustomerCtx;
    constructor(repo: CommunicationTemplateRepository, renderer: TemplateRendererService, queryCtx: QueryContextResolver, bookingCtx: BookingContextResolver, movementSupplierCtx: MovementSupplierContextResolver, movementCustomerCtx: MovementCustomerContextResolver);
    findAllForAdmin(): Promise<CommunicationTemplateEntity[]>;
    findById(id: string): Promise<CommunicationTemplateEntity>;
    findByChannelAndContext(channel: CommunicationChannel, context: CommunicationContext): Promise<CommunicationTemplateEntity[]>;
    create(dto: CreateCommunicationTemplateDto): Promise<{
        id: string;
        message: string;
    }>;
    update(id: string, dto: UpdateCommunicationTemplateDto): Promise<{
        id: string;
        message: string;
    }>;
    remove(id: string): Promise<{
        message: string;
    }>;
    render(id: string, subjectId: string): Promise<{
        subject: string;
        body: string;
    }>;
    private clearExistingDefault;
}
