import type { ConfigProvider } from '@adonisjs/core/types';
import type { RedisConnections } from '@adonisjs/redis/types';
import type { LimiterRedisStoreConfig, LimiterMemoryStoreConfig, LimiterManagerStoreFactory, LimiterDatabaseStoreConfig, LimiterConsumptionOptions } from './types.js';
/**
 * Helper to define limiter config. This function exports a
 * config provider and hence you cannot access raw config
 * directly.
 *
 * Therefore use the "limiterManager.config" property to access
 * raw config.
 */
export declare function defineConfig<KnownStores extends Record<string, LimiterManagerStoreFactory | ConfigProvider<LimiterManagerStoreFactory>>>(config: {
    default: keyof KnownStores;
    stores: KnownStores;
}): ConfigProvider<{
    default: keyof KnownStores;
    stores: {
        [K in keyof KnownStores]: KnownStores[K] extends ConfigProvider<infer A> ? A : KnownStores[K];
    };
}>;
/**
 * Config helpers to instantiate limiter stores inside
 * an AdonisJS application
 */
export declare const stores: {
    /**
     * Configure redis limiter store
     */
    redis: (config: Omit<LimiterRedisStoreConfig, keyof LimiterConsumptionOptions> & {
        connectionName?: keyof RedisConnections;
    }) => ConfigProvider<LimiterManagerStoreFactory>;
    /**
     * Configure database limiter store
     */
    database: (config: Omit<LimiterDatabaseStoreConfig, keyof LimiterConsumptionOptions> & {
        connectionName?: string;
    }) => ConfigProvider<LimiterManagerStoreFactory>;
    /**
     * Configure memory limiter store
     */
    memory: (config: Omit<LimiterMemoryStoreConfig, keyof LimiterConsumptionOptions>) => LimiterManagerStoreFactory;
};
