/**
 * Policy Loader
 *
 * Loads and caches policies from the database for runtime evaluation.
 *
 * @packageDocumentation
 */
import type { Policy } from './types.js';
import type { ID } from '../common/types.js';
/**
 * Policy Loader service for fetching and caching policies
 */
export declare class PolicyLoader {
    private policyService;
    private localCache;
    private cacheTtl;
    constructor(options?: {
        cacheTtl?: number;
    });
    /**
     * Get published policies for a tenant, with caching
     */
    getPolicies(tenantId: ID, namespace?: string): Promise<Policy[]>;
    /**
     * Get a specific policy by ID
     */
    getPolicy(id: ID, tenantId: ID): Promise<Policy | null>;
    /**
     * Invalidate cache for a tenant (call after policy updates)
     */
    invalidateCache(tenantId: ID, namespace?: string): Promise<void>;
    /**
     * Invalidate all caches (call on policy hot-reload)
     */
    invalidateAll(): Promise<void>;
    /**
     * Preload policies for a tenant (warm the cache)
     */
    preload(tenantId: ID, namespaces?: string[]): Promise<void>;
    /**
     * Get cache key for a tenant/namespace
     */
    private getCacheKey;
    /**
     * Update both local and Redis caches
     */
    private updateCache;
}
/**
 * Get the shared policy loader instance
 */
export declare function getPolicyLoader(): PolicyLoader;
/**
 * Create a new policy loader instance
 */
export declare function createPolicyLoader(options?: {
    cacheTtl?: number;
}): PolicyLoader;
/**
 * Reset the singleton (for testing)
 */
export declare function resetPolicyLoader(): void;
//# sourceMappingURL=loader.d.ts.map