import type { Modules } from '@roots/bud-framework'; import type { Compiler } from '@roots/bud-framework/config'; import type { ApplyPluginConstructor } from '@roots/bud-framework/extension/decorators/plugin'; import type * as Model from '@roots/bud-framework/extension/types'; import { Bud } from '@roots/bud-framework'; import { type Logger } from '@roots/bud-support/logger'; import DynamicOption, { isValue as isDynamicOption } from '@roots/bud-support/value'; export declare class Extension implements Model.BudExtension { _app: () => Model.BudExtension[`app`]; _options: Partial>; dependsOn?: Set; dependsOnOptional?: Set<`${keyof Modules & string}`>; label?: `${keyof Modules & string}`; plugin?: ApplyPluginConstructor; options: Options; apply?(compiler: Compiler): unknown | void; boot?(app: Bud): Promise; buildAfter?(app: Bud): Promise; buildBefore?(app: Bud): Promise; configAfter?(app: Bud): Promise; when?(bud: Bud, options?: Options): boolean; get app(): Bud; enabled: boolean; meta: Model.Meta; constructor(app: Bud); catch(error: Error | string): never; disable(): void; done(): Bud; enable(enabled?: boolean | Bud): this; getOption(key: K): Options[K]; get: (key: K) => Options[K]; getOptions(): Options; import(signifier: string, context: string, options?: { bustCache?: boolean; raw?: boolean; }): Promise; isEnabled(): boolean; get logger(): Logger; make?(app: Bud, options?: Options): Promise; register?(app: Bud): Promise; resolve(signifier: string, context: string): Promise; setOption(key: K, valueOrCallback: Model.OptionCallbackValue): this; set: (key: K, valueOrCallback: Model.OptionCallbackValue) => this; setOptions(value: Partial>): this; execute(key: `${keyof Model.Meta & string}` | `make`): Promise; } export type { Accessor, ApplyPlugin, BudExtension, Constructor, ExtensionApi, Getter, InternalOptions, Meta, Option, OptionCallback, OptionCallbackValue, OptionsInterface, Setter, WithOptions, } from '@roots/bud-framework/extension/types'; export { DynamicOption, isDynamicOption };