///
import { Arch, ArchType } from "builder-util";
import { AllPublishOptions } from "builder-util-runtime";
export declare type Publish = AllPublishOptions | Array | null;
export declare type TargetConfigType = Array | string | TargetConfiguration | null;
export interface TargetConfiguration {
/**
* The target name. e.g. `snap`.
*/
readonly target: string;
/**
* The arch or list of archs.
*/
readonly arch?: Array | ArchType;
}
export declare class Platform {
name: string;
buildConfigurationKey: string;
nodeName: NodeJS.Platform;
static MAC: Platform;
static LINUX: Platform;
static WINDOWS: Platform;
constructor(name: string, buildConfigurationKey: string, nodeName: NodeJS.Platform);
toString(): string;
createTarget(type?: string | Array | null, ...archs: Array): Map>>;
static current(): Platform;
static fromString(name: string): Platform;
}
export declare abstract class Target {
readonly name: string;
readonly isAsyncSupported: boolean;
abstract readonly outDir: string;
abstract readonly options: TargetSpecificOptions | null | undefined;
protected constructor(name: string, isAsyncSupported?: boolean);
checkOptions(): Promise;
abstract build(appOutDir: string, arch: Arch): Promise;
finishBuild(): Promise;
}
export interface TargetSpecificOptions {
/**
The [artifact file name template](/configuration/configuration#artifact-file-name-template).
*/
readonly artifactName?: string | null;
publish?: Publish;
}
export declare const DEFAULT_TARGET = "default";
export declare const DIR_TARGET = "dir";
export declare type CompressionLevel = "store" | "normal" | "maximum";
export interface BeforeBuildContext {
readonly appDir: string;
readonly electronVersion: string;
readonly platform: Platform;
readonly arch: string;
}
export interface SourceRepositoryInfo {
type?: string;
domain?: string;
user: string;
project: string;
}