/// <reference types="yeoman-generator" />
import { GeneratorOptions } from "@manuth/extended-yo-generator";
import { CallExpression, ObjectLiteralExpression, SourceFile } from "ts-morph";
import { InstructionComponent } from "../Components/InstructionComponent.js";
import { IWoltLabComponentOptions } from "../Settings/IWoltLabComponentOptions.js";
import { IWoltLabSettings } from "../Settings/IWoltLabSettings.js";
import { WoltLabTypeScriptFileMapping } from "./WoltLabTypeScriptFileMapping.js";
/**
 * Provides the functionality to generate instruction-files.
 *
 * @template TSettings
 * The type of the generator-settings.
 *
 * @template TOptions
 * The type of the generator-options.
 *
 * @template TComponentOptions
 * The type of the component-options.
 */
export declare class InstructionFileMapping<TSettings extends IWoltLabSettings, TOptions extends GeneratorOptions, TComponentOptions extends IWoltLabComponentOptions> extends WoltLabTypeScriptFileMapping<TSettings, TOptions> {
    /**
     * The component to create an instruction-file for.
     */
    private component;
    /**
     * Initializes a new instance of the {@link InstructionFileMapping `InstructionFileMapping<TSettings, TOptions, TComponentOptions>`} class.
     *
     * @param component
     * The component to create an instruction-file for.
     */
    constructor(component: InstructionComponent<TSettings, TOptions, TComponentOptions>);
    /**
     * Gets the component to create an instruction-file for.
     */
    protected get Component(): InstructionComponent<TSettings, TOptions, TComponentOptions>;
    /**
     * Gets the options to pass to the instruction-constructor.
     */
    protected get InstructionOptions(): ObjectLiteralExpression;
    /**
     * @inheritdoc
     */
    get Destination(): string;
    /**
     * @inheritdoc
     *
     * @param file
     * The {@link SourceFile `SourceFile`} to transform.
     *
     * @returns
     * The transformed file.
     */
    protected Transform(file: SourceFile): Promise<SourceFile>;
    /**
     * Adds the prerequisites for using {@link join `path.join`} to the specified {@link sourceFile `sourceFile`}.
     *
     * @param sourceFile
     * The file to add the prerequisites to.
     */
    protected ApplyPathJoin(sourceFile: SourceFile): void;
    /**
     * Creates valid TypeScript-code for calling the {@link join `join`}-method.
     *
     * @param path
     * The path to point to.
     *
     * @returns
     * Valid TypeScript-code containing a {@link join `join`}-call for pointing to the specified {@link path `path`}.
     */
    protected GetPathJoin(path: string): CallExpression;
}
