import type Rule from '@roots/bud-build/rule';
import type { Bud } from '@roots/bud-framework';
import * as items from '@roots/bud-build/items';
import * as loaders from '@roots/bud-build/loaders';
import * as rules from '@roots/bud-build/rules';
interface Props {
    filter: Bud[`hooks`][`filter`];
    isProduction: Bud[`isProduction`];
    makeItem: Bud[`build`][`makeItem`];
    makeLoader: Bud[`build`][`makeLoader`];
    makeRule: Bud[`build`][`makeRule`];
    path: Bud[`path`];
    resolve: Bud[`module`][`resolve`];
}
interface Factory<T = Rule> {
    (props: Props): Promise<T>;
}
/**
 * Register built-in {@link loaders}, {@link items} and {@link rules}
 */
declare function register(bud: Bud): Promise<void>;
/**
 * Registry factory curry function
 */
interface makeRegister {
    <T, F extends CallableFunction>(props: Partial<Bud>, setRule: F): <K extends keyof T & string>([key, factory]: [
        K,
        Factory<T[K]>
    ]) => void;
}
/**
 * Registry factory
 */
declare const makeRegister: makeRegister;
export { items, loaders, makeRegister, register, rules };
export type { Factory, Props };
