import { IInstruction } from "../../../PackageSystem/Instructions/IInstruction.js";
import { Compiler } from "../../Compiler.js";
/**
 * Provides the functionality to compile an instruction.
 *
 * @template T
 * The type of the instruction which can be compiled by this compiler.
 */
export declare class InstructionCompiler<T extends IInstruction> extends Compiler<T> {
    /**
     * Initializes a new instance of the {@link InstructionCompiler `InstructionCompiler<T>`} class.
     *
     * @param instruction
     * The instruction to compile.
     */
    constructor(instruction: T);
    /**
     * Gets the name of the file to write the compiled item to.
     */
    get DestinationFileName(): string;
    /**
     * Returns an xml-{@link Document `Document`} which represents the compiled instruction.
     *
     * @returns
     * The serialized document.
     */
    Serialize(): Document;
    /**
     * @inheritdoc
     */
    protected Compile(): Promise<void>;
    /**
     * Copies files using `ejs`.
     *
     * @param source
     * The source to copy the files from.
     *
     * @param destination
     * The destination to copy the files to.
     *
     * @param context
     * The context to use.
     *
     * @param delimiter
     * The delimiter of the ejs-tags.
     */
    protected CopyTemplate(source: string, destination: string, context?: Record<string, unknown>, delimiter?: string): Promise<void>;
    /**
     * Joins the paths and returns the path contained by the package-folder.
     *
     * @param path
     * The path that is to be joined.
     *
     * @returns
     * The joined path relative to the package-folder.
     */
    protected MakePackagePath(...path: string[]): string;
    /**
     * @inheritdoc
     *
     * @param path
     * The path that is to be joined.
     *
     * @returns
     * The joined path relative to the destination-folder.
     */
    protected MakeDestinationPath(...path: string[]): string;
}
