import { Plugin } from "./Plugin";
import { PluginApi } from "./PluginApi";
/**
 * A collection of plugins that hook into the {@link EuropaCore} conversion process.
 */
export interface Preset {
    /**
     * The plugins that belong to this preset.
     */
    readonly plugins?: Plugin[];
}
/**
 * Provider a plugin preset compatible with {@link EuropaCore}.
 *
 * Invoked internally by {@link PluginManager#addPreset} in order to get the preset and is passed an `api`, which it can
 * choose to use or not, although typically this will be passed to plugin providers to build its list of plugins.
 *
 * Any error that is thrown will bubble up and prevent any plugins within the preset from being added.
 *
 * @param api - The {@link PluginApi} that provides useful methods for preset and plugin providers.
 * @return The provided {@link Preset}.
 * @throws If a problem occurs while providing the preset or any of its plugins.
 */
export declare type PresetProvider = (api: PluginApi) => Preset;
