import { Plugin } from './plugin.js';
import { Options } from './types/build.js';
import { PluginConfig } from './types/config.js';
import { IPreset } from './types/plugin.js';
import '@stryke/types/base';
import '@deepkit/type';
import '@storm-software/build-tools/types';
import '@storm-software/config/types';
import '@stryke/env/get-env-paths';
import '@stryke/env/types';
import '@stryke/types/configuration';
import '@stryke/types/package-json';
import '@stryke/types/tsconfig';
import 'hookable';
import 'jiti';
import 'magic-string';
import 'typescript';
import 'unimport';
import '@storm-software/config-tools/types';

/**
 * The base class for all Preset
 */
declare abstract class Preset<TOptions extends Options = Options> extends Plugin<TOptions> implements IPreset<TOptions> {
    /**
     * A list of plugin modules required as dependencies by the current Preset.
     *
     * @remarks
     * These plugins will be called prior to the current Preset.
     */
    dependencies: Array<string | PluginConfig>;
    /**
     * The constructor for the Preset
     *
     * @param name - The name of the preset
     * @param installPath - The path to install the preset
     */
    constructor(name: string, installPath?: string);
}

export { Preset };
