export type Pluginable<T> = {
    get name(): string;
    execute(...args: T[]): void;
};
export declare abstract class Plugin<T> implements Pluginable<T> {
    abstract get name(): string;
    abstract execute(...args: T[]): void;
}
export declare class PluginManager<T> {
    protected plugins: Plugin<T>[];
    constructor();
    register(...plugins: Plugin<T>[]): boolean;
    deregister(...plugins: Plugin<T>[] | string[]): boolean;
    execute(...args: T[]): void;
    protected indexOf(plugin: Plugin<T> | string): number;
}
//# sourceMappingURL=Plugin.d.ts.map