import { INamedObject } from "../../../INamedObject";
import { Node } from "../../../NodeSystem/Node";
import { Category } from "../../../Options/Category";
import { Option } from "../../../Options/Option";
import { ILocalizationInstruction } from "../Globalization/ILocalizationInstruction";
import { NodeSystemInstruction } from "../NodeSystem/NodeSystemInstruction";
import { IOptionInstruction } from "./IOptionInstruction";
import { IOptionInstructionOptions } from "./IOptionInstructionOptions";
/**
 * Represents an instruction which provides options.
 */
export declare abstract class OptionInstruction<TCategory extends Category<TOption, TOptionOptions>, TCategoryOptions, TOption extends Option, TOptionOptions> extends NodeSystemInstruction<TCategory, TCategoryOptions> implements IOptionInstruction<TCategory, TOption>, ILocalizationInstruction {
    /**
     * The categories to delete.
     */
    private categoriesToDelete;
    /**
     * The options to delete.
     */
    private optionsToDelete;
    /**
     * Initializes a new instance of the `OptionInstruction<TCategory, TCategoryOptions, TOption, TOptionOptions>` class.
     */
    constructor(options: IOptionInstructionOptions<TCategoryOptions>, generator: (node: Node<TCategory, TCategoryOptions>, options: TCategoryOptions) => TCategory);
    /**
     * @inheritdoc
     */
    readonly TranslationDirectory: string;
    /**
     * @inheritdoc
     */
    abstract readonly RootCategory: string;
    /**
     * @inheritdoc
     */
    readonly OptionCategory: string;
    /**
     * @inheritdoc
     */
    readonly CategoryCategory: string;
    /**
     * @inheritdoc
     */
    readonly CategoriesToDelete: INamedObject[];
    /**
     * @inheritdoc
     */
    readonly OptionsToDelete: INamedObject[];
    /**
     * @inheritdoc
     */
    GetMessages(): {
        [locale: string]: {
            [category: string]: {
                [key: string]: string;
            };
        };
    };
}
