import type { Bud } from '@roots/bud-framework';
import type { RuleSetRule } from '@roots/bud-framework/config';
import type { Rule as Interface, Options, Output, Parser } from '@roots/bud-framework/services/build/rule';
import Registrable from '@roots/bud-build/helpers/registrable';
/**
 * RuleSetRule
 */
declare class Rule extends Registrable implements Interface {
    /**
     * RuleSetRule exclude
     */
    exclude?: Options[`exclude`];
    /**
     * RuleSetRule generator
     */
    generator?: Options[`generator`];
    /**
     * RuleSetRule include
     */
    include?: Options[`include`];
    /**
     * RuleSetRule issuer
     */
    issuer?: Options[`issuer`];
    /**
     * RuleSetRule parser
     */
    parser?: Options[`parser`];
    /**
     * RuleSetRule resolve
     */
    resolve?: Options[`resolve`];
    /**
     * RuleSetRule resourceQuery
     */
    resourceQuery?: Options[`resourceQuery`];
    /**
     * RuleSetRule test
     */
    test: Options[`test`];
    /**
     * RuleSetRule type
     */
    type?: Options[`type`];
    /**
     * RuleSetRule use
     */
    use?: Options[`use`];
    /**
     * Class constructor
     */
    constructor(_app: () => Bud, options?: Options);
    /**
     * Get `exclude` value
     */
    getExclude(): Array<RegExp | string>;
    /**
     * Get generator value
     */
    getGenerator(): {
        [index: string]: any;
    };
    /**
     * Get `include` value
     */
    getInclude(): Array<RegExp | string>;
    /**
     * Get `issuer` value
     */
    getIssuer(): Output['issuer'];
    /**
     * Get `parser` value
     */
    getParser(): Output['parser'];
    /**
     * Set resolve value
     */
    getResolve(): Output[`resolve`];
    /**
     * Get `include` value
     */
    getResourceQuery(): Output[`resourceQuery`];
    /**
     * Get `test` value
     */
    getTest(): Output['test'];
    /**
     * Get `type` value
     */
    getType(): string;
    /**
     * Get `use` value
     */
    getUse(): Options[`use`];
    /**
     * Set exclude value
     */
    setExclude(excludes: ((excludes: Options['exclude']) => Options['exclude']) | Options['exclude']): this;
    /**
     * Set generator value
     */
    setGenerator(generator: Options['generator']): this;
    /**
     * Set `include` value
     */
    setInclude(includes: Options['include']): this;
    /**
     * Set `issuer` value
     */
    setIssuer(issuer: Options['issuer']): this;
    /**
     * Set `parser` value
     */
    setParser(parser: Interface['parser']): this;
    /**
     * Set resolve value
     */
    setResolve(resolve: Options[`resolve`]): this;
    /**
     * Set `include` value
     */
    setResourceQuery(query: Options['resourceQuery']): this;
    /**
     * Set `test` value
     */
    setTest(test: Options['test']): this;
    /**
     * Set type value
     */
    setType(type: Options[`type`]): this;
    /**
     * Set `use` value
     */
    setUse(use: ((use: Options[`use`]) => Options[`use`]) | Options[`use`]): this;
    /**
     * Produce final Base output
     */
    toWebpack(): Output & RuleSetRule;
}
export { Rule as default };
export type { Interface, Options, Output, Parser };
