import * as ConfigUtils from '@expo/config';
import { AssetUtils } from './xdl';
declare type StartOptions = {
reset?: boolean;
nonInteractive?: boolean;
nonPersistent?: boolean;
maxWorkers?: number;
webOnly?: boolean;
};
declare type PublishOptions = {
releaseChannel?: string;
};
declare type Release = {
fullName: string;
channel: string;
channelId: string;
publicationId: string;
appVersion: string;
sdkVersion: string;
publishedTime: string;
platform: string;
};
export declare type ProjectStatus = 'running' | 'ill' | 'exited';
export declare function currentStatus(projectDir: string): Promise<ProjectStatus>;
export declare function getManifestUrlWithFallbackAsync(projectRoot: string): Promise<{
url: string;
isUrlFallback: false;
}>;
export declare function getSlugAsync(projectRoot: string, options?: {}): Promise<string>;
export declare function getLatestReleaseAsync(projectRoot: string, options: {
releaseChannel: string;
platform: string;
}): Promise<Release | null>;
export declare function mergeAppDistributions(projectRoot: string, sourceDirs: Array<string>, outputDir: string): Promise<void>;
/**
* Apps exporting for self hosting will have the files created in the project directory the following way:
.
├── android-index.json
├── ios-index.json
├── assets
│ └── 1eccbc4c41d49fd81840aef3eaabe862
└── bundles
├── android-01ee6e3ab3e8c16a4d926c91808d5320.js
└── ios-ee8206cc754d3f7aa9123b7f909d94ea.js
*/
export declare function exportForAppHosting(projectRoot: string, publicUrl: string, assetUrl: string, outputDir: string, options?: {
isDev?: boolean;
dumpAssetmap?: boolean;
dumpSourcemap?: boolean;
publishOptions?: PublishOptions;
}): Promise<void>;
export declare function findReusableBuildAsync(releaseChannel: string, platform: string, sdkVersion: string, slug: string): Promise<{
downloadUrl?: string;
canReuse: boolean;
}>;
export declare function publishAsync(projectRoot: string, options?: PublishOptions): Promise<{
url: string;
ids: string[];
err?: string;
}>;
declare type BuildJob = unknown;
declare type BuildStatusResult = {
jobs: BuildJob[];
err: null;
userHasBuiltAppBefore: boolean;
userHasBuiltExperienceBefore: boolean;
canPurchasePriorityBuilds: boolean;
numberOfRemainingPriorityBuilds: number;
hasUnlimitedPriorityBuilds: boolean;
};
declare type BuildCreatedResult = {
id: string;
ids: string[];
priority: 'normal' | 'high';
canPurchasePriorityBuilds: boolean;
numberOfRemainingPriorityBuilds: number;
hasUnlimitedPriorityBuilds: boolean;
};
export declare function buildAsync(projectRoot: string, options?: {
current?: boolean;
mode?: string;
platform?: 'android' | 'ios' | 'all';
expIds?: Array<string>;
type?: string;
releaseChannel?: string;
bundleIdentifier?: string;
publicUrl?: string;
sdkVersion?: string;
}): Promise<BuildStatusResult | BuildCreatedResult>;
export declare function startReactNativeServerAsync(projectRoot: string, options?: StartOptions, verbose?: boolean): Promise<void>;
export declare function stopReactNativeServerAsync(projectRoot: string): Promise<void>;
export declare function startExpoServerAsync(projectRoot: string): Promise<void>;
export declare function stopExpoServerAsync(projectRoot: string): Promise<void>;
export declare function startTunnelsAsync(projectRoot: string): Promise<void>;
export declare function stopTunnelsAsync(projectRoot: string): Promise<void>;
export declare function setOptionsAsync(projectRoot: string, options: {
packagerPort?: number;
}): Promise<void>;
export declare function getUrlAsync(projectRoot: string, options?: object): Promise<string>;
export declare function optimizeAsync(projectRoot: string | undefined, options: AssetUtils.OptimizationOptions): Promise<void>;
export declare function startAsync(projectRoot: string, options?: StartOptions, verbose?: boolean): Promise<ConfigUtils.ExpoConfig>;
export declare function stopWebOnlyAsync(projectDir: string): Promise<void>;
export declare function stopAsync(projectDir: string): Promise<void>;
export {};