import { Configuration, RuleSetCondition, RuleSetLoader, RuleSetRule, RuleSetUse, RuleSetUseItem } from 'webpack';
import { DevConfiguration } from '../types';
declare type AnyConfiguration = Configuration | DevConfiguration;
interface RuleItem {
    rule: RuleSetRule;
    index: number;
}
declare type ResolvedRuleSet = string | RuleSetLoader;
interface PluginItem {
    plugin: object;
    index: number;
}
interface LoaderItem {
    rule: RuleSetRule;
    ruleIndex: number;
    loader: RuleSetUseItem;
    loaderIndex: number;
}
export declare function findLoader(loaderName: string, rules: RuleSetRule[]): RuleSetRule | null;
export declare function getRulesAsItems(rules: RuleSetRule[]): RuleItem[];
export declare function getRules(config: AnyConfiguration): RuleItem[];
export declare function getRulesFromRules(rules: RuleSetRule[]): RuleSetRule[];
export declare function getLoadersFromRules(rules: RuleItem[]): LoaderItem[];
export declare function getLoaders(config: AnyConfiguration): LoaderItem[];
export declare function getRulesByMatchingFiles(config: AnyConfiguration, files: string[]): {
    [key: string]: RuleItem[];
};
export declare function rulesMatchAnyFiles(config: AnyConfiguration, files: string[]): boolean;
export declare function resolveRuleSetUse(rule?: RuleSetUse | RuleSetUse[]): ResolvedRuleSet[];
export declare function conditionMatchesFile(condition: RuleSetCondition | undefined, file: string): boolean;
export declare function getPlugins({ plugins }: AnyConfiguration): PluginItem[];
export declare function getPluginsByName(config: AnyConfiguration, name: string): PluginItem[];
export declare function isRuleSetItem(loader: RuleSetUse): loader is RuleSetUseItem;
export declare function isRuleSetLoader(loader: RuleSetUse): loader is RuleSetLoader;
export {};