// Type definitions for xdl 0.9.0 // Project: https://github.com/exponentjs/xdl // Definitions by: Patricio Beltran declare namespace xdl { interface ILoginOptions { username: string; password: string; } interface IUser { type: string; username: string; } var User: { loginAsync(loginType: string, options: ILoginOptions): Promise; logoutAsync(): Promise; getCurrentUserAsync(): Promise; }; var UserManager: { loginAsync(loginType: string, options: ILoginOptions): Promise; logoutAsync(): Promise; getCurrentUserAsync(): Promise; }; interface IStartOptions { reset?: boolean; } interface IUrlOptions { urlType?: "exp" | "http" | "redirect"; hostType?: "tunnel" | "lan" | "localhost"; dev: boolean; minify: boolean; } interface IPublishOptions { quiet: boolean; } interface IReactNativeServerOptions { reset: boolean; } interface IOptions { packagerPort: number; } interface IPublishResponse { err: any; url: string; } interface SDKVersion { androidExpoViewUrl?: string; expoReactNativeTag: string; expokitNpmPackage?: string; facebookReactNativeVersion: string; facebookReactVersion?: string; iosExpoViewUrl?: string; iosVersion?: string; isDeprecated?: boolean; packagesToInstallWhenEjecting?: { [name: string]: string }; releaseNoteUrl?: string; iosClientUrl?: string; iosClientVersion?: string; androidClientUrl?: string; androidClientVersion?: string; relatedPackages?: { [name: string]: string }; beta?: boolean; } interface SDKVersions { [version: string]: SDKVersion; } var Project: { startAsync(projectRoot: string, options?: IStartOptions): Promise; stopAsync(projectRoot: string): Promise; getUrlAsync(projectRoot: string, options?: IUrlOptions): Promise; publishAsync(projectRoot: string, options?: IPublishOptions): Promise; startExpoServerAsync(projectRoot: string): Promise; stopExpoServerAsync(projectRoot: string): Promise; startReactNativeServerAsync( projectRoot: string, options?: IReactNativeServerOptions, ): Promise; stopReactNativeServerAsync(projectRoot: string): Promise; startTunnelsAsync(projectRoot: string): Promise; stopTunnelsAsync(projectRoot: string): Promise; }; var ProjectSettings: { setPackagerInfoAsync(projectRoot: string, json: Partial): Promise; }; var UrlUtils: { constructManifestUrlAsync( projectRoot: string, opts?: any, requestHostname?: string, ): Promise; }; var Versions: { sdkVersionsAsync(): Promise; releasedSdkVersionsAsync(): Promise; }; var Android: { startAdbReverseAsync(projectRoot: string): Promise; stopAdbReverseAsync(projectRoot: string): Promise; }; interface IApiConfig { scheme: string; host: string; port: number; } interface INgrokConfig { authToken: string; authTokenPublicId: string; domain: string; } interface IValidationConfig { reactNativeVersionWarnings: boolean; } interface IConfig { api: IApiConfig; ngrok: INgrokConfig; developerTool: any; validation: IValidationConfig; } var Config: IConfig; interface IBunyanStream { type?: string; level?: number | string; path?: string; stream?: NodeJS.WritableStream | IBunyanStream; closeOnExit?: boolean; period?: string; count?: number; } var ProjectUtils: { attachLoggerStream(rootPath: string, options?: IBunyanStream): void; }; interface ResolveNgrok { resolveNgrokAsync( projectRoot: string, { shouldPrompt = true, autoInstall = false, }: { shouldPrompt?: boolean; autoInstall?: boolean } = {}, ): Promise; } } declare module "xdl" { export = xdl; }