/**
 * Policy Templates Library
 *
 * Provides pre-built policy templates for common governance scenarios.
 * Implements FR149 for Epic 4.
 *
 * Features:
 * - Common use case templates
 * - Template customization
 * - Template categories
 *
 * @packageDocumentation
 */
import type { VisualPolicyBlock } from './index.js';
/**
 * Template category
 */
export declare const TemplateCategory: {
    readonly DATA_PROTECTION: "data_protection";
    readonly ACCESS_CONTROL: "access_control";
    readonly FINANCIAL: "financial";
    readonly COMPLIANCE: "compliance";
    readonly OPERATIONAL: "operational";
    readonly SECURITY: "security";
};
export type TemplateCategory = (typeof TemplateCategory)[keyof typeof TemplateCategory];
/**
 * Template metadata
 */
export interface PolicyTemplate {
    id: string;
    name: string;
    description: string;
    category: TemplateCategory;
    tags: string[];
    useCases: string[];
    policy: VisualPolicyBlock;
    /** Variables that can be customized */
    variables: TemplateVariable[];
    /** Version of template */
    version: string;
    /** Author/source */
    author: string;
}
/**
 * Template variable for customization
 */
export interface TemplateVariable {
    name: string;
    description: string;
    type: 'string' | 'number' | 'boolean' | 'array' | 'enum';
    defaultValue: unknown;
    required: boolean;
    enumValues?: {
        value: string;
        label: string;
    }[];
    /** Path in the policy where this variable is used */
    paths: string[];
}
/**
 * Built-in policy templates
 */
export declare const POLICY_TEMPLATES: PolicyTemplate[];
/**
 * Policy Template Service
 *
 * Provides access to built-in and custom policy templates.
 */
export declare class PolicyTemplateService {
    private customTemplates;
    /**
     * Get all available templates
     */
    getTemplates(): PolicyTemplate[];
    /**
     * Get templates by category
     */
    getTemplatesByCategory(category: TemplateCategory): PolicyTemplate[];
    /**
     * Get template by ID
     */
    getTemplate(id: string): PolicyTemplate | undefined;
    /**
     * Search templates
     */
    searchTemplates(query: string): PolicyTemplate[];
    /**
     * Get all categories with counts
     */
    getCategories(): {
        category: TemplateCategory;
        count: number;
    }[];
    /**
     * Instantiate a template with variable substitution
     */
    instantiate(templateId: string, variables: Record<string, unknown>): {
        policy: VisualPolicyBlock;
        errors: string[];
    };
    /**
     * Add a custom template
     */
    addCustomTemplate(template: PolicyTemplate): void;
    /**
     * Remove a custom template
     */
    removeCustomTemplate(id: string): boolean;
    /**
     * Set value at a path in an object
     */
    private setValueAtPath;
}
/**
 * Create a policy template service instance
 */
export declare function createPolicyTemplateService(): PolicyTemplateService;
//# sourceMappingURL=templates.d.ts.map