import { IProjectorOptions, Projector } from '../projector';
import { IRceditOptionsVersionStrings } from '../util';
export interface IProjectorWindowsOptions extends IProjectorOptions {
    /**
     * Patch the Shockave 3D Xtra to have a larger buffer to avoid a crash.
     * The buffer for resolving InstalledDisplayDrivers to a path is small.
     * Changes to the values stored in InstalledDisplayDrivers cause issues.
     * The value is now supposed to hold full paths on modern Windows.
     * In particular, Nvidia drivers which do this need this patch.
     *
     * @default false
     */
    patchShockwave3dInstalledDisplayDriversSize?: boolean;
    /**
     * Icon file, requires Windows or Wine.
     *
     * @default null
     */
    iconFile?: string | null;
    /**
     * Version strings, requires Windows or Wine.
     *
     * @default null
     */
    fileVersion?: string | null;
    /**
     * Product version, requires Windows or Wine.
     *
     * @default null
     */
    productVersion?: string | null;
    /**
     * Version strings, requires Windows or Wine.
     *
     * @default null
     */
    versionStrings?: IRceditOptionsVersionStrings | null;
}
/**
 * ProjectorWindows constructor.
 *
 * @param options Options object.
 */
export declare class ProjectorWindows extends Projector {
    /**
     * Patch the Shockave 3D Xtra to have a larger buffer to avoid a crash.
     * The buffer for resolving InstalledDisplayDrivers to a path is small.
     * Changes to the values stored in InstalledDisplayDrivers cause issues.
     * The value is now supposed to hold full paths on modern Windows.
     * In particular, Nvidia drivers which do this need this patch.
     *
     * @default false
     */
    patchShockwave3dInstalledDisplayDriversSize: boolean;
    /**
     * Icon file, requires Windows or Wine.
     *
     * @default null
     */
    iconFile: string | null;
    /**
     * Version strings, requires Windows or Wine.
     *
     * @default null
     */
    fileVersion: string | null;
    /**
     * Product version, requires Windows or Wine.
     *
     * @default null
     */
    productVersion: string | null;
    /**
     * Version strings, requires Windows or Wine.
     *
     * @default null
     */
    versionStrings: IRceditOptionsVersionStrings | null;
    constructor(options: IProjectorWindowsOptions);
    /**
     * Projector file extension.
     *
     * @returns File extension.
     */
    readonly projectorExtension: string;
    /**
     * Config file newline characters.
     *
     * @returns Newline characters.
     */
    readonly configNewline: string;
    /**
     * Config file newline characters.
     *
     * @returns Newline characters.
     */
    readonly lingoNewline: string;
    /**
     * Newline characters.
     *
     * @returns Newline characters.
     */
    readonly newline: string;
    /**
     * Splash image file extension.
     *
     * @returns File extension.
     */
    readonly splashImageExtension: string;
    /**
     * Get the SKL name.
     *
     * @returns File name.
     */
    readonly sklName: string;
    /**
     * Write out the projector.
     *
     * @param path Save path.
     * @param name Save name.
     */
    write(path: string, name: string): Promise<void>;
    /**
     * Write the projector skeleton from archive.
     *
     * @param path Save path.
     * @param name Save name.
     */
    protected _writeSkeleton(path: string, name: string): Promise<void>;
    /**
     * Patch projector.
     *
     * @param path Save path.
     * @param name Save name.
     */
    protected _patch(path: string, name: string): Promise<void>;
    /**
     * Patch projector, Shockwave 3D InstalledDisplayDrivers size.
     *
     * @param path Save path.
     * @param name Save name.
     */
    protected _patchShockwave3dInstalledDisplayDriversSize(path: string, name: string): Promise<void>;
    /**
     * Update projector Windows resources.
     *
     * @param path Save path.
     * @param name Save name.
     */
    protected _updateResources(path: string, name: string): Promise<void>;
}
