import { Template } from '@mdfriday/text-template';
import { TemplateLookup, TemplateNamespace, TemplateInfo, TemplateLookupFunc, TemplateFuncMap, RegularTemplateNamespaceInterface, PartialTemplateNamespaceInterface, ShortcodeTemplateNamespaceInterface } from '../type';
import { BaseOf } from '../vo/baseof';
/**
 * Lookup entity for finding templates and managing dependencies
 * TypeScript version of Go's Lookup struct
 */
export declare class Lookup implements TemplateLookup {
    private baseOf;
    private funcsv;
    constructor(baseOf?: BaseOf, funcMap?: TemplateFuncMap);
    /**
     * Find template with no dependencies (legacy method)
     */
    findNoDependence(name: string, ns: TemplateNamespace): [Template | null, boolean, Error | null];
    /**
     * Find regular template with baseof dependency support
     */
    findTemplate(name: string, templateNS: RegularTemplateNamespaceInterface): [Template | null, boolean, Error | null];
    /**
     * Find partial template (simple lookup, no dependencies)
     */
    findPartial(name: string, partialNS: PartialTemplateNamespaceInterface): [Template | null, boolean, Error | null];
    /**
     * Find shortcode template (simplest lookup)
     */
    findShortcode(name: string, shortcodeNS: ShortcodeTemplateNamespaceInterface): [Template | null, boolean, Error | null];
    /**
     * Find dependent template information
     */
    findDependentInfo(name: string): [TemplateInfo | null, TemplateInfo | null, boolean];
    /**
     * Get function by name
     */
    getFunc(name: string): any;
    /**
     * Set function
     */
    setFunc(name: string, fn: any): void;
    /**
     * Set function map
     */
    setFuncMap(funcMap: TemplateFuncMap): void;
    /**
     * Get function map
     */
    getFuncMap(): TemplateFuncMap;
    /**
     * Create template lookup function for namespace
     */
    newTemplateLookup(ns: TemplateNamespace): TemplateLookupFunc;
    /**
     * Get base template manager
     */
    getBaseOf(): BaseOf;
    /**
     * Set base template manager
     */
    setBaseOf(baseOf: BaseOf): void;
    /**
     * Check if template has dependencies
     */
    hasDependencies(name: string): boolean;
    /**
     * Get all available functions
     */
    getAllFunctions(): string[];
    /**
     * Clear all functions
     */
    clearFunctions(): void;
    /**
     * Get lookup statistics
     */
    getStats(): {
        functionCount: number;
        baseTemplateCount: number;
        dependentTemplateCount: number;
    };
}
/**
 * Create a new Lookup instance
 */
export declare function newLookup(baseOf?: BaseOf, funcMap?: TemplateFuncMap): Lookup;
//# sourceMappingURL=lookup.d.ts.map