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 {};