import { TemplateEngineEnum, TemplateLanguageEnum } from './template.types';
import { ModuleMetadata, Type } from '@nestjs/common';
export type TemplateFilter = (...args: any[]) => any;
export interface CustomEngineOptions {
    filters?: Record<string, TemplateFilter>;
    globals?: Record<string, any>;
}
export interface NestDynamicTemplatesModuleConfig {
    isGlobal?: boolean;
    engines?: {
        template?: TemplateEngineEnum[];
        language?: TemplateLanguageEnum[];
    };
    filters?: Record<string, TemplateFilter>;
    globals?: Record<string, any>;
    engineOptions?: {
        template?: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
        language?: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
    };
    enginesOptions?: {
        filters?: Record<string, TemplateFilter>;
        globalValues?: Record<string, any>;
        template?: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
        language?: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
    };
}
export interface ResolvedTemplatesConfig {
    isGlobal: boolean;
    engines: {
        template: TemplateEngineEnum[];
        language: TemplateLanguageEnum[];
    };
    filters: Record<string, TemplateFilter>;
    globals: Record<string, any>;
    engineOptions: {
        template: Partial<Record<TemplateEngineEnum, Record<string, any>>>;
        language: Partial<Record<TemplateLanguageEnum, Record<string, any>>>;
    };
}
export interface NestDynamicTemplatesModuleOptionsFactory {
    createNestDynamicTemplatesModuleOptions(): Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
}
export interface NestDynamicTemplatesModuleAsyncOptions extends Pick<ModuleMetadata, 'imports'> {
    isGlobal?: boolean;
    useExisting?: Type<NestDynamicTemplatesModuleOptionsFactory>;
    useClass?: Type<NestDynamicTemplatesModuleOptionsFactory>;
    useFactory?: (...args: any[]) => Promise<NestDynamicTemplatesModuleConfig> | NestDynamicTemplatesModuleConfig;
    inject?: any[];
}
