import { RollTemplateEntity } from '../../domain/entities/roll-template-entity.js';
import { RollTemplateService } from '../../ports/primary/roll-template-service.js';
import { CreateTemplateUseCase } from '../create-template-use-case.js';
import { DeleteTemplateUseCase } from '../delete-template-use-case.js';
import { EvaluateTemplateUseCase, TemplateEvaluationResult } from '../evaluate-template-use-case.js';
import { GetTemplateUseCase } from '../get-template-use-case.js';
import { ListTemplatesUseCase } from '../list-templates-use-case.js';
import { UpdateTemplateUseCase } from '../update-template-use-case.js';
/**
 * Implementation of the RollTemplateService interface.
 */
export declare class RollTemplateServiceImpl implements RollTemplateService {
    private readonly createTemplateUseCase;
    private readonly getTemplateUseCase;
    private readonly listTemplatesUseCase;
    private readonly updateTemplateUseCase;
    private readonly deleteTemplateUseCase;
    private readonly evaluateTemplateUseCase;
    /**
     * Creates a new RollTemplateServiceImpl instance.
     * @param createTemplateUseCase The use case for creating templates.
     * @param getTemplateUseCase The use case for getting templates.
     * @param listTemplatesUseCase The use case for listing templates.
     * @param updateTemplateUseCase The use case for updating templates.
     * @param deleteTemplateUseCase The use case for deleting templates.
     * @param evaluateTemplateUseCase The use case for evaluating templates.
     */
    constructor(createTemplateUseCase: CreateTemplateUseCase, getTemplateUseCase: GetTemplateUseCase, listTemplatesUseCase: ListTemplatesUseCase, updateTemplateUseCase: UpdateTemplateUseCase, deleteTemplateUseCase: DeleteTemplateUseCase, evaluateTemplateUseCase: EvaluateTemplateUseCase);
    /**
     * Creates a new roll template.
     * @param name Template name.
     * @param description Template description.
     * @param template The template string.
     * @returns The ID of the created template.
     */
    createTemplate(name: string, description: string, template: string): Promise<string>;
    /**
     * Gets a template by its ID.
     * @param id The ID of the template to get.
     * @returns The template, or null if not found.
     */
    getTemplate(id: string): Promise<RollTemplateEntity | null>;
    /**
     * Updates an existing template.
     * @param id The ID of the template to update.
     * @param updates Object containing the updates to apply.
     */
    updateTemplate(id: string, updates: {
        name?: string;
        description?: string;
        template?: string;
    }): Promise<void>;
    /**
     * Lists templates based on optional filter criteria.
     * @param filter Optional filter criteria.
     * @returns An array of templates matching the filter.
     */
    listTemplates(filter?: Record<string, unknown>): Promise<RollTemplateEntity[]>;
    /**
     * Deletes a template by its ID.
     * @param id The ID of the template to delete.
     */
    deleteTemplate(id: string): Promise<void>;
    /**
     * Evaluates a template by resolving all references to tables.
     * @param id The ID of the template to evaluate.
     * @param count The number of evaluations to perform (default: 1).
     * @returns An array of template evaluation results.
     */
    evaluateTemplate(id: string, count?: number): Promise<TemplateEvaluationResult[]>;
}
