import type { CommandReply } from '../commands/generic-transformers';
import { type PolicyResolver, type ModuleMetadataRecords } from './types';
/**
 * Function type that returns command information from Redis
 */
export type CommandFetcher = () => Promise<Array<CommandReply>>;
/**
 * A factory for creating policy resolvers that dynamically build policies based on the Redis server's COMMAND response.
 *
 * This factory fetches command information from Redis and analyzes the response to determine
 * appropriate routing policies for each command, returning a StaticMetadataResolver with the built policies.
 */
export declare class DynamicPolicyResolverFactory {
    #private;
    /**
     * Creates a StaticMetadataResolver by fetching command information from Redis
     * and building appropriate policies based on the command characteristics.
     *
     * @param commandFetcher Function to fetch command information from Redis
     * @param fallbackResolver Optional fallback resolver to use when policies are not found
     * @returns A new StaticMetadataResolver with the fetched policies
     */
    static create(commandFetcher: CommandFetcher, fallbackResolver?: PolicyResolver): Promise<PolicyResolver>;
    /**
     * Builds module->command policy records from COMMAND replies.
     *
     * Also used by `scripts/generate-command-metadata-data.ts` to regenerate
     * `command-metadata-data.ts`, so the static data is guaranteed to match what
     * this factory would derive at runtime.
     */
    static buildModuleMetadataRecords(commands: Array<CommandReply>): ModuleMetadataRecords;
}
//# sourceMappingURL=dynamic-policy-resolver-factory.d.ts.map