import type { XCUITestDriver, XCUITestDriverOpts } from '../driver';
import type { StringRecord, DownloadAppOptions, PostProcessOptions, PostProcessResult } from '@appium/types';
import type { Readable } from 'node:stream';
export declare const SAFARI_BUNDLE_ID = "com.apple.mobilesafari";
export declare const APP_EXT = ".app";
export declare const IPA_EXT = ".ipa";
export declare const SUPPORTED_EXTENSIONS: string[];
export interface LocalizableStringsOptions {
    app?: string;
    language?: string;
    localizableStringsDir?: string;
    stringFile?: string;
    strictMode?: boolean;
}
export interface UnzipInfo {
    rootDir: string;
    archiveSize: number;
}
/**
 * Verify whether the given application is compatible to the
 * platform where it is going to be installed and tested.
 *
 * @throws If bundle architecture does not match the expected device architecture.
 */
export declare function verifyApplicationPlatform(this: XCUITestDriver): Promise<void>;
/**
 * Extracts string resources from an app
 */
export declare function parseLocalizableStrings(this: XCUITestDriver, opts?: LocalizableStringsOptions): Promise<StringRecord>;
/**
 * Unzips a ZIP archive on the local file system.
 *
 * @param archivePath Full path to a .zip archive
 * @returns temporary folder root where the archive has been extracted
 */
export declare function unzipFile(archivePath: string): Promise<UnzipInfo>;
/**
 * Unzips a ZIP archive from a stream.
 * Uses bdstar tool for this purpose.
 * This allows to optimize the time needed to prepare the app under test
 * to MAX(download, unzip) instead of SUM(download, unzip)
 */
export declare function unzipStream(zipStream: Readable): Promise<UnzipInfo>;
/**
 * Builds Safari preferences object based on the given session capabilities
 *
 * @param opts
 * @return
 */
export declare function buildSafariPreferences(opts: XCUITestDriverOpts): StringRecord;
/**
 * The callback invoked by configureApp helper
 * when it is necessary to download the remote application.
 * We assume the remote file could be anythingm, but only
 * .zip and .ipa formats are supported.
 * A .zip archive can contain one or more
 */
export declare function onDownloadApp(this: XCUITestDriver, opts: DownloadAppOptions): Promise<string>;
/** Post-processes configured apps and reuses a valid cache entry when possible. */
export declare function onPostConfigureApp(this: XCUITestDriver, opts: PostProcessOptions): Promise<PostProcessResult | false>;
//# sourceMappingURL=app.d.ts.map