/// <reference types="yeoman-generator" />
import { GeneratorOptions } from "@manuth/extended-yo-generator";
import { ArrayLiteralExpression, NewExpression, ObjectLiteralExpression, SourceFile } from "ts-morph";
import { InstructionComponent } from "../../../Components/InstructionComponent.js";
import { WoltLabTypeScriptFileMapping } from "../../../FileMappings/WoltLabTypeScriptFileMapping.js";
import { IWoltLabSettings } from "../../../Settings/IWoltLabSettings.js";
import { WoltLabPackageGenerator } from "../WoltLabPackageGenerator.js";
/**
 * Provides the functionality to generate a package-file.
 *
 * @template TSettings
 * The type of the generator-settings.
 *
 * @template TOptions
 * The type of the generator-options.
 */
export declare class WoltLabPackageFileMapping<TSettings extends IWoltLabSettings, TOptions extends GeneratorOptions> extends WoltLabTypeScriptFileMapping<TSettings, TOptions> {
    /**
     * The generator of the file-mapping.
     */
    private packageGenerator;
    /**
     * Initializes a new instance of the {@link WoltLabPackageFileMapping `WoltLabPackageFileMapping<TSettings, TOptions>`} class.
     *
     * @param generator
     * The component to create an instruction-file for.
     */
    constructor(generator: WoltLabPackageGenerator<TSettings, TOptions>);
    /**
     * @inheritdoc
     */
    get Generator(): WoltLabPackageGenerator<TSettings, TOptions>;
    /**
     * @inheritdoc
     */
    get Destination(): string;
    /**
     * Gets the creation-date for the package-metadata.
     */
    protected get CreationDate(): string;
    /**
     * Gets options to pass to the constructor of the {@link RequiredPackageDescriptor `RequiredPackageDescriptor`} class.
     */
    protected get RequiredPackageOptions(): ObjectLiteralExpression;
    /**
     * Gets a constructor-call of the {@link RequiredPackageDescriptor `RequiredPackageDescriptor`} class.
     */
    protected get RequiredPackageConstructor(): NewExpression;
    /**
     * Gets options to pass to the constructor of the {@link ConflictingPackageDescriptor `ConflictingPackageDescriptor`} class.
     */
    protected get ConflictingPackageOptions(): ObjectLiteralExpression;
    /**
     * Gets a constructor-call of the {@link ConflictingPackageDescriptor `ConflictingPackageDescriptor`} class.
     */
    protected get ConflictingPackageConstructor(): NewExpression;
    /**
     * Gets the options to pass to the package-constructor.
     */
    protected get PackageOptions(): ObjectLiteralExpression;
    /**
     * Gets an {@link ObjectLiteralExpression `ObjectLiteralExpression`}-node.
     *
     * @returns
     * The newly created {@link ObjectLiteralExpression `ObjectLiteralExpression`}.
     */
    protected GetObjectLiteral(): ObjectLiteralExpression;
    /**
     * Gets a constructor-call.
     *
     * @param className
     * The name of the class to create a constructor for.
     *
     * @returns
     * The newly created constructor-call.
     */
    protected GetConstructorCall(className: string): NewExpression;
    /**
     * Gets an {@link ArrayLiteralExpression `ArrayLiteralExpression`}-node.
     *
     * @returns
     * The newly created {@link ArrayLiteralExpression `ArrayLiteralExpression`}.
     */
    protected GetArrayLiteral(): ArrayLiteralExpression;
    /**
     * Registers the specified {@link component `component`}.
     *
     * @param file
     * The file to register the specified {@link component `component`} to.
     *
     * @param component
     * The component to register.
     */
    protected AddComponent(file: SourceFile, component: InstructionComponent<TSettings, TOptions, any>): Promise<void>;
    /**
     * @inheritdoc
     *
     * @param file
     * The {@link SourceFile `SourceFile`} to transform.
     *
     * @returns
     * The transformed file.
     */
    protected Transform(file: SourceFile): Promise<SourceFile>;
}
