import type { Bud, Loaders } from '@roots/bud-framework';
import type * as Build from '@roots/bud-framework/services/build';
import Registrable from '@roots/bud-build/helpers/registrable';
import Loader from '@roots/bud-build/loader';
export type ConstructorOptions = Build.Item.ConstructorOptions;
/**
 * Item class
 */
declare class Item extends Registrable implements Build.Item {
    _app: () => Bud;
    /**
     * Identifier
     */
    ident: string;
    /**
     * Loader
     */
    loader: `${keyof Loaders & string}` | Loader;
    /**
     * Loader options
     */
    options: Build.Item['options'];
    /**
     * Class constructor
     */
    constructor(_app: () => Bud, constructorParams?: {
        ident?: string;
        loader?: `${keyof Loaders & string}` | Loader;
        options?: Item['options'];
    });
    getIdent(): Build.Item['ident'];
    /**
     * Get rule set item loader
     */
    getLoader(): Loader;
    /**
     * Get rule set item options
     */
    getOptions(): Item['options'];
    /**
     * Merge rule set item options
     */
    mergeOptions(options: Build.Item.Options): this;
    setIdent(ident: Build.Item['ident']): this;
    /**
     * Set rule set item loader
     */
    setLoader(loader: `${keyof Loaders & string}` | Loader): this;
    /**
     * Set rule set item options
     */
    setOptions(options: Item['options']): this;
    /**
     * Produce rule set item object for Webpack
     */
    toWebpack(): Build.Item.Output;
}
export { Item as default };
