/// <reference types="node" />
import { IPackagerResourceOptions } from '../../packager';
import { IIcon, PackagerBundle } from '../bundle';
/**
 * PackagerBundleWindows constructor.
 *
 * @param path Output path.
 */
export declare class PackagerBundleWindows extends PackagerBundle {
    /**
     * Create modern application icon resource.
     * Enables higher resolution 256x256 icon with PNG compression.
     * Higher resolutions resized with lanczos from 512x512 or 1024x1024.
     * Default false uses the legacy formats of the official packager.
     */
    applicationIconModern: boolean;
    /**
     * Create modern document type icon resource.
     * Enables higher resolution 256x256 icon with PNG compression.
     * Higher resolutions resized with lanczos from 512x512 or 1024x1024.
     * Default false uses the legacy formats of the official packager.
     */
    fileTypeIconModern: boolean;
    /**
     * Remove unnecessary helper files from framework.
     * The official packages will include these.
     */
    frameworkCleanHelpers: boolean;
    /**
     * Optionally preserve resource mtime.
     * The official packager does not preserve resource mtimes.
     */
    preserveResourceMtime: boolean;
    /**
     * Optionally use specific architecture.
     */
    architecture: 'x86' | 'x64' | null;
    /**
     * Version strings.
     *
     * @default null
     */
    fileVersion: string | null;
    /**
     * Product version.
     *
     * @default null
     */
    productVersion: string | null;
    /**
     * Version strings.
     *
     * @default null
     */
    versionStrings: {
        [key: string]: string;
    } | null;
    constructor(path: string);
    /**
     * Get app binary path.
     *
     * @returns Binary path.
     */
    getAppBinaryPath(): string;
    /**
     * Get app framework path.
     *
     * @returns Framework path.
     */
    getAppFrameworkPath(): string;
    /**
     * Get SDK binary path.
     *
     * @returns Binary path.
     */
    getSdkBinaryPath(): string;
    /**
     * Get SDK framework path.
     *
     * @returns Framework path.
     */
    getSdkFrameworkPath(): string;
    /**
     * Get all version strings, if any.
     *
     * @returns Verion strings.
     */
    getVersionStrings(): {
        [x: string]: string;
    } | null;
    /**
     * Get file mode value.
     *
     * @param executable Is the entry executable.
     * @returns File mode.
     */
    protected _getFileMode(executable: boolean): 484 | 420;
    /**
     * Open implementation.
     *
     * @param applicationData The application descriptor data.
     */
    protected _open(applicationData: Readonly<Buffer>): Promise<void>;
    /**
     * Close implementation.
     */
    protected _close(): Promise<void>;
    /**
     * Write resource with data implementation.
     *
     * @param destination Packaged file relative destination.
     * @param data Resource data.
     * @param options Resource options.
     */
    protected _writeResource(destination: string, data: Readonly<Buffer>, options: Readonly<IPackagerResourceOptions>): Promise<void>;
    /**
     * Get path to a resource file.
     *
     * @param parts Path parts.
     * @returns Full path.
     */
    protected _getResourcePath(...parts: string[]): string;
    /**
     * Get the configured architecture.
     * Prefers the architecture option, descriptor file, then default of x86.
     *
     * @returns Architecture string.
     */
    protected _getArchitecture(): "x86" | "x64";
    /**
     * Update main executable resources.
     */
    protected _updateResources(): Promise<void>;
    /**
     * Parse PE version string to integers (MS then LS bits) or null.
     *
     * @param version Version string.
     * @returns Version integers ([MS, LS]) or null.
     */
    protected _peVersionInts(version: string): [number, number] | null;
    /**
     * Calculate UID for icon, or null if none of required icons set.
     *
     * @param icon Icon info.
     * @returns UID string or null.
     */
    protected _uidIcon(icon: Readonly<IIcon>): string | null;
    /**
     * Encode the application icon if specified.
     *
     * @returns Encoded icon.
     */
    protected _encodeApplicationIcon(): Promise<Buffer | null>;
    /**
     * Encode file type icons.
     * Avoids writting duplicate icons where the file/data is the same.
     *
     * @returns Encoded icons.
     */
    protected _encodeFileTypeIcons(): Promise<Buffer[] | null>;
    /**
     * Encode icon matching official format.
     *
     * @param icon Icon info.
     * @returns Encoded icon.
     */
    protected _encodeIconReference(icon: Readonly<IIcon>): Promise<Buffer>;
    /**
     * Encode icon using modern format.
     *
     * @param icon Icon info.
     * @returns Encoded icon.
     */
    protected _encodeIconModern(icon: Readonly<IIcon>): Promise<Buffer>;
    /**
     * Get 256x256 icon data from icon set.
     * Unfortuantely the icon set does not support this icon size.
     * This functions will resize a larger icon instead.
     * Uses the lanczos algorithm to resize icon down.
     *
     * @param icon Icon info.
     * @returns Encoded icon.
     */
    protected _getIcon256x256Data(icon: Readonly<IIcon>): Promise<Buffer | null>;
}
